diff --git a/ai/compose.yml b/ai/compose.yml index aca3347..004a5c9 100644 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -96,6 +96,61 @@ services: - "303" - "26" + paperclip-db: + image: postgres:17-alpine + container_name: paperclip-db + restart: always + environment: + POSTGRES_USER: paperclip + POSTGRES_PASSWORD: ${PAPERCLIP_DB_PASSWORD:?PAPERCLIP_DB_PASSWORD must be set} + POSTGRES_DB: paperclip + healthcheck: + test: ["CMD-SHELL", "pg_isready -U paperclip -d paperclip"] + interval: 5s + timeout: 5s + retries: 10 + volumes: + - /mnt/HoardingCow_docker_data/Paperclip/pgdata:/var/lib/postgresql/data + networks: + - ai_backend + + paperclip: + image: ghcr.io/paperclipai/paperclip:v2026.517.0 + container_name: paperclip + restart: always + ports: + - "127.0.0.1:3100:3100" + environment: + - HOST=0.0.0.0 + - PORT=3100 + - SERVE_UI=true + - DATABASE_URL=postgres://paperclip:${PAPERCLIP_DB_PASSWORD}@paperclip-db:5432/paperclip + - BETTER_AUTH_SECRET=${PAPERCLIP_AUTH_SECRET:?PAPERCLIP_AUTH_SECRET must be set} + - PAPERCLIP_PUBLIC_URL=https://paperclip.lazyworkhorse.net + - PAPERCLIP_DEPLOYMENT_MODE=authenticated + - PAPERCLIP_DEPLOYMENT_EXPOSURE=private + volumes: + - /mnt/HoardingCow_docker_data/Paperclip/data:/paperclip + depends_on: + paperclip-db: + condition: service_healthy + networks: + - ai_net + - ai_backend + labels: + - "traefik.enable=true" + + - "traefik.http.routers.paperclip-http.rule=Host(`paperclip.lazyworkhorse.net`)" + - "traefik.http.routers.paperclip-http.entrypoints=web" + - "traefik.http.routers.paperclip-http.middlewares=redirect-to-https" + + - "traefik.http.routers.paperclip-https.rule=Host(`paperclip.lazyworkhorse.net`)" + - "traefik.http.routers.paperclip-https.entrypoints=websecure" + - "traefik.http.routers.paperclip-https.tls=true" + - "traefik.http.routers.paperclip-https.tls.certresolver=njalla" + + - "traefik.http.services.paperclip.loadbalancer.server.port=3100" + networks: ai_net: external: true