docs: describe the image as the official Node 22 Debian slim image

The unreleased changelog entry said the image moved to Wolfi. It now
names the official Node image, why (Raspberry Pi 4 rendering, Node
security releases arriving with the image), that the image carries no
package manager, and that psql is no longer in the app image. The README
and the getting-started prerequisites say the same.
This commit is contained in:
Marc-André Bombeck committed 2026-11-04 13:14:04 +01:00
1 parent 09d932ce2a
commit e547a77683
3 files changed
+17 -12

No files matched your search

+14 -10
View File
@@ -51,16 +51,20 @@
### Changed
- **The image runs on Wolfi instead of Alpine.** The runtime is glibc now,
so the native page renderer, password hashing and the Prisma engine run
their glibc builds. The published arm64 image renders PDF pages on a
Raspberry Pi 4 again, where the Alpine build of the renderer needs CPU
features an ARMv8.0 core lacks. The compressed image is a little smaller
than before. A health check that still calls `wget`, from a compose
file copied before this release or a platform template, keeps working:
the image carries a small `wget` that answers health checks and nothing
else. The current `docker-compose.yml` probes with Node directly, and
that is the one to switch to. (#1311)
- **The image runs on the official Node 22 image (Debian slim) instead of
Alpine.** The runtime is glibc now, so the native page renderer,
password hashing and the Prisma engine run their glibc builds. The
published arm64 image renders PDF pages on a Raspberry Pi 4 again, where
the Alpine build of the renderer needs CPU features an ARMv8.0 core
lacks. Node security releases now reach the image with the official
Node image, usually within days. The image carries no package manager:
npm, npx, corepack and yarn are removed. `pg_dump` and `pg_restore` are
PostgreSQL 18.6, the bundled database's version; `psql` is no longer in
the app image, so run it in the `db` container. A health check that
still calls `wget`, from a compose file copied before this release or a
platform template, keeps working: the image carries a small `wget` that
answers health checks and nothing else. The current `docker-compose.yml`
probes with Node directly, and that is the one to switch to. (#1311)
- **The app connects to the database with less power.** On Postgres 17 or
later, with a database user that may create roles (the bundled compose
file's user may), the app and the worker now connect as a role of their
+1 -1
View File
@@ -105,7 +105,7 @@ The App Store listing carries a small price, which exists to cover Apple's yearl
## Tech stack
Next.js 16 (App Router, React Server Components), TypeScript strict, PostgreSQL 18 with Prisma, pg-boss for jobs, Tailwind CSS 4 + shadcn/ui, Recharts, WebAuthn passkeys, Vitest + Playwright, multi-stage glibc Docker image (Debian build, Wolfi runtime). The OpenAPI 3.1 contract for native clients is generated from the Zod schemas at [`docs/api/openapi.yaml`](docs/api/openapi.yaml).
Next.js 16 (App Router, React Server Components), TypeScript strict, PostgreSQL 18 with Prisma, pg-boss for jobs, Tailwind CSS 4 + shadcn/ui, Recharts, WebAuthn passkeys, Vitest + Playwright, multi-stage Docker image on the official Node 22 Debian slim base. The OpenAPI 3.1 contract for native clients is generated from the Zod schemas at [`docs/api/openapi.yaml`](docs/api/openapi.yaml).
## Documentation
+2 -1
View File
@@ -10,7 +10,8 @@ already installed, longer if a TLS-fronted public hostname is in scope
- **Docker 24+ with Compose v2.** The bundled `docker-compose.yml`
pulls a multi-arch image from GitHub Container Registry (linux/amd64
and linux/arm64), so a Raspberry Pi 4 or 5 or an x86 VPS all work
unchanged. The image runs on glibc (a Wolfi base). Document thumbnails and
unchanged. The image is built on the official Node 22 image (Debian
slim, glibc). Document thumbnails and
scanned-PDF rendering use a native renderer that runs on every arm64
board, the Pi 4 included, and on x86-64 CPUs with AVX2; on an older x86
CPU (Celeron/Atom-class NAS chips) it switches itself off and those two