Docker for Minecraft servers.
Hestia is a CLI tool for managing Minecraft servers. A persistent background daemon owns your server processes — they keep running after you close the terminal.
- Simple CLI — Create, start, stop servers with single commands
- Persistent daemon — Servers survive terminal exit
- Multiple server loaders — Vanilla, Fabric
- Auto JRE management — Downloads correct Java version automatically
- Mod management — Install and manage mods/plugins
- Backup system — Create, restore, prune backups with retention policies
- RCON support — Built-in console access and command execution
- Progress display — Live download progress for JARs and JREs
# Start the daemon
hestiad &
# Create and start a server
hestia create survival --version 1.21.4 --memory 4G
# View running servers
hestia ps
# Attach to server console
hestia attach survival
# Stop server
hestia stop survivalDownload the latest release for your platform from the releases page.
# Extract and install
tar -xzf hestia_linux_amd64.tar.gz
sudo mv hestia hestiad /usr/local/bin/Requires Go 1.26+.
git clone https://github.com/toraaoo/hestia
cd hestia
make build # outputs to dist/
make install # installs to $GOBINhestia create <name> [flags]| Flag | Description |
|---|---|
--version |
Minecraft version (default: latest) |
--loader, -l |
Server loader: vanilla, fabric (default: vanilla) |
--memory |
Memory allocation (e.g., 2G, 4096M) |
--port |
Server port (auto-assigned if 0) |
--detach, -d |
Don't attach after creating |
--gamemode |
survival, creative, adventure, spectator |
--difficulty |
peaceful, easy, normal, hard |
--seed |
World seed |
--max-players |
Maximum players |
--motd |
Server message of the day |
Examples:
# Vanilla server with defaults
hestia create myserver
# Fabric server with 4GB RAM
hestia create survival --loader fabric --memory 4G --version 1.21.4
# Creative server with seed
hestia create creative --gamemode creative --seed "minecraft" --memory 2Ghestia start <name> # Start server
hestia stop <name> # Stop server
hestia restart <name> # Restart server
hestia rm <name> # Remove serverhestia ps # List all servers (aliases: ls, list)
hestia inspect <name> # Show server details
hestia logs <name> [-f] # View logs (-f to follow)
hestia attach <name> # Attach to console
hestia attach <name> --rcon # Attach with RCON responseshestia configure <name> # View config
hestia configure <name> memory 4G # Set config valuehestia upgrade <name> [version]
--version Target version (default: latest)
--restart Restart server after upgrade
--no-backup Skip backup of current server.jar
--force Skip downgrade confirmationhestia mod install <server> <mod> # Install a mod
hestia mod list <server> # List installed mods
hestia mod remove <server> <mod> # Remove a mod# Create backup
hestia backup create <name>
# Manage backups
hestia backup list <name>
hestia backup restore <name> <backup>
hestia backup delete <name> <backup>
# Prune old backups
hestia backup prune <name> --keep-last 5
hestia backup prune <name> --keep-days 7 --min-backups 3Backups always include the world plus server.properties, plugins/, and mods/ when present. Live backups skip runtime lockfiles such as session.lock.
hestia versions # List vanilla releases
hestia versions --loader vanilla # List vanilla versions (explicit)
hestia versions --loader fabric # List Fabric-compatible versions
hestia versions --latest # Show only latest
hestia versions --snapshots # Include snapshotshestia daemon start # Start daemon
hestia daemon stop # Stop daemon
hestia daemon status # Check if runninghestia config get <key>
hestia config set <key> <value>hestia --versionhestia CLI ──HTTP/Unix socket──▶ hestiad daemon ──▶ minecraft process(es)
The CLI is a thin HTTP client. All state lives in the daemon.
~/.hestia/
├── config.toml # Global config
├── daemon.sock # Unix socket (runtime)
├── daemon.pid # PID file (runtime)
├── jre/ # Downloaded JREs
│ └── java-21/
└── servers/
└── <name>/
├── hestia.toml # Server config
├── backups/ # Server backups
└── data/ # Runtime data
├── server.jar
├── server.properties
├── logs/
├── mods/
└── world/
Global — ~/.hestia/config.toml
[daemon]
sock = "~/.hestia/daemon.sock"
log_level = "info"Per-server — ~/.hestia/servers/<name>/hestia.toml
config_version = 2
name = "survival"
version = "1.21.4"
loader = "vanilla"
memory = "4G"
port = 25565
[jvm]
flags = ["-XX:+UseG1GC"]
[rcon]
enabled = true
port = 25575| Loader | Description |
|---|---|
vanilla |
Official Mojang server |
fabric |
Fabric mod loader |
- Architecture — Internal design and package structure
- Command Reference — Full command documentation
- Contributing — Development setup and guidelines
See CONTRIBUTING.md for development setup and guidelines.
make test # Run tests
make lint # Run linter


