The Multi Minecraft egg,
end to end.
Everything below is generated from the real egg-minecraft-multi.json: 19 server types, 34 variables, 1 docker image.
Egg facts
| Egg name | Multi Minecraft |
|---|---|
| Egg file | egg-minecraft-multi.json PTDL_v2 |
| Author | support@potenfyr.in |
| Server types | vanillapaperspigotpurpurfoliaforgeneoforgefabricquiltmohistmagmabungeecordvelocitywaterfallbedrocknukkitpocketminegithubcustom |
| Repository | PotenFYR-Studios/Minecraft-Eggs |
Docker images
One universal, multi-arch image (linux/amd64 + linux/arm64) serves every server type, and the launcher provisions the required JVM on demand, so no per-engine images exist.
Startup & stop
The startup command never changes; the launcher dispatches per SERVER_TYPE on boot. The panel stop command is stop and startup completion markers include “Done (…)!”, “Listening on” and “Server started.”.
bash run.shConfig auto-patching on boot: server.propertiesconfig.ymlvelocity.toml (ports and bind addresses are rewritten to the panel allocation).
Panel features
eula: the panel prompts to accept the Minecraft EULA on first startjava_version: the panel exposes a Java version selector wired to the egg's auto-detectionpid_limit: the panel raises the process limit for multi-process servers
Egg self-update
EGG_UPDATE_URL (default: the upstream egg JSON in this repository) is checked on every startup when AUTO_UPDATE_EGG=1; when it changes, the launcher scripts refresh automatically, with no re-import needed. It can also point at a raw .sh URL to update the launcher directly.
Variables
All 34 variables, grouped. User variables are editable by server owners in the panel; Admin ones are reserved for node administrators.
Server Selection
| Variable | Default | Access | Description |
|---|---|---|---|
| SERVER_TYPE Server Type | vanilla | User | The server software to install and run. Supported: vanilla, paper, spigot, purpur, folia, forge, neoforge, fabric, quilt, mohist, magma, bungeecord, velocity, waterfall, bedrock, nukkit, pocketmine, github (install from a GitHub release), custom. |
| MINECRAFT_VERSION Minecraft Version | latest | User | The version to install, e.g. 1.21.4, 26.1 or 'latest'. Also accepts 'latest-snapshot' for vanilla snapshots. For Paper/Purpur/Folia this is the Minecraft version, for Velocity/Waterfall it is the software version (e.g. 4.0.0), for Bedrock it is the bedrock version (e.g. 1.26.44.3). Invalid versions fall back to latest. |
| BUILD_NUMBER Build Number | latest | User | Optional build number for Paper, Folia, Purpur, Velocity, Waterfall and Mohist. Leave as 'latest' for the newest build. |
| LOADER_VERSION Loader Version | latest | User | Optional loader version for Forge, NeoForge, Fabric and Quilt. Leave as 'latest' to use the newest loader for the selected Minecraft version. For NeoForge you can also enter a full NeoForge version (e.g. 21.1.148). |
| SERVER_JARFILE Server Jar File | server.jar | User | The name of the server jar file to run. For Forge/NeoForge 1.17+ the launcher is generated automatically and this is ignored. |
GitHub Installs
| Variable | Default | Access | Description |
|---|---|---|---|
| GITHUB_REPO GitHub Repository | (empty) | User | Only used when Server Type is 'github'. The GitHub repository to fetch, as owner/repository or a full GitHub URL (https://github.com/owner/repo, .git suffix allowed). Release assets (.jar/.zip) are preferred; repos without releases are cloned as source. Reinstall detects new releases/commits, archives the old code and fetches the update. |
| GITHUB_TAG GitHub Release Tag | latest | User | Only used when Server Type is 'github'. The release tag to download (e.g. 1.21.4). Leave as 'latest' for the newest release. |
| GITHUB_ASSET GitHub Asset Filter | (empty) | User | Only used when Server Type is 'github'. A substring to select the release asset to download (e.g. 'server'). Empty = automatically pick a .jar asset, or the first asset. |
| GITHUB_TOKEN GitHub Token | (empty) | User | Optional GitHub personal access token used when Server Type is 'github'. Required for private repositories and to avoid API rate limits (403) on public ones. Leave empty for public repositories. |
Java & Performance
| Variable | Default | Access | Description |
|---|---|---|---|
| JAVA_VERSION Java Version | (empty) | User | Override the auto-detected Java version. Leave empty for automatic selection (26.x->26, 1.20.5-1.21.x->21, 1.17-1.20.4->17, older->8). |
| JAVA_FLAGS Java Flags | -XX:+UseG1GC -XX:+ParallelRefProcEnabled -X… | User | JVM arguments applied to every Java server. Defaults to Aikar's performance-tuned G1GC flags (best balance of latency, throughput and memory). Set to empty to let GC_TYPE choose the tuning, or a single space to run without extra flags. |
| GC_TYPE Garbage Collector | auto | User | Only used when Java Flags is empty. auto = Aikar G1GC tuning (default), zgc = ZGC (best for 8GB+ memory on Java 21+), parallel = ParallelGC. |
| EXTRA_ARGS Extra Server Arguments | (empty) | User | Extra arguments appended to the server command after the jar, e.g. --nogui. JVM tuning belongs in JAVA_FLAGS instead. |
server.properties
| Variable | Default | Access | Description |
|---|---|---|---|
| MOTD MOTD | A Minecraft Server | User | Message of the day written into a freshly generated server.properties (Java servers only). |
| MAX_PLAYERS Max Players | 20 | User | Maximum players written into a freshly generated server.properties (Java servers only). |
| ONLINE_MODE Online Mode | true | User | online-mode written into a freshly generated server.properties (Java servers only). |
| VIEW_DISTANCE View Distance | 10 | User | view-distance written into a freshly generated server.properties (Java servers only). |
| DIFFICULTY Difficulty | (empty) | User | difficulty written into a freshly generated server.properties (peaceful/easy/normal/hard). Leave empty to use the server default. |
| GAMEMODE Gamemode | (empty) | User | gamemode written into a freshly generated server.properties (survival/creative/adventure/spectator). Leave empty to use the server default. |
| PVP PvP | true | User | pvp written into a freshly generated server.properties. Leave empty to use the server default (true). |
| RCON_PASSWORD RCON Password | (empty) | User | If set, RCON is enabled with this password in a freshly generated server.properties (admin tools / gamepads). Leave empty to keep RCON disabled. Stored in plain text in server.properties. |
Content & Maintenance
| Variable | Default | Access | Description |
|---|---|---|---|
| EXTRA_URLS Extra URLs | (empty) | Admin | Extra files to download during installation (plugins, configs, resource packs, mod jars). One per line. Use 'dest/name|url' to place a file in a subdirectory, e.g. plugins/ViaVersion.jar|https://.... Not user visible. |
| WORLD_URL World Download URL | (empty) | Admin | Optional URL to a world zip that is downloaded and extracted into ./world during installation (e.g. from Planet Minecraft or a previous host). Not user visible. |
| DEBUG Debug Mode | 0 | Admin | Set to 1 to run the install script with bash -x and print a resolved-environment dump at server start (troubleshooting only). Not user visible. |
| AUTO_UPDATE Auto Update | 1 | User | 1 = always (re)install the selected software on reinstall. 0 = skip installation if the server files already exist. |
| KEEP_BACKUP Keep Backup | 0 | User | 1 = keep the previous jar as <name>.old when updating. 0 = delete the old jar (saves storage). |
| SHOW_VERSIONS Show Versions | 0 | Admin | Set to 1 and press Reinstall to print every available version of the selected project (no files are changed). Not user visible. |
| DL_URL Download URL | (empty) | Admin | Optional direct download URL that overrides the project logic for Java server types (jar is saved as the Server Jar File). Not user visible. |
Console & Panel
| Variable | Default | Access | Description |
|---|---|---|---|
| EGG_UPDATE_URL Egg Update URL | https://raw.githubusercontent.com/PotenFYR-… | User | URL checked on every startup for egg/launcher self-updates. Points at the PotenFYR egg JSON by default; when it changes, the launcher scripts are refreshed automatically. Can also point at a raw .sh URL to update the launcher directly. |
| AUTO_UPDATE_EGG Auto Update Egg | 1 | User | Check EGG_UPDATE_URL on startup and self-update the launcher when the upstream egg changed (1 = enabled, 0 = disabled). |
| PANEL_STOP_WATCHER Panel Stop Watcher | auto | User | Watch console input for the panel stop command (^C, stop, end, kill...) so Stop works on Wings/Feather-style daemons that send stop as console text (auto = enabled; 0 = disabled and pass stdin straight to the server, 1 = forced on). Non-stop console lines are forwarded to the server console, so in-game commands keep working. |
| CLI_BANNER_GRADIENT Banner Gradient | auto | User | Console banner color gradient: auto (random each boot), citrus, aurora, sunset, ocean, candy, spectrum, or none. |
| CLI_THEME Console Theme | prog | User | Console theme: prog (PotenFYR agent theme, default) or classic (yolk-style [PotenFYR] prefixes and the classic banner). |
Custom Engine
| Variable | Default | Access | Description |
|---|---|---|---|
| CUSTOM_COMMAND Custom Command | java -Xmx1024M -jar server.jar | User | Only used when Server Type is 'custom'. The exact shell command to launch your server, e.g. java -Xmx1024M -jar server.jar. |
Raw egg JSON
A real excerpt from egg-minecraft-multi.json. Get the full file here or see it rendered on the Examples page.
{
"name": "Multi Minecraft",
"docker_images": {
"Universal (Auto Java)": "ghcr.io/potenfyr-studios/minecraft-eggs:latest"
},
"startup": "bash run.sh",
"features": [
"eula",
"java_version",
"pid_limit"
],
"sample_variable": {
"env_variable": "SERVER_TYPE",
"default_value": "vanilla",
"rules": "required|string|in:vanilla,paper,spigot,purpur,folia,forge,neoforge,fabric,quilt,mohist,magma,bungeecord,velocity,waterfall,bedrock,nukkit,pocketmine,github,custom"
}
}