-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
91 lines (78 loc) · 3.6 KB
/
Copy path.env.example
File metadata and controls
91 lines (78 loc) · 3.6 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
81
82
83
84
85
86
87
88
89
90
91
# --- auth ---
# Master key for manual API calls. `openssl rand -hex 32`
API_KEY=
SESSION_SIGNING_SECRET=
PUBLIC_BASE_URL=https://ipa.dylib.dev
# Root/recovery password for the dashboard (at https://<PUBLIC_BASE_URL>/) -
# independent from API_KEY so either can be rotated without touching the
# other. Logs in as an implicit admin; normal users should sign in via
# GitHub OAuth below instead. `openssl rand -hex 24`
ADMIN_PASSWORD=
# Persistent decrypted IPA storage. The default is 200 GiB and uses LRU eviction.
ARTIFACT_DIR=/data/artifacts
ARTIFACT_MAX_BYTES=214748364800
GITHUB_OAUTH_CLIENT_ID=
GITHUB_OAUTH_CLIENT_SECRET=
DISCORD_OAUTH_CLIENT_ID=
DISCORD_OAUTH_CLIENT_SECRET=
# Optional - grants configured dashboard roles to anyone who holds a matching role in a Discord
# guild, checked on every Discord login. Needs a bot (separate from the OAuth app above) invited
# to the guild - no privileged intents required, just the token below. Which guild and which
# Discord role maps to which dashboard role are both configured in Settings -> Roles, not here.
DISCORD_BOT_TOKEN=
DISCORD_GUILD_ID=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_WEBHOOK_URL=https://ipa.dylib.dev/v1/stripe/webhook
STRIPE_REGULAR_PRICE_ID=
STRIPE_PRIORITY_PRICE_ID=
STRIPE_API_PRICE_ID=
STRIPE_PRIORITY_API_PRICE_ID=
STRIPE_TAX_CODE=
# --- job lifecycle ---
# How long GET /v1/decrypt holds the connection waiting for the file before
# falling back to a 202 with a status URL to poll instead.
JOB_MAX_WAIT_SECONDS=1800
# How long finished job records are kept around for status polling.
JOB_RETENTION_MINUTES=1440
# --- automated bundle watch -> github dispatch ---
# Leave all four of these blank to disable the scheduler entirely. All of
# these (and POLL_CRON below) are just the initial defaults - they can be
# changed live from the /admin dashboard's Settings tab without a restart.
# App to watch and auto-decrypt on new releases. Also drives the
# TestFlight watch (its numeric App Store ID is resolved automatically
# from this bundle ID) - needs the tfauto tweak on the device for that
# half (see README's "TestFlight builds" section), the App Store half
# works regardless.
WATCH_BUNDLE_ID=com.hammerandchisel.discord
# Repo whose releases/tags (e.g. "v334.0", or "v1.0.0_106191" for a
# TestFlight-sourced build) represent already-published builds.
WATCH_APP_REPO=unbound-app/loader-ios
# Repo that owns the "Remote ipa update" repository_dispatch workflow.
GH_DISPATCH_REPO=your-org/your-repo
# Workflow filename in GH_DISPATCH_REPO, used to find the run repository_dispatch triggers.
GH_WORKFLOW_FILE=remote-ipa-update.yml
# PAT with `repo` + `workflow` scopes (repository_dispatch + reading releases/runs).
GH_TOKEN=
# Cron for the watch loop. Default: every hour at minute 0.
POLL_CRON=0 * * * *
# How often to poll for the dispatched Actions run to appear/finish.
RUN_POLL_INTERVAL_SECONDS=15
# Give up waiting on the Actions run after this long (temp file is still cleaned up).
RUN_POLL_TIMEOUT_MINUTES=30
# Optional Discord-webhook-shaped URL notified on: a decrypt failure that
# looks like an App Store auth issue, and scheduler dispatch success/failure.
# Also editable from the dashboard.
NOTIFY_WEBHOOK_URL=
OUTBOUND_WEBHOOK_SECRET=
QUEUE_SLO_MINUTES=30
# --- email notifications ---
# Leave SMTP_HOST/SMTP_USER/SMTP_PASS blank to disable email notifications
# entirely. When set, users can opt into email alongside push notifications
# from the dashboard's account menu (job completion, device alerts, key
# expiry) - sent to the email address linked via GitHub/Discord OAuth.
SMTP_HOST=
SMTP_PORT=587
SMTP_USER=
SMTP_PASS=
SMTP_FROM=dkrypt <dkrypt@dylib.dev>