diff --git a/CHANGELOG.md b/CHANGELOG.md index b5e7c15e4..95d0a94b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index f605cbc78..4a1a137ee 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/self-hosting/getting-started.md b/docs/self-hosting/getting-started.md index c602b9c12..fd7570fd2 100644 --- a/docs/self-hosting/getting-started.md +++ b/docs/self-hosting/getting-started.md @@ -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