Production installation
Install a TLS-only Portal on a supported Ubuntu host from a verified release archive.
Before installing
- Use Ubuntu Server 24.04 or 25.04 amd64 for the supported path.
- Create an A or AAAA record for the Portal FQDN and confirm it resolves from the target host with
getent ahosts portal.example.com. - Allow inbound TCP 80 and 443. Certbot’s HTTP-01 challenge requires port 80.
- Keep port 3100 free; Portal binds it to loopback only and Nginx is the public listener.
If a CDN proxies the domain, temporarily use DNS-only mode and disable forced HTTPS for the first certificate. Restore the proxy only after the origin works with Full (strict) TLS.
Verify and extract the release
REPO=raptercode/dashboard-portal-control
TAG=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep -m1 '"tag_name"' | cut -d '"' -f4)
VERSION=${TAG#v}
curl -fsSLO "https://github.com/${REPO}/releases/download/${TAG}/dashboard-portal-${VERSION}.tar.gz"
curl -fsSLO "https://github.com/${REPO}/releases/download/${TAG}/dashboard-portal-${VERSION}.tar.gz.sha256"
sha256sum --check "dashboard-portal-${VERSION}.tar.gz.sha256"
mkdir "dashboard-portal-${VERSION}"
tar -C "dashboard-portal-${VERSION}" --extract --gzip --file "dashboard-portal-${VERSION}.tar.gz"
cd "dashboard-portal-${VERSION}"Run the installer
sudo ./dashboard-portal.sh --domain=portal.example.com --email=admin@example.comThe installer asks for the owner password only on the first install. It installs Nginx, Certbot, Git, curl, CA certificates, and xz-utils; verifies and pins Node.js 24.18.0 and Bun 1.3.13; creates the dashboardportal service account and helper; requests TLS; enables HTTPS redirect/HSTS; and verifies https://portal.example.com/api/health.
Accept the installation
sudo systemctl is-active dashboard-portal hostmgr-deploy-helper nginx
curl -fsS http://127.0.0.1:3100/api/health
curl -fsSI https://portal.example.com/Do not expose port 3100. The installer writes configuration as root:dashboardportal, mode 0640, and keeps timestamped pre-change snapshots in /var/backups/dashboard-portal.