commit b5b52d515d4d78842647807773fe1710ec8509a2 Author: stephane.david Date: Fri Dec 26 17:43:55 2025 +0100 First version diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e996a84 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,92 @@ +services: + norish: + image: norishapp/norish:latest + container_name: norish-app + # user: "1000:1000" # Match your host user's UID:GID (run `id` to check), only needed with bind mounts + # The example uses named volume 'norish_data' which handles permissions automatically + restart: always # Required for server restart functionality + ports: + - "3000:3000" + user: "1000:1000" + volumes: + - norish_data:/app/uploads + environment: + # Core settings (required) + AUTH_URL: http://norish.sda.zone + DATABASE_URL: postgres://postgres:norish@db:5432/norish + MASTER_KEY: 3NA734BBUitXp4DGvhq/3pUQL5Ai11DODLP6TW/TSo4= # Generate with: openssl rand -base64 32 + CHROME_WS_ENDPOINT: ws://chrome-headless:3000 + REDIS_URL: redis://redis:6379 + + # OPTIONAL + # NEXT_PUBLIC_LOG_LEVEL: info # trace, debug, info, warn, error, fatal (default: info in prod, debug in dev) + # TRUSTED_ORIGINS:http://192.168.1.100:3000,https://norish.example.com # Additional trusted origins, comma separated. Useful when behind a proxy or using multiple domains. + # YT_DLP_BIN_DIR: # Custom folder path for `yt-dlp` (default: /app/bin) + + # ───────────────────────────────────────────────────────────────────────── + # FIRST USER SETUP + # ───────────────────────────────────────────────────────────────────────── + # On first startup, configure ONE auth provider below to create your admin account. + # After first login, use Settings → Admin to configure additional providers, + # AI settings, video parsing, and all other options. + + # Option 1= Password auth - basic auth with email/password + # If not set defaults to disabled if OIDC or OAuth is configured. + # Defaults to true if no other auth providers are configured. + PASSWORD_AUTH_ENABLED: true + + # Option 2: OIDC (Authentik, Keycloak, PocketID, etc.) + # OIDC_NAME: NoraId + # OIDC_ISSUER: https://nora.example.com + # OIDC_CLIENT_ID: + # OIDC_CLIENT_SECRET: + # OIDC_WELLKNOWN: https://auth.example.com/.well-known/openid-configuration + # Wellknown is optional: By default the wellknown URL is derived from the issuer by appending /.well-known/openid-configuration + + # Option 3: GitHub OAuth (uncomment and remove OIDC above) + # GITHUB_CLIENT_ID: + # GITHUB_CLIENT_SECRET: + + # Option 4: Google OAuth (uncomment and remove OIDC above) + # GOOGLE_CLIENT_ID: + # GOOGLE_CLIENT_SECRET: + 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 + + # Chrome headless + chrome-headless: + image: zenika/alpine-chrome:latest + container_name: chrome-headless + restart: unless-stopped + command: + - "--no-sandbox" + - "--disable-gpu" + - "--disable-dev-shm-usage" + - "--remote-debugging-address=0.0.0.0" + - "--remote-debugging-port=3000" + - "--headless" + + # Redis for real-time events and job queues + redis: + image: redis:8.4.0 + container_name: norish-redis + restart: unless-stopped + volumes: + - redis_data:/data + +volumes: + db_data: + norish_data: + redis_data: \ No newline at end of file