Eggs
Choose which games your panel offers, and how each one installs and runs.
An egg is the template for one game. Each belongs to a nest, which is a category of related games.
Open Admin > Eggs. Every egg is a card giving its nest, its images, its variables, how many servers use it, and which systems it runs on.
What an egg holds
- Docker Images - the container images that run the server on Linux nodes.
- Startup Command - the command that starts the game server. The command accepts
placeholders, for examplejava -Xms128M -XmxM -jar. - Install Script - the script that runs at the first installation. The script downloads the game files and prepares the directory.
- Stop Command - the text that the panel sends to the console for a clean shutdown, for example
stop. - Variables - the values that a server owner can change, for example the game version or the world seed.
- Default Port - the port that the panel suggests at server creation.
- Windows fields - a separate startup command, install script, and stop command for Windows nodes.
The eggs that ship with the panel
BadgerPanel ships with 264 eggs. The panel imports them at first startup. The library covers these nests:
| Nest | Eggs | Examples |
|---|---|---|
| SteamCMD | 114 | Palworld, ARK Survival Ascended, DayZ, Valheim, 7 Days to Die |
| Games | 65 | Factorio, FiveM, Terraria, Minetest |
| Source Engine | 20 | Counter-Strike 2, Garry's Mod, Team Fortress 2, Left 4 Dead 2 |
| Bots | 19 | Red, JMusicBot, PhantomBot, SinusBot |
| Software | 16 | code-server, Gitea, Grafana, Uptime Kuma |
| Generic | 12 | Blank templates for custom games |
| Voice Servers | 7 | Mumble, TeamSpeak 3, TeamSpeak 6, Lavalink |
| Database | 5 | MariaDB, PostgreSQL, Redis, MongoDB |
| Minecraft | 2 | Minecraft Java, Minecraft Bedrock |
| Storage | 2 | MinIO, SFTP share |
| Monitoring | 2 | Loki, Prometheus |
134 of these eggs also support Windows nodes.
To refresh the bundled eggs after a panel update, click Advanced and then Re-import bundled eggs. The re-import updates every bundled egg. Any panel edit that you made to a bundled egg is lost. Your own custom eggs stay unchanged.
Importing an egg
BadgerPanel reads egg files in the Pterodactyl and Pelican JSON formats.
- Navigate to Admin > Eggs and click Import Egg.
- Select the Target Nest. The nest must exist first. See Nests.
- Click the drop zone and select a
.jsonfile. - Click Import.
The importer accepts both the nested Pterodactyl layout (config.files, scripts.installation) and the flat BadgerPanel layout (script_install, config_stop). It also rewrites the Docker image references to the BadgerPanel registry.
The import form takes a file only. There is no field for pasted JSON text.
Replacing one you have
Open the egg and click Import in the page header. Select a file and click Replace Configuration.
WARNING
A replace overwrites the current configuration and every variable on that egg. You cannot undo this action.
Exporting an egg
Open an egg and click Export. You can also use the Export JSON item in the card menu on the egg list. The panel downloads a file named egg-<name>.json.
You cannot export a bundled egg. The panel marks every bundled egg as a system egg and blocks the export. Export works for the eggs that you create or import yourself.
Making your own
- Navigate to Admin > Eggs and click Create Egg.
- Fill in the Configuration tab.
- Add the variables on the Variables tab.
- Write the install script on the Install Script tab.
- Set the stop behaviour on the Process Management tab.
- Click Create Egg.
More tabs appear after the egg exists. Open the egg again to reach them.
The configuration tab
| Field | Description | Default |
|---|---|---|
| Name | The name that users see at server creation. | empty |
| Nest | The parent nest. | the first nest |
| Description | A short summary of the egg. | empty |
| Author | The email address of the maintainer. | empty |
| Default Port | The port that the panel suggests at server creation. This field appears after you create the egg. | 25565 |
| Docker Images | One or more images. Click Add Image and give a Name and an Image, for example Java 17 and ghcr.io/parkervcp/yolks:java_17. | none |
| Startup Command | The command template with placeholders. | empty |
, , and are always available. Every variable that you add is also available.
The install script tab
| Field | Description | Default |
|---|---|---|
| Container Image | The image that runs the install script. | ghcr.io/parkervcp/installers:alpine |
| Entrypoint | The interpreter for the script. | bash |
| Install Script | The body of the script. | a short sample |
The process management tab
| Field | Description | Default |
|---|---|---|
| Stop Command | The text that the panel sends to the console for a clean stop. | stop on a new egg |
| Done String | The console line that means that startup is complete. | empty |
| Strip ANSI colors from output | Removes colour codes from the console output. | off |
| Log Path | The path to the log file, for example logs/latest.log. | empty |
| Custom log handling | Reads the log file in place of the container output. | off |
The backup paths tab
These three lists control the incremental backups of every server that uses this egg. Type a value and press Enter to add it.
| Field | Description |
|---|---|
| Include paths | The daemon reads only these paths. Leave the list empty to read the whole volume. |
| Exclude paths | Path prefixes to skip after the include filter. |
| Exclude globs | Filename patterns to skip, for example *.log. The match is case-sensitive. |
See Backup Storage for more on incremental backups.
The modifications tab
This tab lists the dashboard modules that the panel supports, for example the Minecraft Mod Manager and the Rust Wiper. Set the toggle to give the module to every server that uses this egg. The panel saves each toggle at once.
The module also needs the matching license add-on. Without the add-on the tab stays hidden from the server owner.
The gameplay meta tab
This tab shows the per-game block that holds the RCON settings, the console line parsers, the command templates, and the version lists. The panel shows the block as JSON.
Edit the JSON in the box, then click Save Changes. The panel saves this block with the other egg fields. The block must be valid JSON. If the text is not valid JSON, the save stops and the tab shows the error.
Variables
Open the Variables tab and click to add a variable.
| Field | Description | Default |
|---|---|---|
| Name | The name in the user interface, for example Server Jar File. | empty |
| Environment Variable | The variable name inside the container, for example SERVER_JARFILE. The field accepts capital letters, numbers, and underscores only. | empty |
| Description | Help text for the server owner. | empty |
| Default Value | The value that the panel uses until the owner gives another value. | empty |
| Validation Rules | The rules for the value, for example required|string|max:50. | required|string |
| User can view | Shows the variable to the server owner. | on |
| User can edit | Lets the server owner change the value. | on |
The panel puts each variable into the startup command. The panel also sets each variable inside the container.
To delete a variable, click the trash icon. The panel asks for a confirmation. A server that already uses this egg loses the value.
Windows support
An egg can hold a second set of commands for Windows nodes. Open the Windows tab. Every field is optional. An empty field falls back to the Linux value.
| Section or field | Egg JSON field | Description | Default |
|---|---|---|---|
| Windows Startup Command | windows_startup | The startup command on Windows nodes. PowerShell runs it. | empty |
| Windows Stop Command | windows_config_stop | The text that stops the process on Windows. | empty |
| Windows Install Script | windows_script_install | The PowerShell install script. | empty |
| Script Entry | windows_script_entry | The interpreter for the Windows install script. | powershell |
| Windows Config Files | windows_config_files | A JSON object that describes the config file edits on Windows. | {} |
| Windows Steam App ID | windows_steam_app_id | The Steam app ID for the Windows download, for example 376030. | empty |
The panel treats an egg as Windows-capable when windows_script_install or windows_steam_app_id holds a value. The egg card then shows a Windows badge. An egg with both Linux and Windows fields runs on either type of node.
If the Windows Config Files box holds invalid JSON, the panel discards the value without an error message. Check the JSON before you save.
Editing an egg
Navigate to Admin > Eggs and click Configure on the egg card. Change the fields and click Save Changes.
A change to the Docker images, the startup command, or the variables applies to new servers. An existing server keeps its current configuration until you reinstall it.
By default only a super-admin can create, edit, or import an egg. To give this right to other administrators, turn on Allow subadmin egg modification in the admin settings.
Deleting an egg
Open the card menu on the egg list and click Delete.
The panel blocks the delete while any server uses the egg. Move those servers to another egg first.
Next steps
- Nests - how to group eggs into categories.
- Server Management - how to create servers from eggs.
- Map Packs - how to publish ready-made maps for an egg.
- Backup Storage - how the backup path filters work.
