Everything your server runs, in one panel.

Zelie is a self-hosted server panel. It runs apps from GitHub, Docker or your own files, their databases and your game servers. One command installs it, and the machine needs nothing else.

curl -fsSL https://github.com/Caria-Core/zelie/releases/latest/download/install.sh | sh

Debian or Ubuntu · amd64 or arm64 · Free on a single server How the install works

Zelie’s home page listing apps, databases and game servers, all running

Still early. Zelie has only been tried on a small number of servers so far, and it still changes quickly. For now, run it on a spare server rather than one that hosts something important.

01Everything

One panel for what used to take three. A website, the database behind it and the game your friends play no longer need separate panels, logins and backup scripts.

Zelie

Apps GitHub, Docker or your own files

Game servers Pterodactyl and Pelican eggs

Databases PostgreSQL, MariaDB, Redis

  • One login
  • Domains and HTTPS
  • Metrics
  • Backups
  • One-click updates

Apps. From GitHub, a Docker image or plain files.

  • Push and it goes live, built from your Dockerfile or worked out for Node, Python, Go and more.
  • Tests run first; a failed build keeps the old version serving.
  • Or run your own files with Node.js, Python, Bun, Deno or Java, edited in the browser.
  • A domain and HTTPS for each, and rollback to any of the last five versions.

Game servers. Minecraft, Rust, Palworld and any Pterodactyl or Pelican egg.

  • A live console with colours and history, from any browser.
  • Files in the browser, backups, and schedules for restarts and commands.
  • Ports opened in the firewall for you, and the address players use shown.
  • Steam games update themselves once nobody is playing, if you let them.

Databases. PostgreSQL, MariaDB and Redis.

  • Linked to an app in a click; nothing else can reach them.
  • Backed up on a schedule, encrypted, on the server and in S3.
  • Major versions upgraded in place, with a backup first.
  • Tables and keys browsable read-only, and desktop tools through an SSH tunnel.

02Apps and deploys

A push goes live only when it works. The new version starts next to the old one. It takes over after the build, the tests and a health check pass. If a step fails, the old version keeps serving.

A good push New version

  1. Build From your Dockerfile, or worked out for you
  2. Test Your test command
  3. Health The app answers on its health path
  4. Live Traffic moves over
Old version: serving every request, then kept for a rollback

A push with a failing test New version

  1. Build From your Dockerfile, or worked out for you
  2. Test Failed
  3. Health Not reached
  4. Live Not reached
Old version: still serving every request, untouched
  • From GitHub.

    Push and it deploys. Built from your Dockerfile, or worked out for Node, Python, Go and more.
  • From a Docker image.

    Any image from a registry, with a domain and HTTPS of its own.
  • From your own files.

    Node.js, Python, Bun, Deno or Java. Edit in the browser or upload over SFTP.
An app’s deployments in Zelie: the live version and four earlier ones with a Roll back link
  • Roll back in a click.

    The last five versions of every app stay ready to run again.
  • Crashes are handled.

    A crashed app is started again. If it keeps failing, Zelie stops and tells you why.
  • Live logs.

    Build, deploy and app logs, as they happen.
  • A domain for each.

    HTTPS certificates from Let’s Encrypt, renewed for you.

03Game servers

Game servers, without the fuss. Start from a Pterodactyl or Pelican egg. Zelie takes care of the console, the files, the ports and the updates.

A live console.

Colours, command history, and it stays connected while Zelie updates itself.
A Minecraft server’s live console in Zelie, with coloured log lines

Files you can star.

Browse, upload and keep favourites for the files you open often.
A game server’s file manager with favourites at the top

An editor that knows your files.

C#, JavaScript, TypeScript, C, C++, JSON, YAML, Lua and config files are coloured as you type.
A C# plugin open in Zelie’s code editor, with coloured code

Mistakes show before you save.

Broken JSON is marked in red, with the line and the reason above the file.
A JSON config in the editor with a mistake marked in red and the line number shown

SFTP when you want it.

Log in with an SSH key, or with a password made for that server and shown once. Your account password never works over SFTP. The service starts only while someone connects.
The SFTP box on a files app: the address, a password shown once and the host key

Settings you can undo.

The startup command, the image and the egg’s variables. Every settings form gets a bar with Save, Reset and Undo as soon as something changes.
A game server’s Startup page with the Unsaved changes bar showing Undo, Reset and Save
  • Schedules.

    Cron times for commands, power actions and backups.
  • Ports from your pool.

    Pick which port each use gets: game, query, RCON, Rust+. Zelie opens them for you and shows the address players use.
  • Steam updates.

    Zelie tracks new builds and can update the game when nobody is playing.
  • Passwords filled in.

    Admin passwords such as RCON start out as long random values.
  • Backups.

    Of the whole server, on a schedule, encrypted.

The games in the list. These 21 are listed and checked automatically. Any other egg works too, by link.

Minecraft

  • Vanilla
  • Paper
  • Purpur
  • Fabric
  • Forge
  • NeoForge
  • Velocity
  • Bedrock

Other games

  • Rust
  • Palworld
  • Valheim
  • ARK: Survival Ascended
  • 7 Days to Die
  • Project Zomboid
  • Enshrouded
  • V Rising
  • Sons of the Forest
  • Counter-Strike 2
  • Garry’s Mod
  • Squad
  • Satisfactory

