calagopus-aio

calagopus-aio

Docker app from Calagopus' Repository

Overview

Calagopus is a modern, open-source game server management panel built in Rust. Deploy, monitor, and manage Minecraft, Rust, and other game servers with industry-leading performance. This all-in-one template runs the panel alongside the Wings daemon. Requires separate PostgreSQL (e.g. postgres:18-alpine) and Valkey/Redis (e.g. valkey:latest) containers on the same Docker network.

Calagopus Logo

Calagopus Panel

Rust License GitHub issues GitHub stars Discord

A modern game server management panel, rebuilt from the ground up in Rust.

Calagopus is a ground-up reimplementation of Pterodactyl Panel in Rust. It keeps what made the original great - secure, container-based game server management - while aiming for better performance, a refreshed UI, more features, and a cleaner extension model on both the frontend and backend. If you already run Pterodactyl or Pelican, there is a supported migration path.

Calagopus dashboard

Features

  • Rust backend - a fast, efficient backend built on Tokio and Axum.
  • Modern frontend - React, Mantine, and Tailwind for a clean, responsive UI.
  • Extensible by design - first-class extension systems for backend and frontend, no hacky patches or overrides, real plugin APIs.
  • Egg compatible - reuses Pterodactyl-style eggs, including a Rust port of Laravel's validation rules.
  • Migration friendly - import your existing setup from Pterodactyl or Pelican.

Installation

Full instructions live in the documentation.

Roadmap

Tracked publicly here:

Project Structure

