Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
92 lines (87 loc) · 3.58 KB
/
Copy pathdocker-compose.yml
File metadata and controls
92 lines (87 loc) · 3.58 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
# Logs are rotated (10 MB × 5 per service) so months of requests don't fill the disk.
x-logging: &logging
driver: json-file
options:
max-size: "10m"
max-file: "5"
services:
db:
logging: *logging
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: probyte
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-probyte}
POSTGRES_DB: probyte
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U probyte -d probyte"]
interval: 3s
timeout: 3s
retries: 20
app:
logging: *logging
build: .
restart: unless-stopped
environment: &probyte-env
DATABASE_URL: postgresql://probyte:${POSTGRES_PASSWORD:-probyte}@db:5432/probyte
DEFAULT_TZ: ${DEFAULT_TZ:-UTC}
SYNC_INTERVAL: ${SYNC_INTERVAL:-120}
ALLOW_SIGNUP: ${ALLOW_SIGNUP:-true}
MAX_UPLOAD_MB: ${MAX_UPLOAD_MB:-25}
# Linked tables: allow links to Probyte servers on private/LAN addresses (off = safer on open sign-up servers)
REMOTE_ALLOW_PRIVATE: ${REMOTE_ALLOW_PRIVATE:-false}
# Webhooks: allow deliveries to private/LAN addresses (e.g. n8n or Home Assistant on your network)
WEBHOOK_ALLOW_PRIVATE: ${WEBHOOK_ALLOW_PRIVATE:-false}
# Public address of Probyte (e.g. https://probyte.example.com), used in OAuth/MCP discovery. Default: from the request.
PUBLIC_URL: ${PUBLIC_URL:-}
# Optional fixed bearer token for MCP clients (16+ characters), acting as MCP_BEARER_USER (default: first admin)
MCP_BEARER_TOKEN: ${MCP_BEARER_TOKEN:-}
MCP_BEARER_USER: ${MCP_BEARER_USER:-}
MCP_BEARER_SCOPE: ${MCP_BEARER_SCOPE:-write}
# Backups (database, calendars, files) by the worker: hours between them (0 = off) and how many to keep
BACKUP_INTERVAL: ${BACKUP_INTERVAL:-24}
BACKUP_KEEP: ${BACKUP_KEEP:-14}
# Key that encrypts stored account passwords; empty = a key file created on the "keys" volume
PROBYTE_SECRET_KEY: ${PROBYTE_SECRET_KEY:-}
# Document converter for previews of Word / PowerPoint / OpenDocument files in files tables (empty = off)
OFFICE_CONVERTER_URL: ${OFFICE_CONVERTER_URL-http://office:3000}
volumes:
- attachments:/data/attachments
- backups:/backups:ro # listed and downloadable in Settings → Backups
- keys:/keys # the key that encrypts stored passwords (not in backups: keep a copy)
ports:
- "${PROBYTE_PORT:-8080}:8000"
depends_on:
db:
condition: service_healthy
# Background jobs: syncs with other calendar/files servers, webhook deliveries (with retries), previews, backups,
# cleanup. Same image as app.
worker:
logging: *logging
build: .
restart: unless-stopped
command: ["python", "-m", "app.worker"]
environment: *probyte-env
volumes:
- attachments:/data/attachments
- radicale-data:/radicale-data:ro # calendars from before 0.9 (the bundled Radicale): brought in once, then unused
- backups:/backups # one folder per backup; use a bind mount to keep them on another disk
- keys:/keys
depends_on:
db:
condition: service_healthy
# Converts Word, PowerPoint and OpenDocument files to PDF for previews in files tables (LibreOffice, no GUI).
# Internal only. Not needed without files tables: remove it and set OFFICE_CONVERTER_URL= to turn previews of those off.
office:
logging: *logging
build: ./office
restart: unless-stopped
mem_limit: 1g
volumes:
attachments:
backups:
keys:
pgdata:
radicale-data: