Getting started

Install HostRails

HostRails is meant to start from a fresh Ubuntu or Debian server where it can own the deployment stack cleanly.

Requirements

  • A server you control (a $6 VPS is plenty to start).
  • Ubuntu or Debian with root shell access.
  • Public ports 80 and 443 available for Caddy, plus the panel port (3000 by default).
  • Enough disk for builds, images, database volumes, and local backups.

Run the installer

From an existing panel (recommended): every HostRails panel hosts its own installer, so this works even when the source repository is private. Copy your exact command — key included — from System → Install HostRails on another server:

curl -fsSL https://panel.hostrails.xyz/get.sh | sudo bash -s -- --key <your-key>

First panel, no existing install: either clone a public repository with the one-liner —

curl -fsSL https://raw.githubusercontent.com/Satechmedia/hostrails/master/scripts/install.sh | sudo bash

— or, for a private repository, copy the source from your machine and run the installer in place:

rsync -az --exclude node_modules --exclude .git ./ root@your-server:/opt/hostrails-panel/
ssh root@your-server 'bash /opt/hostrails-panel/scripts/install.sh'

Whichever path you take, the installer:

  • installs base packages, Docker, Node.js 22, and Go (for the VPS agent binaries),
  • clones HostRails into /opt/hostrails-panel and builds it,
  • writes a production .env with your auto-detected public IP,
  • bootstraps the Docker network, BuildKit, and Caddy containers,
  • installs and starts the hostrails systemd service.

When it finishes, open the printed URL and create your admin account in the browser — the first visit shows a one-time setup screen; there are no default credentials.

Installer options

Set environment variables before bash to override defaults:

curl -fsSL https://panel.hostrails.xyz/get.sh | \
  HOSTRAILS_PUBLIC_URL=https://panel.example.com \
  HOSTRAILS_PANEL_PORT=3000 \
  sudo -E bash -s -- --key <your-key>
VariableMeaningDefault
HOSTRAILS_DIRInstall directory/opt/hostrails-panel
HOSTRAILS_REPORepository to cloneSatechmedia/hostrails
HOSTRAILS_BRANCHBranch to install frommaster
HOSTRAILS_PANEL_PORTDashboard/API port3000
HOSTRAILS_PUBLIC_URLPublic URL written to the env filehttp://<detected-ip>:<port>

What gets started

  • hostrails — the systemd service for the control plane.
  • hostrails-buildkit — the BuildKit builder container.
  • hostrails-caddy — the proxy on ports 80 and 443.

Inspect the install

sudo journalctl -u hostrails -f
sudo systemctl status hostrails
sudo docker ps

If UFW is enabled, allow the public ports:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3000/tcp

Updating

Re-running the installer is safe and doubles as the updater: it pulls the latest branch, rebuilds, and restarts the service — your data directory, env file, and secrets are preserved. The dashboard's System → Self-update does the same from the UI.

After install

Head to Settings: one click sets a zero-DNS *.sslip.io wildcard domain, another connects GitHub. Then create your first project. See Deployments.