Rezepte

Docker

Run the Rezepte image with Docker Compose or plain docker run

The image is published at ghcr.io/s-frei/rezepte for linux/amd64 and linux/arm64. It listens on port 8060 and stores everything — the SQLite database and uploaded photos — under /data, owned by UID 65532 (the distroless nonroot user the container runs as).

This is docker-compose.yaml from the repository, rendered from that file itself, so it cannot drift from what Rezepte is actually run with. Download it instead of copying if you prefer — it carries a few extra comments meant for people working on Rezepte, and nothing else.

docker-compose.yaml
services:
  rezepte:
    image: ghcr.io/s-frei/rezepte:latest
    restart: unless-stopped
    volumes:
      - rezepte-data:/data
    environment:
      # Read on the first start, to create the instance owner, and after that
      # only by --reset-superadmin-password.
      REZEPTE_ADMIN_PASSWORD: change-me-now
    ports:
      - "8060:8060"

volumes:
  rezepte-data:
docker compose up -d

Image tags

latest is the newest stable release. Every version is listed on the GitHub releases page, and every image tag on the package page; use one in place of latest to run that version.

Bind mounts

The container runs as the nonroot user (UID 65532), so a bind-mounted ./data directory must be writable by that UID before the first start:

mkdir -p data
chown 65532:65532 data

A named volume (as in the compose file above) does not need this — Docker creates it already owned by the container's user.

Updating

docker compose pull
docker compose up -d

Migrations run automatically the next time the container starts, and curl -s http://localhost:8060/healthz reports the version now running; see Updates.

Demo mode

Start the image with sample data instead of mounting real data:

docker run --rm -p 8060:8060 ghcr.io/s-frei/rezepte:latest --demo

Open http://localhost:8060 and log in as demo / demo1234. Without a volume nothing persists — the sample recipes and photos disappear when the container stops.

On this page