6.1 KiB
docker-allthemods10
A Docker image that runs an All the Mods 10 (ATM10) dedicated Minecraft server on NeoForge.
No Minecraft or modpack files are shipped in the image. On first start the container downloads the pinned ATM10 server files from CurseForge and runs the NeoForge installer; subsequent starts boot the already-installed server. The first run can take a while as the installer completes — watch the logs.
- Modpack: All the Mods 10, server version
5.5 - Loader: NeoForge
21.1.219(Minecraft 1.21.1) - Base image:
eclipse-temurin:21-jdk
Requirements
- Docker (or any OCI runtime / Kubernetes — see
k8s_example.md) - A persistent volume mounted at
/data - TCP port
25565published EULA=true— you must accept the Minecraft EULA to run a server
Quick start
# Build the image
docker build -t allthemods10 .
# Run it
docker run -d \
--name atm10 \
-p 25565:25565 \
-v atm10-data:/data \
-e EULA=true \
-e MOTD="All the Mods 10 Server" \
-e MAX_PLAYERS=10 \
allthemods10
The server installs into the /data volume on first boot. Give it a few
minutes and watch docker logs -f atm10 until the world is ready.
Configuration
All configuration is via environment variables. Only EULA is required.
| Variable | Default | Description |
|---|---|---|
EULA |
false |
Set to true to accept the Minecraft EULA. The server will not start otherwise. |
JVM_OPTS |
-Xms2048m -Xmx4096m (example) |
JVM flags. Each space-separated token is appended to user_jvm_args.txt. |
MOTD |
A Minecraft Server |
Server message of the day. |
MAX_PLAYERS |
20 |
Maximum concurrent players. |
ALLOW_FLIGHT |
false |
true/false — allow flight. |
ONLINE_MODE |
true |
true/false — authenticate players against Mojang. |
ENABLE_WHITELIST |
false |
true/false — enforce the whitelist. |
WHITELIST_USERS |
(empty) | Comma-separated Minecraft usernames to add to the whitelist. |
OP_USERS |
(empty) | Comma-separated Minecraft usernames to grant operator (level 4). |
RCON_PASSWORD |
(empty) | If set, enables RCON on the server and uses this password. |
RCON_PORT |
25575 |
RCON listen port (only used when RCON_PASSWORD is set). |
WHITELIST_USERS and OP_USERS are resolved to UUIDs at startup via
playerdb.co and merged into whitelist.json /
ops.json idempotently, so the same name is never added twice.
Permissions
The server process runs as uid 99 / gid 100, which matches the default
nobody:users ownership on Unraid. On other hosts you may
need to chown 99:100 the /data volume (the Kubernetes example does this with
an init container).
Resetting / upgrading
If an install is incomplete or you want to force a re-download, delete the
Server-Files-<version>.zip file in /data; the next start will re-run the
install/upgrade.
Optional: RCON order fulfillment daemon
fulfillment.py is an optional companion daemon that delivers in-game items via
RCON in response to confirmed orders from an external shop API (for example, a
donation/store integration). It is disabled by default and only starts when
all three of these are set:
SHOP_API_URL— base URL of the shop APISHOP_API_KEY— API keyRCON_PASSWORD— so the daemon can talk to the server over RCON
When enabled it polls the shop API for pending orders, delivers the configured
item kits to online players via RCON, and marks orders fulfilled. The item kits
(ITEM_COMMANDS) and poll/startup timing are defined at the top of
fulfillment.py; edit them to match your own shop and items. Additional
variables: RCON_HOST (default 127.0.0.1), FULFILLMENT_POLL_INTERVAL
(default 30s), FULFILLMENT_STARTUP_DELAY (default 90s).
If you do not run a shop, you can ignore this file entirely — leave the three variables unset and the server runs normally.
Kubernetes
A community-contributed StatefulSet/Service manifest is in
k8s_example.md. It is provided as a starting point and is
not an officially supported deployment method.
Continuous integration
.github/workflows/docker-hub.yml— builds and pushes the image to Docker Hub on pushes tomain/develop(expectsDOCKERHUB_USERNAME/DOCKERHUB_TOKENsecrets)..github/workflows/update-mod.yml— a daily job that checks CurseForge for a newer server build and opens an update commit (expects aCURSEFORGE_API_KEY)..forgejo/workflows/gitleaks.yml— runs gitleaks secret scanning (Forgejo/Gitea Actions; safe to delete if unused).
Contributing
Issues and pull requests are welcome. Please keep the image lean — modpack content is downloaded at runtime, not vendored — and avoid committing secrets (a gitleaks workflow guards against this).
License & attribution
This repository contains only the Docker packaging (entrypoint scripts and CI workflows) for the All the Mods 10 server. It ships no Minecraft or modpack files.
It is a fork of W3LFARe/docker-allthemods10,
which in turn derives from Goobaroo/docker-allthemods9.
The packaging is provided as-is, under the same terms as those upstream
projects.
Minecraft, NeoForge, the All the Mods 10 modpack, and the individual mods it bundles are each subject to their own licenses and terms — including the Mojang/Minecraft EULA and the All the Mods team's distribution terms. You are responsible for complying with them when you run this server.