- 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
50 lines
1.8 KiB
YAML
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
|