-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
117 lines (100 loc) · 4.97 KB
/
Copy path.env.example
File metadata and controls
117 lines (100 loc) · 4.97 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# rssamplifier.com — copy to .env and fill in.
# Team copy lives in logicsrc: `logicsrc teams pull profullstack rssamplifier-com prod`
# Turso / libSQL. A file: URL needs no auth token, which is how the tests and
# local development run without a Turso account:
# TURSO_DATABASE_URL=file:./local.db
TURSO_DATABASE_URL=libsql://YOUR-DB.turso.io
TURSO_AUTH_TOKEN=
# Maximum statements from queued callers folded into one remote transaction.
# Disabled by default: production's throttled primary timed out when five
# otherwise-valid first crawls shared a transaction. Raise only after measuring
# the provider path with representative first-crawl statements.
TURSO_WRITE_GROUP_STATEMENTS=1
# Recovery mode for a large first-crawl backlog. Turso's explicit transaction
# path can be much slower than autocommit writes on a saturated database. The
# first switch uses two serialized autocommits per feed; the second reserves
# writes for feeds/posts until the backlog is under control.
TURSO_CRAWL_AUTOCOMMIT=0
CRAWL_AUXILIARY_WRITES=1
CRAWL_CATCHUP=0
# Public origin, used for canonical URLs, OPML, llms.txt and JSON-LD.
SITE_URL=https://rssamplifier.com
# Salt for HMAC-hashing submitter IPs in the audit log. Generate with:
# node -e "console.log(crypto.randomUUID())"
# Leave unset to disable IP hashing entirely rather than fall back to a
# predictable digest.
IP_HASH_SALT=
# Poller daemon
POLL_INTERVAL_SECONDS=60
POLL_BATCH_SIZE=25
# Looking up what each feed offers as its picture: its site's og:image, fetched
# and measured. Feeds per pass and how often a pass runs. Small and unhurried on
# purpose — it is speculative work against other people's servers, every feed is
# answered exactly once, and nothing on the site is waiting for it. Set the
# switch to 0 to pause the work without changing its tuning.
CARD_BACKFILL=1
CARD_BACKFILL_BATCH=8
CARD_BACKFILL_SECONDS=20
# Nonessential maintenance can be paused while a large first-crawl backlog owns
# the database write path. The work is resumable when these are switched on.
CLUSTER_BACKFILL=1
# --------------------------------------------------------------------- X / Twitter
# X publishes no feeds, so posts are collected through a provider and mirrored
# at /x/<handle>. Off by default: with this unset nothing is collected, existing
# X feeds keep serving what they hold, and no source is marked unhealthy for it.
X_ENABLED=false
# Failover order. The provider never appears in a public URL, so this can change
# under a live subscriber without their reader noticing.
X_PRIMARY_PROVIDER=rsshub
X_FALLBACK_PROVIDERS=teapot,official
# Self-hosted, alongside the app, and not exposed publicly. A provider whose
# base URL is unset is skipped rather than guessed at.
RSSHUB_BASE_URL=
RSSHUB_ACCESS_KEY=
TEAPOT_BASE_URL=
# The official API: the only provider that costs money per request, hence the
# caps. 0 means unlimited.
X_API_BEARER_TOKEN=
X_API_DAILY_READS=0
X_API_MONTHLY_READS=0
X_API_MAX_RPM=0
# Logged-in X sessions for the unofficial providers, as JSON:
# [{"id":"x-1","authToken":"...","ct0":"..."}]
#
# These are a full login to an X account - whoever holds them can post as it and
# change its password. They live here rather than in a table so that a leaked
# database dump carries none of them; x_sessions holds health state only. Use
# dedicated accounts, and separate ones for production and development.
#
# The positional pair X_AUTH_TOKENS / X_CT0_TOKENS also works and is a trap:
# the lists are matched by index, so removing one dead account from the middle
# of the first and forgetting the second pairs every later token with the wrong
# cookie. Prefer the JSON form, which cannot express that.
X_SESSIONS=
X_FETCH_TIMEOUT_MS=15000
X_SESSION_COOLDOWN_SECONDS=900
# ------------------------------------------------------------------- Instagram
# Collected through the same embedded RSSHub daemon as X, so it needs no base
# URL of its own — only a logged-in Instagram cookie on the RSSHub side.
# Accounts and hashtags only; stories expire and are not collected.
IG_COOKIE=
# -------------------------------------------------------------------- Facebook
# Facebook publishes no feed and shows nothing without a login, so a Page is
# read with a logged-in session off mbasic.facebook.com - the same bargain as
# the X and Instagram cookies above, not a different one.
#
# A normal browser session, copied from devtools. c_user and xs are the two that
# matter; extra cookies are harmless.
#
# FB_COOKIE='c_user=...; xs=...'
#
# This is a login to somebody's Facebook account. Vault, not a service env, and
# never a database column. Use a dedicated account: expect it to be challenged,
# and expect /fb/ to be the least dependable namespace on the site.
FB_COOKIE=
# Optional, and almost never applicable. Meta's Graph API returns a Page's posts
# only to somebody who ADMINISTERS that Page; where a token exists it is used in
# preference to scraping, because a supported API beats guessing at markup.
#
# FB_PAGE_TOKENS=[{"page":"MyPage","token":"EAA..."}]
FB_PAGE_TOKENS=