Updating
How to update your SurfSense Docker deployment
Watchtower Daemon (recommended)
Auto-updates every 24 hours. If you used the install script, Watchtower is already running. No extra setup needed.
For manual Docker Compose installs, start Watchtower separately:
docker run -d --name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower \
--label-enable \
--interval 86400Watchtower One-Time Update
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower --run-once \
--label-filter "com.docker.compose.project=surfsense"Use nickfedor/watchtower. The original containrrr/watchtower is no longer maintained and may fail with newer Docker versions.
Manual Update
cd surfsense # or SurfSense/docker if you cloned manually
docker compose pull && docker compose up -dDatabase migrations are applied automatically on every startup.
Migrating from the All-in-One Container
If you were previously using docker-compose.quickstart.yml (the legacy all-in-one surfsense container), your data lives in a surfsense-data volume and requires a one-time migration before switching to the current setup. PostgreSQL has been upgraded from version 14 to 17, so a simple volume swap will not work.
See the full step-by-step guide: Migrate from the All-in-One Container.