> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.daki.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Eggs & Docker Images

> Understanding the difference between eggs and Docker images in the Daki Portal — and how they work together.

When configuring your server in the <Tooltip tip="Daki's Pterodactyl-based server-management panel (portal.daki.cc).">Portal</Tooltip>, you will encounter two related concepts: **eggs** and **Docker images**. Understanding the difference between them helps you configure your server correctly.

## What you'll learn

* What an egg is and what it controls
* What a Docker image is and how to choose the right one
* How eggs and Docker images work together
* When to change each one

***

## What Is an Egg?

An **egg** is a server template that defines the overall type of server you are running. It specifies:

* Which programming language or framework is used
* What Docker images are available to choose from
* The default startup command template
* Which startup variables and defaults are pre-configured
* What files are created on a fresh install

Examples of eggs available on Daki:

* **Node.js** — for JavaScript applications and Discord bots
* **Python** — for Python applications and Discord bots
* **Java** — for Java applications (available on paid plans)
* **Rust** — for Rust applications (available on paid plans)
* **Minecraft Java** — for Minecraft game servers (game server plans)

**You choose your egg when you create a server.** On the Free Tier, only the Node.js and Python eggs are available. Paid plans give access to additional eggs.

To change an existing server's egg, go to the **Settings** tab. Note that changing the egg triggers a reinstall — creating a backup of your files beforehand is strongly recommended.

***

## What Is a Docker Image?

A **Docker image** is the specific version of a <Tooltip tip="The time budget a Free Tier server runs for; extend it by watching ads.">runtime</Tooltip> that your server runs inside. Where the egg determines the language, the Docker image determines the version.

For example, the Node.js egg may offer these Docker images:

* Node.js 18
* Node.js 20
* Node.js 22
* Node.js 24

You select the Docker image in the **Startup** tab.

***

## How They Work Together

Think of it this way:

| Concept          | Analogy                      | Set in                               |
| :--------------- | :--------------------------- | :----------------------------------- |
| **Egg**          | Choosing to write in Python  | Settings tab (or at server creation) |
| **Docker image** | Choosing Python 3.11 vs 3.12 | Startup tab                          |

You pick the egg once (or change it rarely), and you adjust the Docker image whenever your project requires a different version.

***

## When to Change Each One

### Change the Docker image when:

* You need a newer runtime version (e.g., upgrading from Node.js 18 to Node.js 22)
* Your project requires a specific minor version for compatibility

### Change the egg when:

* You want to switch programming languages entirely (e.g., from Node.js to Python)
* You need a different default configuration or pre-defined install setup

<Warning>
  Changing the egg triggers a reinstall. While files are not normally deleted automatically, certain files may be overwritten and an incompatible setup can result. Backups are strongly recommended before changing the egg. See [Server Settings](./server-settings).
</Warning>

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="Which egg should I use for a Discord bot?">
    Use the **Node.js** egg for Discord.js/JavaScript bots, and the **Python** egg for discord.py/Python bots.
  </Accordion>

  <Accordion title="What if my required Docker image isn't listed?">
    The available images are defined by the egg. If you don't see the version you need, contact support — additional images may be available on request.
  </Accordion>

  <Accordion title="Does changing the Docker image delete my files?">
    No. Changing only the Docker image (in the Startup tab) does not affect your files. Only changing the egg (in the Settings tab) triggers a reinstall.
  </Accordion>
</AccordionGroup>

***

## Next Steps

* [Startup Settings](./startup-settings) — Select your Docker image and configure your startup command.
* [Server Settings](./server-settings) — Change the egg or reinstall your server.
* [Deploy a Discord.js Bot](./deploy-discordjs) — End-to-end deployment guide for Node.js.
* [Deploy a Python Bot](./deploy-python) — End-to-end deployment guide for Python.
