Skip to Content
🚀 We just launched! Please star us on Github!

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


Quick Start

Create a project directory

mkdir -p ~/smart-panel && cd ~/smart-panel

Download the Docker Compose file

curl -sL "https://raw.githubusercontent.com/FastyBird/smart-panel/main/docker/prod/docker-compose.yml" \ -o docker-compose.yml

Generate 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}" > .env

Start Smart Panel

docker compose up -d

The 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 -d

Then 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 -d
⚠️

Smart 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:

VariableDefaultDescription
FB_BACKEND_PORT3000HTTP server port (host-side mapping)
FB_TOKEN_SECRETRequiredJWT authentication secret
FB_MDNS_ENABLEDtrueEnable 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=8080

Then restart:

docker compose up -d

Data 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 -d

The 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.3

Or 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 -v

Health 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-panel

What’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
Last updated on