From 1cc78f65533142cb3ccaace5e6cd64870fdb635d Mon Sep 17 00:00:00 2001 From: emi <68632137+mxve@users.noreply.github.com> Date: Mon, 16 Feb 2026 02:04:08 +0100 Subject: [PATCH] add docker-compose.noproxy.yaml (#68) --- docker-compose.noproxy.yaml | 123 ++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 docker-compose.noproxy.yaml diff --git a/docker-compose.noproxy.yaml b/docker-compose.noproxy.yaml new file mode 100644 index 0000000..da0e7a6 --- /dev/null +++ b/docker-compose.noproxy.yaml @@ -0,0 +1,123 @@ +# Simplified docker-compose for external reverse proxy +# Exposes cocoon on 127.0.0.1:8080 by default +# +# Usage: +# docker-compose -f docker-compose.noproxy.yaml up -d +# + +version: '3.8' + +services: + init-keys: + build: + context: . + dockerfile: Dockerfile + image: ghcr.io/haileyok/cocoon:latest + container_name: cocoon-init-keys + volumes: + - ./keys:/keys + - ./data:/data/cocoon + - ./init-keys.sh:/init-keys.sh:ro + environment: + COCOON_DID: ${COCOON_DID} + COCOON_HOSTNAME: ${COCOON_HOSTNAME} + COCOON_ROTATION_KEY_PATH: /keys/rotation.key + COCOON_JWK_PATH: /keys/jwk.key + COCOON_CONTACT_EMAIL: ${COCOON_CONTACT_EMAIL} + COCOON_RELAYS: ${COCOON_RELAYS:-https://bsky.network} + COCOON_ADMIN_PASSWORD: ${COCOON_ADMIN_PASSWORD} + entrypoint: ["/bin/sh", "/init-keys.sh"] + restart: "no" + + cocoon: + build: + context: . + dockerfile: Dockerfile + image: ghcr.io/haileyok/cocoon:latest + container_name: cocoon-pds + depends_on: + init-keys: + condition: service_completed_successfully + ports: + - "127.0.0.1:8080:8080" + volumes: + - ./data:/data/cocoon + - ./keys/rotation.key:/keys/rotation.key:ro + - ./keys/jwk.key:/keys/jwk.key:ro + environment: + # Required settings + COCOON_DID: ${COCOON_DID} + COCOON_HOSTNAME: ${COCOON_HOSTNAME} + COCOON_ROTATION_KEY_PATH: /keys/rotation.key + COCOON_JWK_PATH: /keys/jwk.key + COCOON_CONTACT_EMAIL: ${COCOON_CONTACT_EMAIL} + COCOON_RELAYS: ${COCOON_RELAYS:-https://bsky.network} + COCOON_ADMIN_PASSWORD: ${COCOON_ADMIN_PASSWORD} + COCOON_SESSION_SECRET: ${COCOON_SESSION_SECRET} + + # Server configuration + COCOON_ADDR: ":8080" + COCOON_DB_TYPE: ${COCOON_DB_TYPE:-sqlite} + COCOON_DB_NAME: ${COCOON_DB_NAME:-/data/cocoon/cocoon.db} + COCOON_DATABASE_URL: ${COCOON_DATABASE_URL:-} + COCOON_BLOCKSTORE_VARIANT: ${COCOON_BLOCKSTORE_VARIANT:-sqlite} + + # Optional: SMTP settings for email + COCOON_SMTP_USER: ${COCOON_SMTP_USER:-} + COCOON_SMTP_PASS: ${COCOON_SMTP_PASS:-} + COCOON_SMTP_HOST: ${COCOON_SMTP_HOST:-} + COCOON_SMTP_PORT: ${COCOON_SMTP_PORT:-} + COCOON_SMTP_EMAIL: ${COCOON_SMTP_EMAIL:-} + COCOON_SMTP_NAME: ${COCOON_SMTP_NAME:-} + + # Optional: S3 configuration + COCOON_S3_BACKUPS_ENABLED: ${COCOON_S3_BACKUPS_ENABLED:-false} + COCOON_S3_BLOBSTORE_ENABLED: ${COCOON_S3_BLOBSTORE_ENABLED:-false} + COCOON_S3_REGION: ${COCOON_S3_REGION:-} + COCOON_S3_BUCKET: ${COCOON_S3_BUCKET:-} + COCOON_S3_ENDPOINT: ${COCOON_S3_ENDPOINT:-} + COCOON_S3_ACCESS_KEY: ${COCOON_S3_ACCESS_KEY:-} + COCOON_S3_SECRET_KEY: ${COCOON_S3_SECRET_KEY:-} + COCOON_S3_CDN_URL: ${COCOON_S3_CDN_URL:-} + + # Optional: Fallback proxy + COCOON_FALLBACK_PROXY: ${COCOON_FALLBACK_PROXY:-} + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/xrpc/_health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + + create-invite: + build: + context: . + dockerfile: Dockerfile + image: ghcr.io/haileyok/cocoon:latest + container_name: cocoon-create-invite + network_mode: "service:cocoon" + volumes: + - ./keys:/keys + - ./data:/data/cocoon + - ./create-initial-invite.sh:/create-initial-invite.sh:ro + environment: + COCOON_DID: ${COCOON_DID} + COCOON_HOSTNAME: ${COCOON_HOSTNAME} + COCOON_ROTATION_KEY_PATH: /keys/rotation.key + COCOON_JWK_PATH: /keys/jwk.key + COCOON_CONTACT_EMAIL: ${COCOON_CONTACT_EMAIL} + COCOON_RELAYS: ${COCOON_RELAYS:-https://bsky.network} + COCOON_ADMIN_PASSWORD: ${COCOON_ADMIN_PASSWORD} + COCOON_DB_TYPE: ${COCOON_DB_TYPE:-sqlite} + COCOON_DB_NAME: ${COCOON_DB_NAME:-/data/cocoon/cocoon.db} + COCOON_DATABASE_URL: ${COCOON_DATABASE_URL:-} + depends_on: + cocoon: + condition: service_healthy + entrypoint: ["/bin/sh", "/create-initial-invite.sh"] + restart: "no" + +volumes: + data: + driver: local -- 2.51.2