-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompose.yaml
More file actions
81 lines (80 loc) · 3.68 KB
/
Copy pathcompose.yaml
File metadata and controls
81 lines (80 loc) · 3.68 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
services:
feedfold:
build:
context: .
args:
FEEDFOLD_BASE_PATH: "${FEEDFOLD_BASE_PATH:-/}"
image: feedfold:local
restart: unless-stopped
init: true
read_only: true
cap_drop:
- ALL
cap_add:
- SYS_CHROOT
security_opt:
- no-new-privileges:true
- seccomp=./.docker/playwright-seccomp.json
environment:
NODE_ENV: production
HOST: 0.0.0.0
PORT: "3000"
DATABASE_PATH: /data/feedfold.db
POLL_INTERVAL_MINUTES: "${POLL_INTERVAL_MINUTES:-20}"
FEED_FETCH_TIMEOUT_MS: "${FEED_FETCH_TIMEOUT_MS:-15000}"
NITTER_BASE_URLS: "${NITTER_BASE_URLS:-}"
WEB_FEED_LOAD_TIMEOUT_MS: "${WEB_FEED_LOAD_TIMEOUT_MS:-30000}"
ARTICLE_FETCH_TIMEOUT_MS: "${ARTICLE_FETCH_TIMEOUT_MS:-20000}"
AI_REQUEST_TIMEOUT_MS: "${AI_REQUEST_TIMEOUT_MS:-60000}"
AI_CREDENTIALS_KEY: "${AI_CREDENTIALS_KEY:-}"
FEEDFOLD_DEPLOYMENT_MODE: "${FEEDFOLD_DEPLOYMENT_MODE:-private}"
FEEDFOLD_PUBLIC_ORIGIN: "${FEEDFOLD_PUBLIC_ORIGIN:-}"
FEEDFOLD_MAX_ACCOUNTS: "${FEEDFOLD_MAX_ACCOUNTS:-}"
FEEDFOLD_RECENT_AUTH_SECONDS: "${FEEDFOLD_RECENT_AUTH_SECONDS:-300}"
FEEDFOLD_REGISTRATION_IP_LIMIT: "${FEEDFOLD_REGISTRATION_IP_LIMIT:-10}"
FEEDFOLD_REGISTRATION_GLOBAL_LIMIT: "${FEEDFOLD_REGISTRATION_GLOBAL_LIMIT:-100}"
FEEDFOLD_REGISTRATION_COOLDOWN_MINUTES: "${FEEDFOLD_REGISTRATION_COOLDOWN_MINUTES:-60}"
FEEDFOLD_LOGIN_IP_LIMIT: "${FEEDFOLD_LOGIN_IP_LIMIT:-50}"
FEEDFOLD_LOGIN_ACCOUNT_LIMIT: "${FEEDFOLD_LOGIN_ACCOUNT_LIMIT:-10}"
FEEDFOLD_LOGIN_COOLDOWN_MINUTES: "${FEEDFOLD_LOGIN_COOLDOWN_MINUTES:-15}"
FEEDFOLD_STEP_UP_LIMIT: "${FEEDFOLD_STEP_UP_LIMIT:-10}"
FEEDFOLD_STEP_UP_COOLDOWN_MINUTES: "${FEEDFOLD_STEP_UP_COOLDOWN_MINUTES:-15}"
FEEDFOLD_QUOTA_FEED_DISCOVERIES_PER_DAY: "${FEEDFOLD_QUOTA_FEED_DISCOVERIES_PER_DAY:-100}"
FEEDFOLD_QUOTA_WEB_ANALYSES_PER_DAY: "${FEEDFOLD_QUOTA_WEB_ANALYSES_PER_DAY:-20}"
FEEDFOLD_QUOTA_CHROMIUM_CONCURRENT: "${FEEDFOLD_QUOTA_CHROMIUM_CONCURRENT:-2}"
FEEDFOLD_QUOTA_ARTICLE_EXTRACTIONS_PER_DAY: "${FEEDFOLD_QUOTA_ARTICLE_EXTRACTIONS_PER_DAY:-200}"
FEEDFOLD_QUOTA_ARTICLE_EXTRACTIONS_CONCURRENT: "${FEEDFOLD_QUOTA_ARTICLE_EXTRACTIONS_CONCURRENT:-4}"
FEEDFOLD_QUOTA_MEDIA_PROXY_REQUESTS_PER_DAY: "${FEEDFOLD_QUOTA_MEDIA_PROXY_REQUESTS_PER_DAY:-1000}"
FEEDFOLD_QUOTA_OPML_UPLOAD_BYTES: "${FEEDFOLD_QUOTA_OPML_UPLOAD_BYTES:-1048576}"
FEEDFOLD_QUOTA_OPML_FEEDS_PER_IMPORT: "${FEEDFOLD_QUOTA_OPML_FEEDS_PER_IMPORT:-300}"
FEEDFOLD_QUOTA_ARTICLES_PER_ACCOUNT: "${FEEDFOLD_QUOTA_ARTICLES_PER_ACCOUNT:-50000}"
FEEDFOLD_QUOTA_STORED_BYTES_PER_ACCOUNT: "${FEEDFOLD_QUOTA_STORED_BYTES_PER_ACCOUNT:-536870912}"
FEEDFOLD_QUOTA_OUTBOUND_REQUESTS_CONCURRENT: "${FEEDFOLD_QUOTA_OUTBOUND_REQUESTS_CONCURRENT:-20}"
FEEDFOLD_QUOTA_OUTBOUND_REQUESTS_PER_DAY: "${FEEDFOLD_QUOTA_OUTBOUND_REQUESTS_PER_DAY:-50000}"
FEEDFOLD_QUOTA_REGISTERED_ACCOUNTS: "${FEEDFOLD_QUOTA_REGISTERED_ACCOUNTS:-1000}"
FEEDFOLD_QUOTA_GLOBAL_STORED_BYTES: "${FEEDFOLD_QUOTA_GLOBAL_STORED_BYTES:-21474836480}"
ports:
- "${FEEDFOLD_BIND_ADDRESS:-127.0.0.1}:${FEEDFOLD_PORT:-3000}:3000"
volumes:
- feedfold-data:/data
tmpfs:
- /tmp:rw,noexec,nosuid,size=256m
shm_size: 256mb
healthcheck:
test:
- CMD
- node
- -e
- "fetch('http://127.0.0.1:3000/health').then((response) => { if (!response.ok) process.exit(1) }).catch(() => process.exit(1))"
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
logging:
driver: local
options:
max-size: "5m"
max-file: "2"
stop_grace_period: 30s
volumes:
feedfold-data: