Docker Installation
This guide walks you through deploying Smart Panel using Docker — the fastest way to get a production-ready server running without installing Node.js or managing system services directly.
Prerequisites
- A Linux host with Docker and Docker Compose installed
- At least 512 MB RAM and 300 MB free disk space
Quick Start
Create a project directory
mkdir -p ~/smart-panel && cd ~/smart-panelDownload the Docker Compose file
curl -sL "https://raw.githubusercontent.com/FastyBird/smart-panel/main/docker/prod/docker-compose.yml" \
-o docker-compose.ymlGenerate a JWT secret
Smart Panel requires a secret key for authentication tokens:
export FB_TOKEN_SECRET=$(openssl rand -base64 32)
echo "FB_TOKEN_SECRET=${FB_TOKEN_SECRET}" > .envStart Smart Panel
docker compose up -dThe container will run database migrations on first startup and then start the server.
That’s it! Open http://<your-host-ip>:3000 in a browser to access the admin interface.
With InfluxDB (Time-Series Data)
To enable time-series data storage for temperature history, energy monitoring, etc.:
docker compose --profile influxdb up -dThen download the InfluxDB override file to wire Smart Panel to InfluxDB automatically:
curl -sL "https://raw.githubusercontent.com/FastyBird/smart-panel/main/docker/prod/docker-compose.influxdb.yml" \
-o docker-compose.influxdb.yml
docker compose -f docker-compose.yml -f docker-compose.influxdb.yml up -dSmart Panel requires InfluxDB v1.8. InfluxDB 2.x is not compatible. The Docker Compose file uses the correct version automatically.
Configuration
You can configure Smart Panel by setting environment variables in your .env file or directly in
docker-compose.yml:
| Variable | Default | Description |
|---|---|---|
FB_BACKEND_PORT | 3000 | HTTP server port (host-side mapping) |
FB_TOKEN_SECRET | Required | JWT authentication secret |
FB_MDNS_ENABLED | true | Enable mDNS discovery |
FB_OPENWEATHERMAP_API_KEY | - | OpenWeatherMap API key |
Custom Port
To run on a different port, update your .env:
FB_TOKEN_SECRET=your-secret-here
FB_BACKEND_PORT=8080Then restart:
docker compose up -dData Persistence
All application data (SQLite database, configuration) is stored in a Docker named volume
smart-panel-data mounted at /data inside the container. This volume persists across container
restarts and image updates.
To back up your data:
docker run --rm -v smart-panel-data:/data -v $(pwd):/backup alpine \
tar czf /backup/smart-panel-backup.tar.gz -C /data .To restore from a backup:
docker run --rm -v smart-panel-data:/data -v $(pwd):/backup alpine \
sh -c "rm -rf /data/* && tar xzf /backup/smart-panel-backup.tar.gz -C /data"Updating
To update to the latest version:
docker compose pull
docker compose up -dThe container will automatically run any pending database migrations on startup.
Using a Specific Version
To pin to a specific version, edit your docker-compose.yml:
services:
smart-panel:
image: ghcr.io/fastybird/smart-panel:1.2.3Or use the latest tag (default) to always pull the newest release.
Container Management
# View logs
docker compose logs -f smart-panel
# Restart
docker compose restart smart-panel
# Stop
docker compose down
# Stop and remove volumes (WARNING: deletes all data)
docker compose down -vHealth Check
The container includes a built-in health check that polls the /api/system/health endpoint every
30 seconds. Check the container health status with:
docker inspect --format='{{.State.Health.Status}}' smart-panelWhat’s Next?
Your server is running. Now either:
- Add display panels by following the Display Only guide on your display devices
- Create your admin account by following the Onboarding guide