The panel
How the panel runs, how to give it a domain, how to brand it, and what to do when it is down.
How it runs
The panel is one container: the API, the web app and the MCP server. It runs as the protected service of the Panel project on the node you installed it on, managed by that node's agent like any other service. Being protected means it can't be deleted, stopped, deployed or moved from the panel itself, so a wrong click can't take the panel down. It updates itself from Settings → Updates instead (see Updates).
Its data is in /var/lib/seylo/panel/ on that node:
| File | What it is |
|---|---|
panel.db | Everything the panel knows, in SQLite: projects, services, environment, domains, people, settings, the activity log |
metrics.db | Metric history, kept apart so it can be dropped without losing anything else |
master.key | The key that encrypts secrets inside panel.db: environment variables, tokens, passwords, backup credentials |
Service logs are not stored by the panel. They stay on each node and are streamed when you look at them. Built images live in a registry on the panel's node, in /var/lib/seylo/registry.
Give the panel a domain
After installation the panel answers on http://<server-ip>:3000. Point an A record at the panel's node and set the hostname as Panel domain in Settings → General. The panel gets a certificate like any other service; the page shows Waiting for DNS, Getting a certificate, then Active.
Once the domain is active:
- page loads on
http://<server-ip>:3000redirect to the domain (API calls and the local agent keep working on the old address), - the session cookie is
Secureand HTTPS answers carry HSTS, - new join commands on Nodes use
https://<panel domain>, - nodes that joined over the panel's agent port (
https://<server-ip>:3443) move to the domain by themselves and keep that address as a fallback.
Nodes that joined over plain HTTP (--insecure) stay on their address; run a new join command on them with --force added. The node keeps its key, so the panel keeps the same node and its services. Details, and what happens to nodes when you later remove or change the domain, are in Adding nodes.
To go back to IP:port, clear Panel domain. Nodes that moved to the domain from the panel's IP come back through their fallback address by themselves after 5 minutes of failed connects, so expect them offline for a few minutes.
A domain is worth setting early:
- passkeys need it,
- GitHub needs an address it can reach to deliver webhooks,
- nodes you add later join through it, with no certificate pin to carry around.
Default node on the same page is where new services go when nobody picks a node.
Look and branding
Settings → Appearance changes how the panel looks for everyone who uses it:
- Color mode (light, dark or system) and a Theme preset: Default, Night, Classic or Midnight, with an optional custom Accent.
- Branding: the panel name, a logo for light and dark backgrounds and a favicon (PNG, SVG, WebP, JPEG or ICO, up to 512 KB), a Sign-in page message, and Hide "Powered by Seylo" in the footer.
- Custom CSS, applied after the theme. Only owners can change it.
The theme and branding are part of the first page load, so there is no flash of the default look.
When the panel is down
Services keep running. Nodes keep restarting crashed containers, routing traffic, running cron jobs, serving maintenance pages and closing timed exposes without the panel, and keep their reports on disk until it is back. Only things that need the panel wait: deploys, changes and the web app.
On the panel's node:
seylo panel status # its state, version and URL
seylo panel logs -f # its output
seylo panel start # start it if it was stopped
seylo panel setup-link # a new owner setup link, while no owner existsMoving the panel to another server
There is no built-in way to move the panel to another server yet; it is coming later. Until then, keep a backup of /var/lib/seylo/panel/ (see Backing up the panel).
MCP and AI
Let Claude Code or another MCP client work with your panel, and use the built-in assistant, with read-only defaults and approvals for anything that deletes something.
Updates
One switch keeps the panel and every node current. How an update runs, how releases are verified, and how it rolls back.