| [7bc636b] | 1 | NODE_ENV=development
|
|---|
| 2 | PORT=3000
|
|---|
| [09ee2bd] | 3 | # Secret used to sign login-session cookies. Leave EMPTY to auto-generate a strong
|
|---|
| 4 | # one on first start (saved to storage/.session-secret, stays stable across
|
|---|
| 5 | # restarts/updates). Or set your own: openssl rand -hex 32
|
|---|
| 6 | SESSION_SECRET=
|
|---|
| [7bc636b] | 7 | DATABASE_PATH=./storage/database.sqlite
|
|---|
| 8 | MEDIA_PATH=./storage/media
|
|---|
| [c80e78b] | 9 |
|
|---|
| [09ee2bd] | 10 | # Canonical public URL of this site (scheme + host, no trailing slash), e.g.
|
|---|
| 11 | # https://yourdomain.com . Used to build correct links in emails (password reset)
|
|---|
| 12 | # and OAuth redirects instead of trusting request headers (anti-spoofing).
|
|---|
| 13 | # Optional: leave empty and it falls back to the request host (fine for local/dev);
|
|---|
| 14 | # set it for production so email/login links point at the right place.
|
|---|
| 15 | PUBLIC_BASE_URL=
|
|---|
| [c80e78b] | 16 |
|
|---|
| [bb42dfb] | 17 | # ── Administrator ───────────────────────────────────────────────────
|
|---|
| 18 | # The admin logs in with username + password. On first start you create your
|
|---|
| 19 | # admin account via /auth/register; after that, registration is closed.
|
|---|
| 20 | # Forgot your password? -> "Forgot password" (email, see SMTP below) or always:
|
|---|
| 21 | # `npm run reset-admin` on the server.
|
|---|
| [9e27d64] | 22 |
|
|---|
| [bb42dfb] | 23 | # ── Google login for LISTENERS (optional) ───────────────────────────
|
|---|
| 24 | # Want listeners to sign in with Google to comment? Create your OWN Google OAuth
|
|---|
| 25 | # client (Google Cloud Console -> Credentials -> OAuth client ID -> "Web
|
|---|
| 26 | # application") and fill it in below. Your own client = your own Google Cloud
|
|---|
| 27 | # project; this site isn't centrally tied to anything. Not set? Then there's
|
|---|
| 28 | # simply no Google button. Google login NEVER grants admin rights (commenting only).
|
|---|
| 29 | # GOOGLE_REDIRECT_URI = <your domain>/auth/google/callback (set it exactly in the client)
|
|---|
| [9e27d64] | 30 | GOOGLE_CLIENT_ID=
|
|---|
| 31 | GOOGLE_CLIENT_SECRET=
|
|---|
| 32 | GOOGLE_REDIRECT_URI=https://example.com/auth/google/callback
|
|---|
| 33 |
|
|---|
| [bb42dfb] | 34 | # ── Email (optional) — for "forgot password" reset links ────────────
|
|---|
| 35 | # Not set? Then reset only works via `npm run reset-admin` on the server.
|
|---|
| [9e27d64] | 36 | SMTP_HOST=
|
|---|
| 37 | SMTP_PORT=587
|
|---|
| 38 | SMTP_USER=
|
|---|
| 39 | SMTP_PASS=
|
|---|
| 40 | SMTP_FROM=
|
|---|
| [cb01666] | 41 |
|
|---|
| [bb42dfb] | 42 | # ── Lite mode (optional) ────────────────────────────────────────────
|
|---|
| 43 | # Set to "off" to disable the whole audio feature (no built-in music hosting/
|
|---|
| 44 | # player, no ffmpeg needed). Klonkt then runs as a lightweight blog/photo/EPK
|
|---|
| 45 | # site, even on an environment without ffmpeg. Hub and Circles keep working.
|
|---|
| 46 | # External embeds (YouTube/SoundCloud/Spotify) keep working too.
|
|---|
| [cb01666] | 47 | KLONKT_AUDIO=on
|
|---|