Skip to content

docs(deployment): single-container install page - #8

Open
Luca-Timo wants to merge 1 commit into
PicPeak:mainfrom
Luca-Timo:docs/single-container
Open

docs(deployment): single-container install page#8
Luca-Timo wants to merge 1 commit into
PicPeak:mainfrom
Luca-Timo:docs/single-container

Conversation

@Luca-Timo

Copy link
Copy Markdown
Contributor

Documents the all-in-one image from PicPeak/picpeak#1042. Adds app/deployment/single-container/page.mdx, a nav entry in app/deployment/_meta.js, and a bullet on the deployment index.

Covers: the one-line docker run, when to choose it over the compose stack (and when not to), first login with the setup token, the volume layout, a minimal env reference, the external-Postgres variant, TLS, NAS notes, updating, and the limits.

npm run build passes; the page prerenders at /deployment/single-container (77/77 static pages).

Please read before merging

The volume paths in this page depend on which image lands. There are currently two open PRs for #1042 — PicPeak/picpeak#1067 and PicPeak/picpeak#1068 — and they use different layouts. This page documents #1068's (/app/data + /app/storage, two mounts). #1067 uses a single /data mount with /data/db, /data/storage, /data/logs, which is the nicer design and the one I'd expect to win. If #1067 merges, the volume table, all three docker run blocks and the SETUP_TOKEN path need updating — happy to push that change here, just say the word rather than merging this as-is.

Everything else on the page (the SQLite-vs-Postgres guidance, the upgrade path, TLS, NAS warnings, limits) is layout-independent.

Two things worth acting on separately

  • The wizard's token hint is wrong for this install method. frontend/src/pages/SetupPage.tsx:96 hardcodes docker compose exec backend cat /app/data/SETUP_TOKEN, repeated in en.json and de.json. There's no compose project and no backend service in a single-container install, so the first screen a new user sees offers a command that fails. The page works around it with an inline callout, but the app should probably be deployment-aware here. This affects #1067 identically.
  • The SMB/CIFS warning is from a real production failure, not caution: the boot-time chown over an SMB-mounted storage path hangs startup and leaves the container permanently unhealthy with no login.

Verification

Written against a container built from the #1068 branch and actually run — first-run wizard through to a live dashboard with System Health "Healthy", then destroyed and recreated against the same volumes to confirm the persistence claims (admin preserved, no migrations re-run). The external-Postgres variant was booted against a real postgres:16-alpine. linux/arm64 only.

Covers the all-in-one image (PicPeak/picpeak#1042): the one-line
`docker run`, when to pick it over the compose stack and when not to,
first-login with the setup token, the volume layout, the minimal env
reference, the external-Postgres variant, TLS, NAS notes, updating, and
the limits.

Written against a container built from the PR branch and run end to end
— first-run wizard through to a live dashboard, then destroyed and
recreated against the same volumes to confirm the persistence claims.

Two things the page says that are worth flagging for review:

- The wizard's own token hint prints a `docker compose exec backend …`
  command, which cannot work in a single-container install. The page
  calls that out inline rather than repeating it. The hint itself is
  hardcoded in the app (frontend/src/pages/SetupPage.tsx) and should
  probably be fixed there too.
- The SMB/CIFS warning for the storage volume comes from a real
  production failure: the boot-time chown over an SMB mount hangs
  startup and leaves the container permanently unhealthy.
Luca-Timo added a commit to Luca-Timo/picpeak that referenced this pull request Aug 16, 2026
The README had no mention of the all-in-one image, so the only way to
discover it was reading the workflow file. Adds a Quick Start subsection
with the one-line `docker run` and the `docker exec … cat SETUP_TOKEN`
step, plus a row in the documentation table.

Deliberately does not sell it as the default: the note says the compose
stack is still the right choice for anything busier, gives the reason
(SQLite takes one writer at a time), and points at the `.picpeak`
restore as the way out, so nobody picks it and then finds themselves
stuck. Full details live at docs.picpeak.app/deployment/single-container
(PicPeak/docs#8).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant