diff --git a/deploy_script.sh b/deploy_script.sh index e7ed756..b9ddf79 100644 --- a/deploy_script.sh +++ b/deploy_script.sh @@ -16,7 +16,7 @@ CADDY_FRAGMENTS_DIR="${DATA_BASE}/caddy/fragments" POSTGRES_CONTAINER="postgres" # Infrastructure services that are started in a specific order -INFRA_SERVICES=("postgres" "caddy") +INFRA_SERVICES=("caddy") ACTIVE_SERVICES=() SKIPPED_SERVICES=() @@ -302,12 +302,8 @@ pull_images() { } start_infra() { - if [[ " ${ACTIVE_SERVICES[*]} " =~ " postgres " ]]; then - log "Starting PostgreSQL..." - cd "${SERVICES_DIR}/postgres" - docker compose up -d --remove-orphans - sleep 5 - fi + # Postgres is started via depends_on in paperclip service + true } assemble_caddy_fragments() { diff --git a/services/paperclip/.env.age b/services/paperclip/.env.age new file mode 100644 index 0000000..442366a Binary files /dev/null and b/services/paperclip/.env.age differ diff --git a/services/paperclip/docker-compose.yml b/services/paperclip/docker-compose.yml new file mode 100644 index 0000000..1a0039d --- /dev/null +++ b/services/paperclip/docker-compose.yml @@ -0,0 +1,47 @@ +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 + environment: + DATABASE_URL: postgres://paperclip:${POSTGRES_PASSWORD}@paperclip-postgres:5432/paperclip + PORT: "3100" + SERVE_UI: "true" + PAPERCLIP_DEPLOYMENT_MODE: "authenticated" + PAPERCLIP_DEPLOYMENT_EXPOSURE: "private" + PAPERCLIP_PUBLIC_URL: "https://${PAPERCLIP_DOMAIN}" + BETTER_AUTH_SECRET: "${BETTER_AUTH_SECRET}" + OPENROUTER_API_KEY: "${OPENROUTER_API_KEY}" + MISTRAL_API_KEY: "${MISTRAL_API_KEY}" + MINIMAX_API_KEY: "${MINIMAX_API_KEY}" + POE_API_KEY: "${POE_API_KEY}" + volumes: + - /opt/PaperClip-Data/paperclip:/paperclip + depends_on: + paperclip-postgres: + condition: service_healthy + networks: + - paperclip-net + restart: unless-stopped + +networks: + paperclip-net: + external: true diff --git a/services/paperclip/paperclip.caddy b/services/paperclip/paperclip.caddy new file mode 100644 index 0000000..25bc188 --- /dev/null +++ b/services/paperclip/paperclip.caddy @@ -0,0 +1,3 @@ +paperclip.orfel.de { + reverse_proxy paperclip_app:3100 +}