A web dashboard for Saltbox server management. Monitor Docker containers, system health, storage mounts, Traefik routes, and installed apps from a single interface.
- Dashboard — CPU, memory, disk, network stats with service health checks
- Apps — Browse installed Saltbox apps, view details, search the install catalog
- Docker — Container list with status, actions (start/stop/restart), and live log viewer
- Storage — Mount tree, disk usage, rclone remote status, MergerFS configuration
- System — Detailed metrics, backup status, Traefik routes, service health
- SvelteKit + Svelte 5 + TypeScript
- Tailwind CSS v4
- Lucide icons
- adapter-node for server deployment
- Dockerode for Docker API access
bun install
bun run devbun run build
node build/index.jsThe recommended way to run Saltbox UI on your Saltbox server.
Pre-built images are published to the GitHub Container Registry (GHCR):
| Image | Updated on | Use for |
|---|---|---|
ghcr.io/javi11/saltbox-ui:latest |
Every release | Stable production use |
ghcr.io/javi11/saltbox-ui:dev |
Every push to main |
Latest development builds |
# Set your domain (and optionally the channel — defaults to 'latest')
echo "DOMAIN=yourdomain.com" > .env
# Pull and start the latest stable image
docker compose up -d
# Or use the dev image:
# echo "CHANNEL=dev" >> .env && docker compose up -dThe container needs read-only access to host resources:
| Host Path | Container Path | Purpose |
|---|---|---|
/var/run/docker.sock |
/var/run/docker.sock |
Docker API |
/proc |
/host/proc |
CPU, memory, network stats |
/sys |
/host/sys |
CPU temperature |
/etc/fstab |
/host/fstab |
MergerFS configuration |
/srv/git/saltbox |
/srv/git/saltbox |
Saltbox configs and roles |
/opt/saltbox_backup |
/opt/saltbox_backup |
Backup logs |
/opt/sandbox |
/opt/sandbox |
Sandbox roles |
The docker-compose.yml includes standard Saltbox Traefik labels. The UI will be available at https://saltbox-ui.yourdomain.com with Authelia authentication.
| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server port |
HOST |
0.0.0.0 |
Bind address |
ORIGIN |
— | Full URL for CORS |
TRAEFIK_API_URL |
http://localhost:8080 |
Traefik API endpoint |
HOST_PROC |
/proc |
Host proc mount path |
HOST_SYS |
/sys |
Host sys mount path |
HOST_FSTAB |
/etc/fstab |
Host fstab mount path |
CHANNEL |
latest |
Image channel: latest (stable releases) or dev (main branch builds). Shown in the Settings version panel and used as the pulled image tag. |
GITHUB_REPO |
javi11/saltbox-ui |
GitHub repository (owner/repo) queried for version info in the Settings page. |
src/
├── lib/
│ ├── components/ # Svelte components by domain
│ ├── data/ # API layer + mock data
│ ├── server/ # Server-only modules (Docker, system, storage, Traefik)
│ ├── stores/ # Svelte 5 rune stores
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Formatting helpers, constants
├── routes/
│ ├── +page.svelte # Dashboard
│ ├── apps/ # App management
│ ├── docker/ # Container management
│ ├── storage/ # Storage overview
│ └── system/ # System metrics