04Databases

Databases beside your apps, closed to the world. Made in a click. They have no public port, so only the apps you link to them can reach them.

  • PostgreSQL 18 · 17
  • MariaDB 11.8 · 10.11
  • Redis 8
A PostgreSQL table of customers, browsed read-only in Zelie
  • Linked in a click.

    An app gets the connection details as variables. Nothing else is opened.
  • Look without risk.

    Tables, rows and Redis keys in the browser, read-only. A stray click changes nothing.
  • Upgrades with a backup first.

    A major version is upgraded in place, after a backup is taken.
  • Your desktop tools.

    Reach a database from TablePlus or DBeaver through an SSH tunnel, with a user of its own.

05Metrics

See what everything is doing. A reading a minute, kept for a day, on your server and sent nowhere.

CPU, memory and network.

For every app and game server. Usage in the header is coloured, so a server running hot stands out from the list.
A game server’s metrics: CPU, memory and network over the last hour, with memory use coloured amber in the header

Requests and errors too.

Apps with a domain also show requests a minute, server errors and crashes over the last hour or day.
An app’s metrics: requests a minute, server errors, CPU, memory and network
Usage in the header is coloured. Under 70 % 70 % and up 90 % and up

06Backups

Backups that come back. Databases, game servers and app files, on a schedule. They are encrypted on the server, with a copy in any S3-compatible storage.

Your server Nightly, compressed, encrypted
S3-compatible storage Cloudflare R2, Backblaze B2, Amazon S3, Wasabi or another

When you restore

  1. 1 Back up what is there now
  2. 2 Put the chosen backup in
  3. 3 If that fails, put the old data back

Every backup in one list.

Nightly ones, manual ones and the ones taken before an upgrade, each marked when it has an off-site copy. Restore, download or delete from the row.
A database’s backups: six nightly and manual backups marked as copied off-site

07Security

Secure by default. Not a checklist to work through after installing. This is how it comes.

Internet
Web panel Runs as an unprivileged user
Core Runs as root. No network port at all
Your apps
  • storefront
  • survival
  • main-db
Each in its own container, network and user namespace

The internet can reach the panel. It cannot reach the part that runs as root.

  • Two steps, always.

    Every account needs a passkey or an authenticator app. After a few wrong tries, a login has to solve a small puzzle first.
  • Split in three.

    The web panel runs as an unprivileged user. The part that runs as root has no network port at all.
  • Secrets stay sealed.

    The panel stores your app secrets but cannot read them back. Only the part that starts your apps can.
  • Every app on its own.

    Its own container, network and user namespace. Root inside a container is nobody on the server.
  • Signed releases.

    An update is checked against Zelie’s signature before it runs. The source is open to read.
  • No ports to open.

    Behind a Cloudflare Tunnel nothing listens on the internet. Or use your own domain and Let’s Encrypt.

08Always on

Updates nobody notices. One click on the Server page, no commands, no SSH. Your apps, databases and game servers keep running while Zelie replaces itself.

Zelie

Old version
New version
Starts next to the old one Takes over once it is up

Apps · databases · game servers

Running the whole time

If the new version does not come up, the old one is put back by itself.

  • It tells you.

    Zelie checks for new releases and shows what changed.
  • Nothing stops.

    Containers live outside Zelie, so updating the panel does not touch them. Game consoles stay connected.
  • It comes back if it must.

    If the new version does not start healthy, the old one is put back by itself.
  • Your apps too.

    A new version of an app goes live only once it starts and its tests pass. Databases are backed up before an upgrade.

09Light

One file of about 50 MB. The panel, its proxy and its engine are a single binary. Nothing else to install or keep up to date.

What it does not need

  • PHP
  • Node.js
  • Docker
  • A database server
  • Its own state in one file.

    Zelie keeps what it knows in SQLite, a single file next to it.
  • No Docker.

    It talks to containerd directly, so restarting the runtime does not stop your containers.
  • amd64 and arm64.

    Debian or Ubuntu, on a small VPS or a big machine.

10Free

Free on one server. Zelie is open source under the AGPL. A single server has no limits. Running several servers from one panel will be a paid edition.

Today

  • Everything on this page, on one server
  • No limit on apps, databases or game servers
  • Source on GitHub, signed releases

Not yet

  • Several servers from one panel
  • Sub-users with their own permissions
Read the source

11Install

One command, then a short wizard. Run it on the server. The wizard asks how you want to reach the panel, then makes your account.

curl -fsSL https://github.com/Caria-Core/zelie/releases/latest/download/install.sh | sh

Debian or Ubuntu · amd64 or arm64 · Free on a single server How the install works

  1. 1

    Run the command.

    It downloads the signed release and starts Zelie.
  2. 2

    Choose how you reach it.

    A domain, a Cloudflare Tunnel, or a plain IP address.
  3. 3

    Make your account.

    With a passkey or an authenticator app.
  • A domain

    Zelie gets a Let’s Encrypt certificate and keeps it renewed.
  • Cloudflare Tunnel

    No port is open on the server. The tunnel brings people in.
  • An IP address

    For when you have no domain yet.