Repository layout
  • frontend/ - The frontend of the panel, built with React, Mantine, and Tailwind.
    • extensions/* - Frontend extensions, such as themes and plugins.
  • backend/ - The backend of the panel, built with Rust and Axum.
  • backend-extensions/* - Backend extensions, such as auth providers and database drivers.
  • database/ - Database migrations using Drizzle.
  • database-migrator/ - A tool to run database migrations, built with Rust and SQLx.
  • shared/ - Shared code between backend parts, mainly relevant for extensions.
  • wings-api/ - An auto-generated API client for the Wings API, built with Rust.
    • generator-src/ - The source for the API generator, written in TypeScript.
  • rule-validator/ - A semi-port of Laravel's validation rules in Rust for use with eggs.
  • schema-extension/
    • core/ - Core library for the schema extension system.
    • derive/ - A proc macro to derive schema extensions.

Contributing

Contributions are welcome. Open an issue to discuss larger changes first, and check the Discord if you want to chat through an idea before writing code.

Acknowledgments

Calagopus builds on the ideas and ecosystem of Pterodactyl and Pelican. Thanks to those projects and their communities.

License

See LICENSE.

Star History

Star History Chart

Install calagopus-aio on Unraid in a few clicks.

Find calagopus-aio in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for calagopus-aio Review the template variables and paths Click Install

Requirements


Before starting:
(1) Create a custom Docker network named "calagopus" in the Unraid Docker tab (Add Network).
(2) Start a PostgreSQL container (e.g. postgres:18-alpine) named "calagopus-db" on the "calagopus" network with POSTGRES_USER=panel, POSTGRES_PASSWORD=panel, POSTGRES_DB=panel, and a /data volume.
(3) Start a Valkey/Redis container (e.g. valkey:latest) named "calagopus-cache" on the "calagopus" network with a /data volume.
(4) Set APP_ENCRYPTION_KEY to a secure random string (openssl rand -hex 32).
(5) Create an empty Wings config file before the first start. Docker requires the host file to exist or it will create a directory instead: touch /mnt/user/appdata/calagopus/wings-config.yml (run this in the Unraid terminal). The container will populate it on first run.

Related apps

Details

Repository
ghcr.io/calagopus/panel:aio
Last Updated2026-07-01
First Seen2026-06-18

Runtime arguments

Web UI
http://[IP]:[PORT:8000]
Network
calagopus
Shell
bash
Privileged
false

Template configuration

WebUI PortPorttcp

HTTP port for the panel WebUI.

Target
8000
Default
8000
Value
8000
SFTP PortPorttcp

SFTP port for the integrated Wings daemon.

Target
2022
Default
2022
Value
2022
Panel DataPathrw

Persistent panel data directory.

Target
/var/lib/calagopus
Default
/mnt/user/appdata/calagopus/data
Value
/mnt/user/appdata/calagopus/data
Panel LogsPathrw

Panel log directory.

Target
/var/log/calagopus
Default
/mnt/user/appdata/calagopus/logs
Value
/mnt/user/appdata/calagopus/logs
Wings Config FilePathrw

Wings AIO configuration file. Must exist on the host before starting, see setup instructions above (step 5). Docker will create a directory here instead of a file if the path is missing.

Target
/wings-config.yml
Default
/mnt/user/appdata/calagopus/wings-config.yml
Value
/mnt/user/appdata/calagopus/wings-config.yml
Docker SocketPathrw

Docker socket — required for Wings to manage game server containers.

Target
/var/run/docker.sock
Default
/var/run/docker.sock
Value
/var/run/docker.sock
Docker ContainersPathrw

Docker containers directory — required for Wings.

Target
/var/lib/docker/containers/
Default
/var/lib/docker/containers/
Value
/var/lib/docker/containers/
Pterodactyl Config DirPathro

Wings main configuration directory (config.yml lives here).

Target
/etc/pterodactyl/
Default
/etc/pterodactyl/
Value
/etc/pterodactyl/
Pterodactyl Data DirPathrw

Wings data directory (server volumes, backups, archives).

Target
/var/lib/pterodactyl/
Default
/var/lib/pterodactyl/
Value
/var/lib/pterodactyl/
Pterodactyl Log DirPathrw

Wings log directory.

Target
/var/log/pterodactyl/
Default
/var/log/pterodactyl/
Value
/var/log/pterodactyl/
Pterodactyl Tmp DirPathrw

Wings temporary directory.

Target
/tmp/pterodactyl/
Default
/tmp/pterodactyl/
Value
/tmp/pterodactyl/
Encryption KeyVariable

Required. A long, random secret key used to encrypt sensitive data. Generate one with: openssl rand -hex 32

Target
APP_ENCRYPTION_KEY
Value
CHANGEME
Database URLVariable

PostgreSQL connection URL. Change the hostname to match your PostgreSQL container name.

Target
DATABASE_URL
Default
postgresql://panel:panel@calagopus-db/panel
Value
postgresql://panel:panel@calagopus-db/panel
Redis URLVariable

Redis/Valkey connection URL. Change the hostname to match your Valkey/Redis container name.

Target
REDIS_URL
Default
redis://calagopus-cache
Value
redis://calagopus-cache
TimezoneVariable

Container timezone.

Target
TZ
Default
UTC
Value
UTC
Run Database MigrationsVariable

Automatically run database migrations on startup.

Target
DATABASE_MIGRATE
Default
true
Value
true
PortVariable

Internal HTTP port the panel listens on.

Target
PORT
Default
8000
Value
8000
Enable Wings ProxyVariable

Enable the Wings proxy.

Target
APP_ENABLE_WINGS_PROXY
Default
true
Value
true
Use Decryption CacheVariable

Use the decryption cache.

Target
APP_USE_DECRYPTION_CACHE
Default
true
Value
true
Use Internal CacheVariable

Use the internal cache.

Target
APP_USE_INTERNAL_CACHE
Default
true
Value
true
PrimaryVariable

Mark this instance as primary.

Target
APP_PRIMARY
Default
true
Value
true
Log DirectoryVariable

Panel log directory inside the container.

Target
APP_LOG_DIRECTORY
Default
/var/log/calagopus
Value
/var/log/calagopus
AIO Base Wings ConfigurationVariable

Path to the base Wings configuration file inside the container.

Target
AIO_BASE_WINGS_CONFIGURATION
Default
/wings-config.yml
Value
/wings-config.yml