Files
PaperClip/services/paperclip/docker-compose.yml
T
Jannik 60d48a43b4 refactor: Single source of truth for API keys via services/shared.env
- NEW: services/shared.env.age — encrypted shared API keys (OpenRouter, Mistral, Minimax, Poe)
- REMOVE: services/hermes/.env.age — no service-specific secrets needed
- UPDATE: services/paperclip/.env.age — now only DB password + auth secret
- UPDATE: docker-compose.yml (paperclip + hermes) — use env_file for shared.env
- UPDATE: deploy_script.sh — decrypt shared.env.age first, read API keys from there
- UPDATE: .gitignore — add services/shared.env
- UPDATE: README.md — document shared.env pattern
2026-10-01 19:57:17 +02:00

50 lines
1.8 KiB
YAML

services:
paperclip-postgres:
image: postgres:17-alpine
container_name: paperclip-postgres
environment:
POSTGRES_USER: paperclip
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: paperclip
healthcheck:
test: ["CMD-SHELL", "pg_isready -U paperclip -d paperclip"]
interval: 2s
timeout: 5s
retries: 30
volumes:
- /opt/PaperClip-Data/paperclip-db:/var/lib/postgresql/data
networks:
- paperclip-net
restart: unless-stopped
paperclip:
image: ghcr.io/paperclipai/paperclip:latest
container_name: paperclip_app
pids_limit: 2048
env_file:
- ../shared.env # Geteilte API Keys (OpenRouter, Mistral, etc.)
- .env # Service-spezifisch (DB-Passwort, Auth-Secret, OPENAI_* Overrides)
environment:
DATABASE_URL: postgres://paperclip:${POSTGRES_PASSWORD}@paperclip-postgres:5432/paperclip
PORT: "3100"
HOST: "0.0.0.0"
SERVE_UI: "true"
PAPERCLIP_HOME: "/paperclip"
PAPERCLIP_DEPLOYMENT_MODE: "authenticated"
PAPERCLIP_DEPLOYMENT_EXPOSURE: "public"
PAPERCLIP_AUTH_BASE_URL_MODE: "explicit"
PAPERCLIP_PUBLIC_URL: "https://paperclip.orfel.de"
PAPERCLIP_OPENCODE_PROVIDERS: '{"mistral":{"npm":"@ai-sdk/openai-compatible","options":{"apiKey":"{env:MISTRAL_API_KEY}"},"models":{"mistral/mistral-large":{}}},"minimax":{"npm":"@ai-sdk/openai-compatible","options":{"apiKey":"{env:MINIMAX_API_KEY}"},"models":{"minimax/abab6.5s":{}}},"poe":{"npm":"@ai-sdk/openai-compatible","options":{"apiKey":"{env:POE_API_KEY}"},"models":{"poe/claude-3-opus":{}}}}'
volumes:
- /opt/PaperClip-Data/paperclip:/paperclip
depends_on:
paperclip-postgres:
condition: service_healthy
networks:
- paperclip-net
restart: unless-stopped
networks:
paperclip-net:
external: true