-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy path.env.example
More file actions
80 lines (70 loc) · 3.79 KB
/
Copy path.env.example
File metadata and controls
80 lines (70 loc) · 3.79 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
71
72
73
74
75
76
77
78
79
80
# Copy to .env and fill in values for local development.
# Never commit .env — it is gitignored.
PORT=3000
# BASE_URL — the identity host. Drives OAuth callbacks, the admin UI, and team
# invite links. Set this to your domain (e.g. https://book.acme.com); your team
# logs in here and your Google/Microsoft OAuth redirect URIs must point at it.
# If you move to a different or custom domain LATER (e.g. pointing book.acme.com
# at a host that was previously reachable only at its provider-assigned default
# domain), update this to match and redeploy — Google/Microsoft OAuth redirect
# URIs are always computed from BASE_URL, not from whatever domain a browser is
# actually using. A stale BASE_URL after a domain change is a common cause of
# "redirect_uri_mismatch" errors; Settings → Google OAuth will warn you if this
# happens.
BASE_URL=http://localhost:3000
# PUBLIC_BASE_URL — the booker-facing host used in booking-page links and
# outbound emails. Leave unset for a single-domain deploy (it inherits BASE_URL).
# Only set it if you want public booking links on a different host than admin.
# PUBLIC_BASE_URL=
DATABASE_URL=sqlite://./data/calnode.db
# CALNODE_ENCRYPTION_KEY — the platform secret that unlocks the database key
# vault (envelope encryption). Any non-empty string works; a strong random value
# is recommended: openssl rand -hex 32
# REQUIRED in production (https BASE_URL). The data key itself is stored wrapped
# inside the database, so this secret can be rotated with `calnode rotate-key`.
CALNODE_ENCRYPTION_KEY=
# CALNODE_RECOVERY_SECRET — optional break-glass escrow secret. When set, a
# recovery-wrapped copy of the data key is stored so `calnode recover-key` can
# re-establish access if CALNODE_ENCRYPTION_KEY is ever lost. Keep it offline.
# CALNODE_RECOVERY_SECRET=
# Google OAuth — used for sign-in and Google Calendar integration.
# Create credentials at https://console.cloud.google.com/apis/credentials
# Redirect URIs to add:
# http://localhost:3000/v1/auth/callback
# http://localhost:3000/v1/calendar/callback
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# Microsoft 365 / Outlook OAuth — used for sign-in and Microsoft calendar
# integration. Unlike Google there is no in-app settings page for this yet, so
# these must be set as environment variables. Create credentials in the Azure /
# Entra admin center (App registrations → New registration), then add a Web
# platform with these redirect URIs:
# http://localhost:3000/v1/auth/microsoft/callback
# http://localhost:3000/v1/calendar/callback
# (the calendar callback is shared with Google — one shared handler routes by
# provider). MICROSOFT_TENANT defaults to "common" so both work/school and
# personal Microsoft accounts can connect; only change it to restrict sign-in
# to a single organisation's tenant.
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
MICROSOFT_TENANT=common
# SMTP (optional — emails are skipped if not set)
EMAIL_SMTP_HOST=
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=
EMAIL_SMTP_PASS=
EMAIL_FROM_ADDRESS=bookings@localhost
EMAIL_FROM_NAME=Calnode
# Object storage (Litestream) — optional, but required for two things: continuous
# SQLite backups, and meeting recordings (Settings → Storage; the "Record" button
# only appears once this is configured AND recordings are turned on there). Both
# share one S3-compatible bucket. No in-app form for this — set as environment
# variables/secrets with your hosting provider and redeploy.
# LITESTREAM_REPLICA_URL=s3://your-bucket-name/calnode
# LITESTREAM_ACCESS_KEY_ID=
# LITESTREAM_SECRET_ACCESS_KEY=
# LITESTREAM_ENDPOINT is required for any provider other than AWS S3 (Cloudflare
# R2, Backblaze B2, MinIO, etc.) — set it to that provider's S3-compatible endpoint.
# LITESTREAM_ENDPOINT=
# LITESTREAM_REGION is optional — only some providers need it.
# LITESTREAM_REGION=