-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompose.production.yaml
More file actions
88 lines (83 loc) · 3.11 KB
/
Copy pathcompose.production.yaml
File metadata and controls
88 lines (83 loc) · 3.11 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
name: idea-map
services:
app:
build:
context: .
args:
VITE_TURNSTILE_SITE_KEY: ${TURNSTILE_SITE_KEY:?Set TURNSTILE_SITE_KEY}
environment:
NODE_ENV: production
PORT: 3000
DATABASE_PATH: /data/idea-map.db
CLIENT_HASH_SECRET: ${CLIENT_HASH_SECRET:?Set CLIENT_HASH_SECRET}
CONTACT_EMAIL: ${CONTACT_EMAIL:?Set CONTACT_EMAIL}
OLLAMA_URL: http://ollama:11434
OLLAMA_MODEL: ${OLLAMA_MODEL:-qwen2.5:3b}
IDEA_MAP_SEED: "0"
TRUST_PROXY: "1"
AUTH_MODE: cloudflare
PUBLIC_ORIGIN: ${PUBLIC_ORIGIN:?Set PUBLIC_ORIGIN to the deployed HTTPS origin}
CLOUDFLARE_ACCESS_TEAM_DOMAIN: ${CLOUDFLARE_ACCESS_TEAM_DOMAIN:?Set CLOUDFLARE_ACCESS_TEAM_DOMAIN}
CLOUDFLARE_ACCESS_AUD: ${CLOUDFLARE_ACCESS_AUD:?Set CLOUDFLARE_ACCESS_AUD}
V2_TERMS_VERSION: ${V2_TERMS_VERSION:?Set V2_TERMS_VERSION to the reviewed deployed terms version}
V2_PRIVACY_VERSION: ${V2_PRIVACY_VERSION:?Set V2_PRIVACY_VERSION to the reviewed deployed privacy version}
V2_ADULT_VERSION: ${V2_ADULT_VERSION:?Set V2_ADULT_VERSION to the reviewed adult declaration version}
CSRF_TTL_SECONDS: ${CSRF_TTL_SECONDS:-600}
TURNSTILE_REQUIRED: "1"
TURNSTILE_SITE_KEY: ${TURNSTILE_SITE_KEY:?Set TURNSTILE_SITE_KEY}
TURNSTILE_SECRET: ${TURNSTILE_SECRET:?Set TURNSTILE_SECRET}
TURNSTILE_EXPECTED_HOSTNAMES: ideamap.moinsen.dev
HOURLY_LIMIT: ${HOURLY_LIMIT:-3}
DAILY_LIMIT: ${DAILY_LIMIT:-10}
GLOBAL_DAILY_INFERENCE_LIMIT: ${GLOBAL_DAILY_INFERENCE_LIMIT:-100}
QUEUE_LIMIT: ${QUEUE_LIMIT:-25}
AI_TIMEOUT_MS: ${AI_TIMEOUT_MS:-90000}
REJECTED_SUBMISSION_RETENTION_DAYS: ${REJECTED_SUBMISSION_RETENTION_DAYS:-30}
EVENT_RETENTION_DAYS: ${EVENT_RETENTION_DAYS:-30}
REPORT_RETENTION_DAYS: ${REPORT_RETENTION_DAYS:-90}
ports:
- "127.0.0.1:${APP_PORT:-3000}:3000"
volumes:
- idea-map-data:/data
depends_on:
ollama:
condition: service_healthy
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3000/api/health').then(r=>{if(!r.ok)process.exit(1)})"]
interval: 10s
timeout: 3s
retries: 12
restart: unless-stopped
ollama:
image: ollama/ollama:0.15.4
volumes:
- ollama-data:/root/.ollama
healthcheck:
test: ["CMD", "ollama", "list"]
interval: 10s
timeout: 5s
retries: 12
restart: unless-stopped
cloudflared:
image: cloudflare/cloudflared@sha256:e39ee8da81ad5e05d77f38d2f51c60ca51bf2a8450ac3abab50c17fdb91d91bf
command: ["tunnel", "--no-autoupdate", "run", "--token", "${CLOUDFLARE_TUNNEL_TOKEN:?Set CLOUDFLARE_TUNNEL_TOKEN}"]
depends_on:
app:
condition: service_healthy
restart: unless-stopped
backup:
build: .
profiles: ["operations"]
environment:
DATABASE_PATH: /data/idea-map.db
BACKUP_DIR: /backup
BACKUP_RETENTION_DAYS: ${BACKUP_RETENTION_DAYS:-35}
command: ["node", "dist-server/backup.js"]
volumes:
- idea-map-data:/data
- ./backups:/backup
volumes:
idea-map-data:
name: idea-map-data
ollama-data:
name: idea-map-ollama-data