A self-hosted game & app server control panel for Debian/Ubuntu โ think AMP + Pterodactyl, but radically easier to install, update and maintain. And not just for games: run databases and homelab apps from the same one-click Runes.
curl -fsSL https://raw.githubusercontent.com/kristianwind/yggdrasil/main/install.sh | sudo bash
A single static Go binary with the web UI embedded โ no separate database, no Redis, no required reverse proxy. The installer handles Docker and everything else.
One static binary + embedded PWA + SQLite. Install with a single command; updating is just swap & restart. Runs on amd64 and arm64 โ including a Raspberry Pi 4/5.
A game or app = one declarative YAML โRuneโ. Minecraft, Uptime Kuma and Vaultwarden are built in; 60+ community runes โ games, databases and homelab apps, Rust and DayZ among them โ are one click away, including app stacks that bring their own database and get wired up automatically (WordPress, Immich, Karakeep).
Live WebSocket console with command input, log streaming, per-server CPU/RAM limits and monitoring, and a clear installing โ running โ stopped lifecycle.
A Statistics page for the whole machine: CPU, memory and disk over time, your servers ranked against each other on each โ and the disk split into server data versus Docker's own storage. On a panel that has been running a while those are wildly different numbers, and the reclaimable ones come with a button.
Automatic port-forwarding (UPnP / UniFi), public hostnames via Nginx Proxy Manager or Cloudflare Tunnel โ several per server if you want, each pointed at the port you choose, across as many domains as your account owns โ an โonline from outsideโ check, and connect addresses per server.
Backups to local / SFTP / SMB with retention & restore โ or straight into a Proxmox Backup Server you already run, where each night only transfers the chunks that actually changed. Cron schedules for restarts, updates, backups, console commands and in-game warnings โ with a run log.
Safe restarts with in-game countdowns, an auto-restart toggle, a watchdog that auto-heals a hung server, world wipes, and a live Players tab with kick / broadcast / lock โ plus an activity feed of joins, deaths and kills. All rune-declared.
Bring your own LLM (OpenAI, Anthropic, DeepSeek, or a local Ollama/vLLM). Chat with a helper that knows your panel โ โwere there players overnight?โ, โis any site being attacked?โ โ answered from the panelโs own data. Proactive monitoring explains crashes and can apply safe fixes. You choose how much it may read; a local model keeps everything on your box.
Scoped multi-admin permissions, optional 2FA and passkeys, self-service password reset by email, API tokens, a full audit log. Log-pattern watchers flag brute-force and attack bursts and keep a security-event history. Secrets encrypted at rest (AES-256-GCM); argon2id passwords. The panel measures nothing about you โ and if you want to measure your own install, there is a field for your own analytics tag, with the security policy widened by exactly the origins it needs.
Bring what you already run. Import a WordPress site (All-in-One .wpress, or files
+ a database dump), a Pterodactyl egg, or a Docker Compose file turned into a rune. And move a
whole panel to a new host with one command โ servers, settings and secrets travel together.
Installable PWA, light and dark themes, mobile-friendly โ works as an app on iOS/Android.








Written from the code, not from memory. Start with the install path; the reference material lives on GitHub next to the source it describes.
Bare Debian box to a running game server in about fifteen minutes.
Targets, restore, verification, retention, and cron-driven actions.
Ports, reachability, UniFi, Nginx Proxy Manager, Cloudflare Tunnel.
Realms, permission bits, delegates, 2FA, passkeys and API tokens.
Every route the panel serves, with its authentication and permission gate.
The YAML format for teaching Yggdrasil a game or app it doesn't know yet.
On a fresh Debian/Ubuntu box, run one command. The installer detects your distro, installs Docker if missing, creates a service user, and prints your login URL + admin password.
curl -fsSL https://raw.githubusercontent.com/kristianwind/yggdrasil/main/install.sh | sudo bash
Questions, help getting a rune working, and news about releases.
Bugs belong in GitHub issues rather than chat โ they don't scroll away, and they can carry the logs and version a fix needs. Discord is the right place to ask whether something is a bug.