Docker host
Any machine with Docker Engine and the Compose plugin. A small VM, NAS or Pi-class box is plenty.
Rackpad is built for local ownership: Docker for production, Vite + Fastify for development, and SQLite for a small, portable data store. No cloud account, ever.
The one-line installer pulls the published image from GitHub Container Registry and starts it for you.
Set RACKPAD_TAG=beta before the installer to track pre-releases instead of stable.
curl -fsSL https://raw.githubusercontent.com/Kobii-git/Rackpad/main/scripts/install-docker.sh | bash
Recommended. Then open http://SERVER_IP:3000.
sudo mkdir -p /opt/rackpad && cd /opt/rackpad
sudo curl -fsSLo compose.yml \
https://raw.githubusercontent.com/Kobii-git/Rackpad/main/docker-compose.release.yml
# edit the .env file, then:
sudo docker compose up -d
Full control over volumes, env and reverse-proxy settings.
docker run -d \
--name rackpad \
-p 3000:3000 \
-v rackpad_data:/data \
ghcr.io/kobii-git/rackpad:latest
A single container with a named volume for your data.
git clone https://github.com/Kobii-git/rackpad.git
cd rackpad
npm install
npm run dev:all
Requires Node 22 LTS. Vite frontend + Fastify API with live reload.
Any machine with Docker Engine and the Compose plugin. A small VM, NAS or Pi-class box is plenty.
One SQLite database plus uploaded device images. Back it up by copying a single volume.
Only needed if you run from source. Production installs need nothing but Docker.
Run the installer, then open http://SERVER_IP:3000 in your browser.
The first account you make becomes the admin. Sign in to continue.
Start from a blank slate, or preload the expanded demo environment to explore the features first.
Add a room and a rack, drop in devices, then let discovery and imports fill in the rest.
Sensible defaults out of the box — set these when you put Rackpad behind a proxy or turn on extras.
| Variable | What it does |
|---|---|
RACKPAD_SECRET_KEY | Stored secret encryption key used for encrypted credentials and secrets such as SNMP credentials and integration secrets. |
TRUST_PROXY=1 | Honor X-Forwarded-* when running behind a reverse proxy. |
TRUSTED_HOSTS / ORIGINS | Allowed hostnames and origins for proxied deployments. |
MONITOR_INTERVAL_MS | Health-check frequency. Defaults to 300000 (5 minutes). |
OIDC_ENABLED + issuer/client | Turn on OIDC single sign-on alongside local accounts. |
SNMP_TRAP_ENABLED=1 | Enable the SNMP trap receiver; pair with SNMP_INVENTORY_SYNC=1. |
Rackpad serves plain HTTP on port 3000. Front it with your proxy of choice for HTTPS, then set TRUST_PROXY=1 and your trusted hosts.
rackpad.example.com {
reverse_proxy localhost:3000
}
Caddy fetches and renews TLS automatically — this is the whole config.
server {
listen 443 ssl;
server_name rackpad.example.com;
# ssl_certificate / ssl_certificate_key ...
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Pair with TRUST_PROXY=1 so forwarded headers are honored.
labels:
- traefik.enable=true
- traefik.http.routers.rackpad.rule=Host(`rackpad.example.com`)
- traefik.http.routers.rackpad.entrypoints=websecure
- traefik.http.routers.rackpad.tls.certresolver=le
- traefik.http.services.rackpad.loadbalancer.server.port=3000
Add these labels to the Rackpad service in your Compose file.
No database server to dump, no external state — back up by copying a single folder.
Stop the container with docker compose down so nothing is mid-write.
Archive the mounted /data volume — that's the SQLite database plus uploaded device and rack images.
Drop the volume back on any host, start the container, and Rackpad applies any migrations on boot.
In a single SQLite database inside the mounted /data volume, on your own machine. There's no cloud component and no telemetry — back up by copying the volume.
Pull the new image and recreate the container (docker compose pull && docker compose up -d, or re-run the installer). Your data volume is untouched and migrations run automatically on start.
Yes. Set TRUST_PROXY=1 and configure TRUSTED_HOSTS/TRUSTED_ORIGINS so Rackpad knows its public address. Terminate TLS at your proxy (Caddy, Traefik, nginx, etc.).
No. Fonts are self-hosted and there are no outbound calls, so it runs happily air-gapped. You only need network access for the features you point at it — SNMP, discovery scans, imports and alert delivery.
Run the Docker CLI recovery command (node dist-server/cli/reset-password.js --username admin) from inside the container to set a new password — no public reset endpoint is exposed.
One command, one container, your data on your box.