profileShare

rasmusjy / roundtable

Read-only snapshot

No repository description.

main default branch 181 files Expires Sep 13, 2026, 9:06 AM
docker-compose.yml 2,140 bytes
1 # Production compose for a single VPS: Postgres + the app + Caddy (HTTPS).
2 #
3 # cp .env.example .env # set ENCRYPTION_KEY (required), auth vars, SITE_ADDRESS
4 # docker compose up -d # first boot applies the schema automatically
5 # docker compose exec app node node_modules/prisma/build/index.js db seed # (optional) demo data
6 #
7 # APP_IMAGE lets the CI deploy workflow pin a pushed ghcr.io image instead of
8 # building on the box; leave unset to build locally.
9
10 services:
11 db:
12 image: postgres:16-alpine
13 restart: unless-stopped
14 environment:
15 POSTGRES_USER: roundtable
16 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-roundtable}
17 POSTGRES_DB: roundtable
18 volumes:
19 - pgdata:/var/lib/postgresql/data
20 healthcheck:
21 test: ['CMD-SHELL', 'pg_isready -U roundtable -d roundtable']
22 interval: 5s
23 timeout: 5s
24 retries: 12
25
26 app:
27 image: ${APP_IMAGE:-roundtable:local}
28 build:
29 context: .
30 restart: unless-stopped
31 depends_on:
32 db:
33 condition: service_healthy
34 environment:
35 DATABASE_URL: postgresql://roundtable:${POSTGRES_PASSWORD:-roundtable}@db:5432/roundtable?schema=public
36 ENCRYPTION_KEY: ${ENCRYPTION_KEY:?set ENCRYPTION_KEY in .env}
37 AUTH_SECRET: ${AUTH_SECRET:-}
38 AUTH_URL: ${AUTH_URL:-}
39 AUTH_TRUST_HOST: 'true'
40 AUTH_GITHUB_ID: ${AUTH_GITHUB_ID:-}
41 AUTH_GITHUB_SECRET: ${AUTH_GITHUB_SECRET:-}
42 OPENROUTER_APP_URL: ${OPENROUTER_APP_URL:-http://localhost:3000}
43 OPENROUTER_APP_TITLE: ${OPENROUTER_APP_TITLE:-Roundtable}
44 MOCK_LLM: ${MOCK_LLM:-0}
45 RATE_LIMIT_DEBATES_PER_HOUR: ${RATE_LIMIT_DEBATES_PER_HOUR:-20}
46 PORT: '3000'
47 expose:
48 - '3000'
49
50 caddy:
51 image: caddy:2-alpine
52 restart: unless-stopped
53 depends_on:
54 - app
55 ports:
56 - '80:80'
57 - '443:443'
58 environment:
59 # e.g. "roundtable.example.com" for auto-HTTPS, or ":80" for local.
60 SITE_ADDRESS: ${SITE_ADDRESS:-:80}
61 volumes:
62 - ./Caddyfile:/etc/caddy/Caddyfile:ro
63 - caddy_data:/data
64 - caddy_config:/config
65
66 volumes:
67 pgdata:
68 caddy_data:
69 caddy_config:
70