# Installing

> One command. It asks for a domain, takes a certificate, opens the firewall.

Source: https://stygion.eu/docs/panel/instalace
Updated: 2026-10-07

The panel is a single binary. There are no dependencies to install
alongside it and no database to create — it makes its own SQLite.

## What you need

Linux with systemd, and root. That is the list. The installer even
handles the container engine: when the machine has none, it offers
podman and installs it.

Two gigabytes of RAM for the panel itself is comfortable, plus whatever
your servers want. The panel alone uses about 60 MB.

## One command

```
curl -fsSL https://stygion.eu/install/panel | sudo bash
```

It asks a few things and then does them:

**What the panel should call itself.** This is the name it appears
under when you link a STYGION ID and look at a list of your machines.

**What it should listen on.** `:8080` by default.

**A domain.** This is the question that matters. Answer it and the
installer sets up Caddy, which takes a Let's Encrypt certificate on its
own, and the panel is reachable from outside over HTTPS with nothing
further to do. Leave it blank and the panel runs on the machine's own
LAN address — which is the right answer while you are still finding out
whether you like it.

> The domain has to point at the machine **before** you run the
> installer. A certificate is issued by Let's Encrypt looking at that
> address; if nobody is there, you do not get one, and the installer
> says so.

**The firewall.** It opens the panel's port and SFTP. It does not open
game ports — the panel opens those itself, when you allocate one to a
server.

**Automatic updates.** Yes by default.

When it finishes it prints the address to visit and the MCP key.

## With no internet

A machine that cannot reach out will not download a build. Take the
tarball from
[releases](https://github.com/Stygion-eu/Stygion-core/releases), carry it
over, and point the installer at it:

```
sudo bash install.sh --from ./stygion-core-0.3.0-linux-amd64.tar.gz
```

If the `.sha256` is sitting beside it, it is checked. Bring that too.

## A second panel on one machine

Trying a new version beside a running one wants a second install with
its own service, its own user and its own data:

```
STYGION_INSTANCE=stygion-test sudo bash install.sh
```

It does not touch the first.

## Without the questions

For a script or Ansible, the answers can be given up front:

```
STYGION_DOMAIN=panel.example.com \
STYGION_WITH_CADDY=y \
sudo bash install.sh --unattended
```

`install.sh --help` lists every variable.

## Uninstalling

```
sudo bash install.sh --uninstall
```

Stops the service and removes it, and **keeps the data**. Deleting that
has to be a second decision rather than a side effect of the first:

```
sudo bash install.sh --uninstall --purge
```

That deletes every server, every backup and every account on that panel.
There is no way back.

## When something is wrong

The panel is a systemd service, so you ask it the way you ask anything
else:

```
systemctl status stygion
journalctl -u stygion -f
```

Next: [First run](/docs/panel/prvni-spusteni).
