Skip to main content
Version: 2.9

Production Deployment

Best practices for deploying FiestaBoard in a production environment.

Docker Compose for Production

Use the production-optimized Docker Compose file:

docker-compose -f docker-compose.prod.yml up -d --build

Or use pre-built images from Docker Hub:

docker-compose -f docker-compose.hub.yml up -d

Environment Variables

# In .env
REFRESH_INTERVAL_SECONDS=300 # Refresh every 5 minutes (default)
SILENCE_SCHEDULE_START_TIME=22:00 # Set quiet hours
SILENCE_SCHEDULE_END_TIME=07:00

Data Backup

Back up the data/ directory regularly to preserve your pages, schedules, and settings:

# Simple backup
cp -r data/ data-backup-$(date +%Y%m%d)/

# Or use a cron job
0 2 * * * tar -czf /backups/fiestaboard-$(date +\%Y\%m\%d).tar.gz /path/to/FiestaBoard/data/

Updating

# Pull latest changes
git pull

# Rebuild and restart
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml up -d --build
Zero-Downtime Updates

Pull the latest code and rebuild the images first, then bring down the old containers and start the new ones. The downtime is minimal, just a few seconds while containers swap.

Monitoring

Health Checks

FiestaBoard provides a health endpoint:

curl http://localhost:4420/api/health

You can use this with monitoring tools like Uptime Kuma or Healthchecks.io.

Logs

# View all logs
docker-compose logs -f

# View FiestaBoard container logs only
docker-compose logs -f fiestaboard

Security Considerations

  • Never commit .env files to version control
  • Restrict API access - The API has no authentication by default
  • Use a reverse proxy - For external access, put FiestaBoard behind Nginx or Traefik with HTTPS
  • Keep Docker updated - Regularly update Docker and Docker Compose

Running Behind a Reverse Proxy

If you want to access FiestaBoard from outside your local network, use a reverse proxy with HTTPS:

server {
listen 443 ssl;
server_name fiestaboard.yourdomain.com;

ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;

location / {
proxy_pass http://localhost:4420;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Next Steps