Alfa

STYGION Panel a0.3.0

The 0.2.0 line, with the four things that made it tiring to run finally fixed.

An uploaded file no longer stops the server

Upload a file through the file manager and the server would refuse to start, because it had no rights to read it — and the only cure was a chown over SSH. The panel wrote files as itself while the server ran as somebody else, and an unprivileged process cannot hand a file to another user, so no amount of chowning after the fact was ever going to work.

Under rootless podman the server now runs as the user that already owns its files. Ownership lines up by construction, for an upload and after an install alike.

The console

Four separate faults, four fixes.

It holds. A ping every 25 seconds keeps the socket visible to whatever proxy sits in front of it, and the page reconnects on its own — after a second, two, four, up to fifteen. Reloading the page used to be the only way back.

It renders. Output was read in 4 KB blocks and sent as they landed, so a multi-byte character — every accented letter, every progress-bar block — routinely arrived cut in half and rendered as garbage. An unfinished character is now held back until the rest of it comes.

It has colour. ANSI, 256-colour and Minecraft's own § codes, so a MOTD looks like a MOTD instead of §6§lMy Server. Lines the server left plain are tinted by log level; where the server chose its own colours, they are kept.

Commands arrive. They travel over HTTP rather than the stream, so one typed while the connection happens to be reconnecting is no longer swallowed without a word. And scrolling up to read a stack trace no longer yanks you back to the bottom on the next line.

Drive the whole panel from an assistant

A new MCP surface at /mcp/v1: servers, the console, files, backups, schedules, databases, ports, eggs, nodes, activity, the updater and the licence. Every tool calls the same service the panel does, so a rule the panel enforces is a rule an assistant is held to as well. With no key configured the surface answers 404 rather than existing and refusing.

The installer generates the key; grep STYGION_MCP_KEY /etc/stygion/*.env.

Subscription, and a STYGION ID

Settings → Subscription links a panel to a STYGION ID with a pairing code you type at stygion.eu. The panel notices on its own.

Seven free days run from the install and need no network at all. If STYGION cannot be reached, the last known state stands for another fourteen days.

The licence locks exactly one thing: creating a new server. Signing in, the console, files, backups, schedules, databases and deleting all keep working — an outage on our side is never an outage on yours.

Installing

One command now sets up a panel that is reachable from outside:

curl -fsSL https://core.stygion.eu/install.sh | sudo sh

It asks for a domain and takes a Let's Encrypt certificate through Caddy, opens the firewall, installs podman when no container engine is present, and verifies the download against its checksum before unpacking it. It can also run a second panel on one machine (STYGION_INSTANCE), uninstall itself, and install from a local file for a machine with no way out to the internet.

Updating

The self-updater never actually worked: it could not read the answer it was given, so no panel ever saw an update it could act on — including panels with automatic updates switched on. It reads it now, and every build is checked against its published checksum before it is installed.


Upgrading from 0.2.0 adds one migration and leaves your servers, accounts and backups alone. Verified against a copy of a live production database.