# Eggs e imagens Docker

> Entenda a diferença entre eggs e imagens Docker no Portal da Daki, como elas funcionam juntas e quais imagens Daki Yolks com correções de segurança estão disponíveis.

Ao configurar seu servidor no Portal, você vai encontrar dois conceitos relacionados: **eggs** e **imagens Docker**. Entender a diferença entre eles ajuda a configurar o seu servidor corretamente.

## O que você vai aprender

- O que é um egg e o que ele controla
- O que é uma imagem Docker e como escolher a certa
- Como eggs e imagens Docker funcionam juntos
- Quais versões de Node.js e Python estão disponíveis e como a Daki as mantém com correções de segurança
- Quando mudar cada um

---

## O que é um egg?

Um **egg** é um modelo de servidor que define o tipo geral do servidor que você está rodando. Ele especifica:

- Qual linguagem ou framework é usado
- Quais imagens Docker estão disponíveis para escolha
- O modelo padrão do comando de inicialização
- Quais variáveis de inicialização e valores padrão vêm pré-configurados
- Quais arquivos são criados em uma instalação nova

Exemplos de eggs disponíveis na Daki:
- **Node.js** — para aplicações JavaScript e bots do Discord
- **Python** — para aplicações Python e bots do Discord
- **Java** — para aplicações Java (disponível nos planos pagos)
- **Rust** — para aplicações Rust (disponível nos planos pagos)
- **Minecraft Java** — para servidores de Minecraft (planos de servidores de jogos)

**Você escolhe seu egg ao criar um servidor.** No Free Tier, apenas os eggs Node.js e Python estão disponíveis. Os planos pagos dão acesso a eggs adicionais.

Para trocar o egg de um servidor existente, vá para a aba **Settings**. Atenção: trocar o egg dispara uma reinstalação — criar um backup dos seus arquivos antes é altamente recomendado.

---

## O que é uma imagem Docker?

Uma **imagem Docker** é a versão específica do runtime dentro da qual o seu servidor roda. Enquanto o egg determina a linguagem, a imagem Docker determina a versão.

Por exemplo, o egg Node.js oferece Node.js 22, 24 e 26, e o egg Python oferece Python 3.11 a 3.15. Você seleciona a imagem Docker na aba **Startup**.

---

## Daki Yolks: imagens com correções de segurança

Todos os servidores Node.js e Python da Daki, Free Tier e pagos, rodam com **Daki Yolks**: nossas próprias imagens Docker, construídas como substitutas diretas das imagens da comunidade que a maioria dos hosts Pterodactyl usa. Essas imagens da comunidade são reconstruídas raramente, então podem ficar meses atrasadas em relação às correções de segurança.

