Skip to content
Spirit Panel Self-hosted

Start

Architecture

The panel is the control plane. FeatherWings starts each game in Docker, on this machine or on another node.

On this page

Spirit Panel never runs the game itself. It stores users, nodes, and servers, then talks to FeatherWings. FeatherWings starts the container.

Piece Role
nginx HTTPS on 443. Serves the web UI and proxies /api to the panel API.
panel-web The React UI, served as static files.
panel-api Fastify API on 127.0.0.1:3000. Not exposed to the internet.
MariaDB Panel database.
Redis Queues and the schedule worker.
FeatherWings Daemon that starts each game in Docker.
Nest A category you name for related eggs.
Egg The template FeatherWings uses to start a server.

Bring the egg JSON you already use. A newer import refreshes the template and keeps the servers already on that egg. An egg carries docker_images, startup, variables, and installation.

Where the daemon runs

A panel can use both of these at once.

Same box. FeatherWings listens on 127.0.0.1:8080. nginx proxies the console websocket at /wings/.

Remote node. The daemon is on another machine, reached over HTTPS on that machine’s hostname. No trailing slash on the remote URL.

API_URL in the panel environment must match the remote value in the FeatherWings config exactly: HTTPS, with no trailing slash.

On the node

FeatherWings starts the container. CPU, RAM, disk, IO, and swap use 0 for unlimited. Allocation, backup, and database limits are different: 0 means disabled, not unlimited. Reconnect needs FeatherWings 1.4.3 or newer.

In the client area

Players get a console with tab completion, files and an editor, startup settings, power actions, backups, databases, schedules, subusers, SFTP, and tickets.