Skip to main content
Version: 0.21.0-beta

Quick start

The fastest way to run Norish is Docker Compose. Save the file below as docker-compose.yml and run:

docker compose up -d

Then open http://localhost:3000. The first user to sign in becomes the server owner and admin — see First run below.

docker-compose.yml
services:
norish:
image: norishapp/norish:latest
container_name: norish-app
restart: always
ports:
- "3000:3000"
user: "1000:1000"
volumes:
- norish_data:/app/uploads
environment:
AUTH_URL: http://localhost:3000
DATABASE_URL: postgres://postgres:norish@db:5432/norish
MASTER_KEY: REPLACE_WITH_A_RANDOM_KEY
OBSCURA_ENDPOINT: ws://obscura:9222
REDIS_URL: redis://redis:6379
UPLOADS_DIR: /app/uploads
depends_on:
- db
- redis

db:
image: postgres:17-alpine
container_name: norish-db
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: norish
POSTGRES_DB: norish
volumes:
- db_data:/var/lib/postgresql/data

# Renders recipe pages for URL imports
obscura:
image: norishapp/obscura:0.2.0-norish.1
container_name: norish-obscura
restart: unless-stopped

redis:
image: redis:8.4.0
container_name: norish-redis
restart: unless-stopped
volumes:
- redis_data:/data

volumes:
db_data:
norish_data:
redis_data:
Generating a MASTER_KEY

The compose above already includes a random MASTER_KEY, freshly generated in your browser each time you load this page (it is never sent anywhere). To create your own instead, run:

openssl rand -base64 32

Keep it secret and stable — it derives the encryption keys, so changing it later invalidates previously encrypted data.

What's in the stack

ServiceWhy it's needed
norishThe Norish app server.
dbPostgreSQL — your recipes, groceries, and planning data.
redisReal-time events and background jobs.
obscuraRenders recipe pages so URL imports can read them.

First run

The first user to sign in becomes the server owner and server admin. After that first sign-in, user registration is disabled automatically and ongoing settings are managed in Settings → Admin.

Norish includes email & password sign-in out of the box, so you can create your owner account right away. You can also use OIDC, GitHub, or Google — see Authentication.

Next steps

Production template

A fuller, commented template lives in the repository at docker-compose.example.yml.