- **Sempre atualizadas.** A cada 6 horas verificamos se uma nova imagem base oficial do Node.js ou do Python foi lançada e reconstruímos as versões afetadas. Uma vez por semana, todas as imagens são reconstruídas para incluir atualizações do sistema operacional (Debian 13).
- **Compatíveis.** As mesmas ferramentas, entrypoint e comportamento de antes, então seu bot continua funcionando. As imagens Node.js incluem `git`, `ffmpeg`, `sqlite3`, `build-essential`, `python3`, `typescript` e `ts-node`; as imagens Python incluem `gcc`, `g++`, `git` e `ffmpeg`.
- **Testadas.** Cada imagem precisa iniciar e executar um programa TypeScript ou Python real da mesma forma que o Portal o inicia, antes de ser publicada.
- **Código aberto.** As imagens são públicas no [GitHub](https://github.com/niclasspecht/daki-yolks) sob a licença MIT.

| Runtime | Versão | Suporte até |
| :--- | :--- | :--- |
| Node.js | **26** | abril de 2029 |
| Node.js | **24** | abril de 2028 |
| Node.js | **22** | abril de 2027 |
| Python | **3.15** | outubro de 2031 |
| Python | **3.14** | outubro de 2030 |
| Python | **3.13** | outubro de 2029 |
| Python | **3.12** | outubro de 2028 |
| Python | **3.11** | outubro de 2027 |

> **Dica:** **Reinicie para atualizar.** O nome da imagem continua o mesmo após cada reconstrução. Um servidor em execução mantém a imagem atual até ser reiniciado; no próximo início, ele recebe automaticamente a versão corrigida mais recente. Seus arquivos não são alterados.

### Versões antigas (fim de vida)

Node.js 18 a 21, 23 e 25, além de Python 3.9 e 3.10, não recebem mais correções de segurança de seus desenvolvedores. Elas continuam selecionáveis para que projetos existentes sigam funcionando, mas são marcadas como **EOL - no security updates** na lista de imagens e não são mais reconstruídas por nós. Migre para uma versão suportada quando puder.

Ao trocar para uma nova versão principal (por exemplo, Node.js 20 → 24 ou Python 3.10 → 3.13), reinstale suas dependências: execute `npm rebuild` ou apague `node_modules` e execute `npm install` novamente, e recrie os ambientes virtuais do Python.

---

## Como eles funcionam juntos

Pense assim:

| Conceito | Analogia | Definido em |
| :--- | :--- | :--- |
| **Egg** | Escolher em qual linguagem escrever | Aba **Settings** (ou na criação do servidor) |
| **Docker image** | Escolher entre Python 3.12 e 3.13 | Aba **Startup** |

Você escolhe o egg uma vez (ou o troca raramente) e ajusta a imagem Docker sempre que o seu projeto exigir uma versão diferente.

---

## Quando mudar cada um

### Mude a imagem Docker quando:
- Você precisar de uma versão mais nova do runtime (por exemplo, migrar de um Node.js 20 fora de suporte para o Node.js 24)
- Seu projeto exigir uma versão menor específica por compatibilidade

### Mude o egg quando:
- Você quiser trocar de linguagem de programação por completo (por exemplo, de Node.js para Python)
- Você precisar de uma configuração padrão diferente ou de uma instalação predefinida diferente

> **Aviso:** Trocar o egg dispara uma reinstalação. Embora os arquivos normalmente não sejam excluídos automaticamente, alguns podem ser sobrescritos e uma configuração incompatível pode resultar. Backups são altamente recomendados antes de trocar o egg. Veja [Configurações do servidor](https://daki.cc/pt/wiki/guides/server-settings).

---

## Perguntas frequentes

**Qual egg devo usar para um bot do Discord?**

Use o egg **Node.js** para bots do Discord.js/JavaScript e o egg **Python** para bots do discord.py/Python.

**E se a imagem Docker de que preciso não estiver listada?**

As imagens disponíveis são definidas pelo egg. Se você não encontrar a versão de que precisa, entre em contato com o suporte — imagens adicionais podem estar disponíveis sob pedido.

**Minha imagem mostra 'EOL - no security updates'. O que devo fazer?**

Essa versão não é mais mantida pelos desenvolvedores. Seu servidor continua funcionando, mas não recebe mais correções de segurança. Selecione uma versão suportada (Node.js 22, 24, 26 ou Python 3.11 a 3.15) na aba Startup, reinstale suas dependências e reinicie.

**Como recebo as correções de segurança mais recentes?**

Reinicie seu servidor. As Daki Yolks são reconstruídas automaticamente quando uma correção é lançada, e o servidor pega a nova versão no próximo início.

**Trocar a imagem Docker apaga meus arquivos?**

Não. Trocar somente a imagem Docker (na aba Startup) não afeta seus arquivos. Apenas trocar o egg (na aba Settings) dispara uma reinstalação.

---

## Próximos passos

- [Configurações de inicialização](https://daki.cc/pt/wiki/guides/startup-settings) — Selecione sua imagem Docker e configure seu comando de inicialização.
- [Configurações do servidor](https://daki.cc/pt/wiki/guides/server-settings) — Troque o egg ou reinstale seu servidor.
- [Faça deploy de um bot Discord.js](https://daki.cc/pt/wiki/guides/deploy-discordjs) — Guia completo de deploy para Node.js.
- [Faça deploy de um bot Python](https://daki.cc/pt/wiki/guides/deploy-python) — Guia completo de deploy para Python.

---
Source: https://daki.cc/pt/wiki/guides/eggs-and-images
