Observe the host
Live and historical CPU, memory, load, network, and root-disk views, sampled from the machine itself.
ServerDeck brings Incus, Docker, storage, networking, updates, and systemd into one local-first control surface. It runs on the machine itself, signs in with the accounts already on that machine, and keeps privileged actions on a short, audited leash.
$ curl -fsSL https://serverdeck.black.ax/install.sh | sh
The day-to-day shape of a Linux host, without the tab sprawl. ServerDeck reads the machine directly and gives the boring parts a consistent, deliberate interface.
Live and historical CPU, memory, load, network, and root-disk views, sampled from the machine itself.
Incus containers and VMs, Docker containers, and systemd services. Inspect, console, and act in place.
Disks, ZFS pools and datasets, SMART health, backups, and snapshots with retention controls in one place.
Interfaces, routes, DNS, and firewall state. Make firewall changes through the same audited path as everything else.
APT, DNF/DNF5, and Pacman updates, reboot state, health checks, and notification routing without a cron spreadsheet.
Existing Linux accounts sign in through PAM. Roles stay simple, and privileged actions land in the audit log.
There is no agent to deploy, no fleet to reconcile, and no second copy of your infrastructure to keep honest. ServerDeck lives on the host it describes.
FrankenPHP, a static PHP CLI, the host helper, and PAM tooling ship in the release. No system PHP, Node, nginx, or Composer required.
The web process runs unprivileged. Root actions go through one no-argument sudo rule and a validated, allow-listed helper.
Authentication goes straight to Linux PAM. ServerDeck never stores application passwords.
Linux username and password, checked by PAM.
Reads host state and serves the panel.
Allow-listed operations arrive as structured JSON.
systemd, Incus, Docker, ZFS, and the filesystem.
Every privileged command is logged. Console output and keystrokes are not.
Run this on the Linux host you want to manage. The bootstrap resolves the latest stable release, verifies its published SHA-256 checksum, and then starts the installer.
$ curl -fsSL https://serverdeck.black.ax/install.sh | sh
sudo.
x86_64 Linux only.
The latest stable tag is read from GitHub. No credentials needed.
The tarball is checked against the release’s SHA-256 before extraction.
A self-contained release lands in /opt/serverdeck, with systemd units and a CLI.
The installer prints the panel URL. Sign in with an existing Linux account that uses sudo.
--port 8443 changes the listener, --url sets the public URL, and --open-firewall opens the port in ufw or firewalld.
A newer release preserves configuration and state, backs up SQLite before migrations, and rolls back automatically if the health check fails.