Getting started
Self-hosting
One command turns a fresh Linux server into your own deploy platform — the web dashboard, an edge router with automatic HTTPS, and everything needed to push apps to it.
What you'll need
- A fresh Ubuntu or Debian server with a public IP and root SSH access (a $5/mo VPS is plenty to start).
- A domain you can add DNS records to. Apps are served at
<app>.yourdomain.comand the dashboard atdash.yourdomain.com.
Install
SSH into your server and run this as root — replace example.com with your domain:
curl -fsSL https://useskiff.xyz/install | sh -s -- --domain example.comThe installer:
- installs Docker (if it isn't already),
- downloads the latest
skiffbinary, - sets up systemd services for the edge router(binds :80 / :443 with Let's Encrypt) and the control panel (zero-downtime, blue-green),
- generates a one-time setup key and prints your dashboard URL.
Point your DNS
Add these records at your DNS provider, pointing at your server's IP (the installer prints it). The wildcard covers every app and the dashboard in one record:
A *.example.com <your-server-ip>
A example.com <your-server-ip> (optional — apex / marketing site)Certificates are issued automatically on the first HTTPS request, so there's nothing to configure — just wait for DNS to propagate (usually a few minutes).
First login
- 1
Open your dashboard
Visithttps://dash.example.comonce DNS resolves. The first visit asks you to create the owner account. - 2
Enter the setup key
Paste the setup key the installer printed, then set your email and password. That's the owner account — teammates join later by invite. - 3
Deploy your first app
Click Deploy, paste a Git repository URL (or connect GitHub), pick a name and port, and Skiff builds and runs it at<name>.example.comwith its own certificate.
Connect GitHub (optional)
For push-to-deploy — a git push rebuilds and ships automatically, and branches can spin up preview environments — install the Skiff GitHub App from Settings → GitHub in the dashboard and pick which repos it can access. Without it, you can still deploy any public repo (or a private one with a token) by pasting its URL.
Updating
Re-run the installer any time to update to the latest release. Your data, apps, and setup key are preserved — it swaps the binary and restarts the services:
curl -fsSL https://useskiff.xyz/install | sh -s -- --domain example.comTroubleshooting
Check the services and their logs over SSH:
systemctl status skiff-router skiff-panel@7070
journalctl -u skiff-router -n 50 --no-pager
journalctl -u skiff-panel@7070 -n 50 --no-pager- Dashboard won't load / no certificate: confirm
dash.example.comresolves to your server's IP. Certs issue on the first request once DNS is correct. - An app 404s: check it's running under Server in the dashboard, and that
<app>.example.comis covered by your wildcard record. - Ports 80/443 in use: make sure nothing else (nginx, Apache, Caddy) is bound to them — the Skiff router needs both.