diff --git a/surfsense_web/content/docs/docker-installation.mdx b/surfsense_web/content/docs/docker-installation.mdx index 486f79b6a..e6aec07ea 100644 --- a/surfsense_web/content/docs/docker-installation.mdx +++ b/surfsense_web/content/docs/docker-installation.mdx @@ -36,6 +36,41 @@ After starting, access SurfSense at: --- +## Updating + +**Option 1 — Watchtower daemon (recommended, auto-updates every 24 h):** + +```bash +docker run -d --name watchtower \ + -v /var/run/docker.sock:/var/run/docker.sock \ + nickfedor/watchtower \ + --label-enable \ + --interval 86400 +``` + +**Option 2 — Watchtower one-time update:** + +```bash +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. + + +**Option 3 — Manual:** + +```bash +cd surfsense # or SurfSense/docker if you cloned manually +docker compose pull && docker compose up -d +``` + +Database migrations are applied automatically on every startup. + +--- + ## Configuration All configuration lives in a single `docker/.env` file (or `surfsense/.env` if you used the install script). Copy `.env.example` to `.env` and edit the values you need. @@ -181,31 +216,6 @@ See the full step-by-step guide: [Migrate from the All-in-One Container](/docs/h --- -## Updating - -**Option 1 — Watchtower (recommended):** - -```bash -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. - - -**Option 2 — Manual:** - -```bash -cd surfsense # or SurfSense/docker if you cloned manually -docker compose pull && docker compose up -d -``` - -Database migrations are applied automatically on every startup. - ---- - ## Useful Commands ```bash diff --git a/surfsense_web/content/docs/how-to/migrate-from-allinone.mdx b/surfsense_web/content/docs/how-to/migrate-from-allinone.mdx index 36233145d..3de0b043d 100644 --- a/surfsense_web/content/docs/how-to/migrate-from-allinone.mdx +++ b/surfsense_web/content/docs/how-to/migrate-from-allinone.mdx @@ -85,7 +85,15 @@ bash migrate-database.sh --db-user myuser --db-password mypass --db-name mydb For users who prefer full control or whose platform doesn't support bash scripts (e.g. Windows without WSL2). -### Step 1 — Start a temporary PostgreSQL 14 container +### Step 1 — Stop the old all-in-one container + +Before mounting the `surfsense-data` volume into a new container, stop the existing one to prevent two PostgreSQL processes from writing to the same data directory: + +```bash +docker stop surfsense 2>/dev/null || true +``` + +### Step 2 — Start a temporary PostgreSQL 14 container ```bash docker run -d --name surfsense-pg14-temp \ @@ -103,20 +111,20 @@ Wait ~10 seconds, then confirm it is healthy: docker exec surfsense-pg14-temp pg_isready -U surfsense ``` -### Step 2 — Dump the database +### Step 3 — Dump the database ```bash docker exec -e PGPASSWORD=surfsense surfsense-pg14-temp \ pg_dump -U surfsense surfsense > surfsense_backup.sql ``` -### Step 3 — Recover your SECRET\_KEY +### Step 4 — Recover your SECRET\_KEY ```bash docker run --rm -v surfsense-data:/data alpine cat /data/.secret_key ``` -### Step 4 — Set up the new stack +### Step 5 — Set up the new stack ```bash mkdir -p surfsense/scripts @@ -128,9 +136,9 @@ chmod +x surfsense/scripts/init-electric-user.sh cp surfsense/.env.example surfsense/.env ``` -Set `SECRET_KEY` in `surfsense/.env` to the value from Step 3. +Set `SECRET_KEY` in `surfsense/.env` to the value from Step 4. -### Step 5 — Start PostgreSQL 17 and restore +### Step 6 — Start PostgreSQL 17 and restore ```bash cd surfsense @@ -139,13 +147,13 @@ docker compose exec db pg_isready -U surfsense # wait until ready docker compose exec -T db psql -U surfsense -d surfsense < ../surfsense_backup.sql ``` -### Step 6 — Start all services +### Step 7 — Start all services ```bash docker compose up -d ``` -### Step 7 — Clean up +### Step 8 — Clean up ```bash docker stop surfsense-pg14-temp && docker rm surfsense-pg14-temp