Files
picpeak/docs/_to-migrate/first-run-setup.md
T
LucaandLuca-Timo ddebd50d3f docs: slim README to a lean router, stage deep content for docs-site migration (#1001)
Phase 1 of the README slim / docs-migration plan in #1000.

README goes from 577 to ~191 lines: hero, one Quick Start, a Documentation
index, comparison table, tech stack and a table of contents. The deep inline
prose moves into a temporary docs/_to-migrate/ staging folder (webhooks,
storage backends, first-run setup, system requirements, roadmap) so README
links keep resolving until the docs-site pages are live.

Existing docs/*.md referenced by app code are deliberately left in place —
crm-disclaimers.md (frontend TSX, i18n, a backend route and migration),
fonts.md (server.js), accounting-inbound-invoices.md (Dockerfile) and
migration-to-org.md (UpdateNotification.tsx, MigrationBanner.tsx). Moving them
is a separate, code-touching change.

Verified before merge: merges cleanly against main with no conflicts; all 14
in-repo links resolve in the merged tree; no docs file is deleted or renamed;
and the registry-move notice from #995 survives the rewrite in condensed form,
keeping 'still responds but its tags are frozen at 2026-05-27' plus the
migration-to-org.md link. The fuller symptom explanation remains in that doc,
which the README links to.

Follow-up per #1000: port docs/_to-migrate/* into docs.picpeak.app, then flip
the README links and delete the staging folder.

Co-authored-by: Luca-Timo <[email protected]>
2026-08-10 08:16:13 +02:00

1.9 KiB

First run — create your admin account

On first start with no ADMIN_PASSWORD set, PicPeak has no admin account yet and greets you with an in-browser setup screen — no credentials in .env:

  1. Open http://localhost:3000/admin — you'll be redirected to /setup.
  2. Read the one-time setup token from the 0600 file the backend writes it to (it is deliberately not printed to the logs — that would leave a live bootstrap credential in docker logs):
    docker compose exec backend cat /app/data/SETUP_TOKEN
    
    It is bind-mounted, so sudo cat data/SETUP_TOKEN on the host works too. Only if that file could not be written does the backend fall back to logging the token (docker compose logs backend | grep -i "setup token").
  3. Paste the token, set your admin email + password, and you're in. The token is single-use, and the setup screen closes permanently once an admin exists.

Prefer the old behaviour? Set ADMIN_PASSWORD in .env and PicPeak auto-creates the admin on first boot instead (credentials written to data/ADMIN_CREDENTIALS.txt).

Docker file permissions

  • The backend container starts as root, chowns bind-mounted host directories (./storage, ./data, ./logs) to UID 1001 (nodejs), then drops privileges via su-exec before running the app. No host-side setup needed for fresh installs.
  • If you pin user: in a compose override (e.g. to map a specific host UID), the self-chown is skipped and you must pre-chown the host directories to that UID — see docs.picpeak.app/deployment/docker#permissions.

ARM64 (aarch64) systems

Pre-built images include native linux/arm64, no platform flags or emulation needed. If you're on an older image tag that's still amd64-only, see docker-compose.amd64.override.yml for a transitional fallback.