-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
71 lines (61 loc) · 3.53 KB
/
Copy path.env.example
File metadata and controls
71 lines (61 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# meith-board — environment.
#
# Copy to .env.local for development. On the server this is `.env` beside the
# compose file; nothing here belongs in git.
# ─── Required ────────────────────────────────────────────────────────────────
# Your Postgres connection string.
#
# If it is a managed database that offers a TRANSACTION-MODE POOLER string, use
# that rather than the direct one — Neon, Supabase and their kind hand out both,
# and on the direct string a board works in testing and starts refusing
# connections under the first real traffic, with an error that names the
# database rather than the cause. Your own Postgres, with a fixed number of
# processes in front of it, does not need one.
DATABASE_URL=
# The other half of that pair: the DIRECT (non-pooler) string, used only by
# `community migrate` and `community backup`. Migrations hold a session-level
# advisory lock so that two deploys landing together queue instead of both
# applying the same migration, and a transaction-mode pooler cannot hold that
# lock: it takes the connection back the moment the lock statement ends, which
# leaves the lock on a backend another client gets. Set both and each gets the
# connection it needs; set only DATABASE_URL and migrations use it too, which is
# right for a Postgres you run yourself.
# DIRECT_DATABASE_URL=
# Session and token signing. No default, deliberately: a shipped default is a
# board every reader of the source can sign a session for.
#
# node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"
AUTH_SECRET=
# The shared secret the tick caller presents to GET /api/system/tick. Generate
# it the same way. Without it the tick is unauthenticated, and the tick is how
# bans expire and digests send.
TICK_SECRET=
# ─── Optional ────────────────────────────────────────────────────────────────
# Derived, and left commented out on purpose: with no DATABASE_URL the board
# serves `fixture` — deterministic in-memory sample data, no database needed,
# which is what `npm run build` uses and what `npm run dev` falls back to — and
# with one it serves `postgres`. Setting it to postgres while DATABASE_URL is
# still blank is refused at boot, so uncomment it only to override the
# derivation.
# DATA_SOURCE=postgres
# Absolute, no trailing slash. Used in mail, feeds and canonical URLs — every
# place a relative URL cannot work because there is no request to be relative to.
#
# Optional: leave it blank and the installer asks, prefilled from the address you
# load /install at, and stores the answer on the board where the settings screen
# can change it without a redeploy. Set it here and it wins outright.
APP_URL=
# Mail. Leave these alone and the installer asks for mail on first run, storing
# it on the board — a settings screen with a test button, no redeploy. Set
# MAIL_DRIVER here instead and the environment wins outright, which is what you
# want if the credential must not live in the database.
#
# The default sends NOTHING: each message goes to the server log, so password
# reset fails silently until mail is configured one way or the other.
# MAIL_DRIVER=smtp
# MAIL_SMTP_HOST=smtp.example.com
# MAIL_SMTP_PORT=465
# MAIL_SMTP_SECURITY=tls # tls (465) | starttls (587) | none
# MAIL_SMTP_USERNAME=
# MAIL_SMTP_PASSWORD=
# MAIL_FROM=noreply@yourdomain.com