Egg catalog

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 nameMulti Minecraft
Egg fileegg-minecraft-multi.json PTDL_v2
Authorsupport@potenfyr.in
Server typesvanillapaperspigotpurpurfoliaforgeneoforgefabricquiltmohistmagmabungeecordvelocitywaterfallbedrocknukkitpocketminegithubcustom
RepositoryPotenFYR-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.

Universal (Auto Java)
ghcr.io/potenfyr-studios/minecraft-eggs:latest

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.sh

Config 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 start
  • java_version: the panel exposes a Java version selector wired to the egg's auto-detection
  • pid_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

VariableDefaultAccessDescription
SERVER_TYPE
Server Type
vanillaUserThe 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
latestUserThe 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
latestUserOptional build number for Paper, Folia, Purpur, Velocity, Waterfall and Mohist. Leave as 'latest' for the newest build.
LOADER_VERSION
Loader Version
latestUserOptional 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.jarUserThe name of the server jar file to run. For Forge/NeoForge 1.17+ the launcher is generated automatically and this is ignored.

GitHub Installs

VariableDefaultAccessDescription
GITHUB_REPO
GitHub Repository
(empty)UserOnly 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
latestUserOnly 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)UserOnly 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)UserOptional 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

VariableDefaultAccessDescription
JAVA_VERSION
Java Version
(empty)UserOverride 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…UserJVM 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
autoUserOnly 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)UserExtra arguments appended to the server command after the jar, e.g. --nogui. JVM tuning belongs in JAVA_FLAGS instead.

server.properties

VariableDefaultAccessDescription
MOTD
MOTD
A Minecraft ServerUserMessage of the day written into a freshly generated server.properties (Java servers only).
MAX_PLAYERS
Max Players
20UserMaximum players written into a freshly generated server.properties (Java servers only).
ONLINE_MODE
Online Mode
trueUseronline-mode written into a freshly generated server.properties (Java servers only).
VIEW_DISTANCE
View Distance
10Userview-distance written into a freshly generated server.properties (Java servers only).
DIFFICULTY
Difficulty
(empty)Userdifficulty written into a freshly generated server.properties (peaceful/easy/normal/hard). Leave empty to use the server default.
GAMEMODE
Gamemode
(empty)Usergamemode written into a freshly generated server.properties (survival/creative/adventure/spectator). Leave empty to use the server default.
PVP
PvP
trueUserpvp written into a freshly generated server.properties. Leave empty to use the server default (true).
RCON_PASSWORD
RCON Password
(empty)UserIf 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

VariableDefaultAccessDescription
EXTRA_URLS
Extra URLs
(empty)AdminExtra 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)AdminOptional 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
0AdminSet 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
1User1 = always (re)install the selected software on reinstall. 0 = skip installation if the server files already exist.
KEEP_BACKUP
Keep Backup
0User1 = keep the previous jar as <name>.old when updating. 0 = delete the old jar (saves storage).
SHOW_VERSIONS
Show Versions
0AdminSet 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)AdminOptional 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

VariableDefaultAccessDescription
EGG_UPDATE_URL
Egg Update URL
https://raw.githubusercontent.com/PotenFYR-…UserURL 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
1UserCheck 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
autoUserWatch 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
autoUserConsole banner color gradient: auto (random each boot), citrus, aurora, sunset, ocean, candy, spectrum, or none.
CLI_THEME
Console Theme
progUserConsole theme: prog (PotenFYR agent theme, default) or classic (yolk-style [PotenFYR] prefixes and the classic banner).

Custom Engine

VariableDefaultAccessDescription
CUSTOM_COMMAND
Custom Command
java -Xmx1024M -jar server.jarUserOnly 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"
  }
}