Runbook
Operational procedures for sepia.
Docker Operations
List all services
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
View logs
docker logs -f <container>
Restart a service
docker compose -f /opt/compose.yaml restart <service>
Rebuild and restart
docker compose -f /opt/compose.yaml up -d --build <service>
Adding a New Service
- Create
compose.<service>.yamlin/opt/ - Add include to
/opt/compose.yaml - Set appropriate ports, volumes, health checks
- Run
docker compose -f /opt/compose.yaml up -d
Monitoring
Check system health
docker ps --filter "health=unhealthy"
View Grafana
- URL: https://grafana.uitgeest.veenboer.xyz (port 3333 internally)
Database Access
TimescaleDB
psql -h localhost -p 6543 -U timescaleuser
DSMR PostgreSQL
psql -h localhost -p 5432 -U dsmrreader dsmrreader
InfluxDB
docker exec -it influxdb influx
Troubleshooting
Container won't start
- Check logs:
docker logs <container> - Check config syntax
- Verify environment variables are set
- Check port conflicts
Storage issues
- Check disk space:
df -h - Check mounts:
mount | grep /media - Verify permissions on
/opt/directories
DNS issues
- Check DNS ad-blocker:
docker logs dns-ad-blocker
Backup Strategy
Backup is handled by Borgmatic — deduplicated archives stored locally.
Borgmatic
- Image:
b3vis/borgmatic:v1.1.10-1.4.21 - Schedule: Daily (via crontab.txt)
- Cache:
/opt/borgmatic/cache - Logs:
/opt/borgmatic/log
Sources (all mounted read-only from host / into /sepia/):
| Config | Source | Notes |
|---|---|---|
opt |
/sepia/opt |
Container configs |
| User configs | /sepia/home |
Home directories |
Check borgmatic status
docker logs borgmatic
List borg archives
docker exec borgmatic borgmatic list -c /config/opt.yaml
Manual borgmatic run
docker exec borgmatic borgmatic -c /config/opt.yaml