Skip to content

toraaoo/hestia

Repository files navigation

Hestia

CI License: MIT

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.

Hestia Demo

Features

  • 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

Quick Start

# 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 survival

Installation

From Releases

Download 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/

From Source

Requires Go 1.26+.

git clone https://github.com/toraaoo/hestia
cd hestia
make build      # outputs to dist/
make install    # installs to $GOBIN

Usage

Creating Servers

Server Create

hestia 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 2G

Server Lifecycle

hestia start <name>      # Start server
hestia stop <name>       # Stop server
hestia restart <name>    # Restart server
hestia rm <name>         # Remove server

Monitoring Servers

Server PS

hestia 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 responses

Server Configuration

hestia configure <name>              # View config
hestia configure <name> memory 4G    # Set config value

Upgrading Servers

hestia upgrade <name> [version]
  --version    Target version (default: latest)
  --restart    Restart server after upgrade
  --no-backup  Skip backup of current server.jar
  --force      Skip downgrade confirmation

Mod Management

Mod Management

hestia mod install <server> <mod>   # Install a mod
hestia mod list <server>            # List installed mods
hestia mod remove <server> <mod>    # Remove a mod

Backups

# 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 3

Backups 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 snapshots

Daemon

hestia daemon start    # Start daemon
hestia daemon stop     # Stop daemon
hestia daemon status   # Check if running

Global Configuration

hestia config get <key>
hestia config set <key> <value>

Version

hestia --version

Architecture

hestia CLI  ──HTTP/Unix socket──▶  hestiad daemon  ──▶  minecraft process(es)

The CLI is a thin HTTP client. All state lives in the daemon.

Storage Layout

~/.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/

Configuration Files

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

Loaders

Loader Description
vanilla Official Mojang server
fabric Fabric mod loader

Documentation

Contributing

See CONTRIBUTING.md for development setup and guidelines.

make test   # Run tests
make lint   # Run linter

License

MIT

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors