Every game server you own, on one pane.
Kraken is a self-hosted control plane for dedicated game servers. One Panel drives a lightweight Agent on every host you own, and each Agent runs your servers as Docker containers on Linux, on native Windows, or under Wine, all from one declarative Game Spec.
Pelican-class capability, without the operational weight.
Kraken assumes one competent operator, a handful of machines they already own, and a home LAN that has to keep working when the internet does not.
It runs on your hardware.
No hosting bill, no vendor, no per-server plan. The Panel is the source of truth, Postgres is the datastore, and both live on machines you can walk over to.
zero outbound internet · integrations are optionalOne pane, whole fleet.
Nodes, servers, consoles, files, backups and schedules in a single full-bleed surface. Wider screens show more of the fleet, not a bigger version of it.
console and stats stream live over websocketTwo binaries and Postgres.
The Panel embeds the web UI, so there is no static host to run. Add a machine by installing the Agent and pasting one enrollment token.
no broker, no cache, no kubernetesWhat the Panel actually does.
Everything below is in the shipped build: the operator surface for a fleet you own, instrumented end to end.
online, partial, offline.
tar.gz backups with destination templating, plus optional off-node replication to a NAS share or an SFTP remote.
argon2id passwords and four roles (owner, admin, operator, read-only) with per-server object-level ownership on top.
AES-256-GCM encrypted at rest; session tokens are stored as digests. Nothing infrastructural is persisted in the clear.
One spec. Linux, Windows, or Wine.
Most panels pick an operating system and make the games fit it. Kraken makes the spec describe the game, and the scheduler decides which of your machines can run it.
Placement is a decision, not an assumption.
A Game Spec carries per-platform overrides: image, install script, startup command. When a game ships a native Linux dedicated server, that is what gets scheduled. When it only ships a Windows build, Kraken runs it on a native-Windows node, or under Wine on a Linux one.
Everything downstream stays identical either way: the file browser, the editor, the backups and the restore path are native Go filesystem work against a host bind mount, not the Docker archive API.
How it fits together.
Four moving parts, one direction of trust. The browser only ever talks to the Panel; the Panel is the only thing that talks to an Agent.
- browser ⇄ panel
- REST over the OpenAPI surface, plus WebSocket for console and stats.
- panel ⇄ agent
- gRPC over mutual TLS. The Panel dials in, or the node dials out and serves over a reverse tunnel with no inbound port.
- panel ⇄ postgres
- All fleet state, sessions and audit history in one durable datastore.
- browser ⇄ agent
- Never. Console and stats are bridged by the Panel, so an Agent needs no browser-facing surface at all.
Install it in an evening.
One command brings up the first host. Every host after that is the same command with an enrollment token minted in the Add node dialog.
Linux or Windows hosts
Native containers on either, driven from the same Panel. Docker Compose covers the Linux path; Windows nodes run the Agent as a service.
Idempotent installer
Re-running upgrades to the latest release without clobbering your /etc/kraken/*.env.
Bring your own Postgres
The bundled compose file is a convenience, not a requirement. Point KRAKEN_DATABASE_URL anywhere.