A fork of the Cocoon PDS but being made more distributed.
0

Configure Feed

Select the types of activity you want to include in your feed.

add a docker compose for dist

Signed-off-by: Will <did:plc:dadhhalkfcq3gucaq25hjqon>

author willdot.net committer
Tangled
date (Jun 1, 2026, 9:33 PM UTC) commit 20ed5d21 parent ece4a6a3 change-id vopwtzwl
+137
+137
docker-compose.dist.yaml
··· 1 + version: "3.8" 2 + 3 + services: 4 + init-keys: 5 + build: 6 + context: . 7 + dockerfile: Dockerfile 8 + image: ghcr.io/haileyok/cocoon:latest 9 + container_name: cocoon-init-keys 10 + volumes: 11 + - ./keys:/keys 12 + - ./data:/data/cocoon 13 + - ./init-keys.sh:/init-keys.sh:ro 14 + environment: 15 + COCOON_DID: ${COCOON_DID} 16 + COCOON_HOSTNAME: ${COCOON_HOSTNAME} 17 + COCOON_ROTATION_KEY_PATH: /keys/rotation.key 18 + COCOON_JWK_PATH: /keys/jwk.key 19 + COCOON_CONTACT_EMAIL: ${COCOON_CONTACT_EMAIL} 20 + COCOON_RELAYS: ${COCOON_RELAYS:-https://bsky.network} 21 + COCOON_ADMIN_PASSWORD: ${COCOON_ADMIN_PASSWORD} 22 + entrypoint: ["/bin/sh", "/init-keys.sh"] 23 + restart: "no" 24 + 25 + cocoon: 26 + build: 27 + context: . 28 + dockerfile: Dockerfile 29 + image: ghcr.io/haileyok/cocoon:latest 30 + container_name: cocoon-pds 31 + network_mode: host 32 + depends_on: 33 + init-keys: 34 + condition: service_completed_successfully 35 + volumes: 36 + - ./data:/data/cocoon 37 + - ./keys/rotation.key:/keys/rotation.key:ro 38 + - ./keys/jwk.key:/keys/jwk.key:ro 39 + environment: 40 + # Required settings 41 + COCOON_DID: ${COCOON_DID} 42 + COCOON_HOSTNAME: ${COCOON_HOSTNAME} 43 + COCOON_ROTATION_KEY_PATH: /keys/rotation.key 44 + COCOON_JWK_PATH: /keys/jwk.key 45 + COCOON_CONTACT_EMAIL: ${COCOON_CONTACT_EMAIL} 46 + COCOON_RELAYS: ${COCOON_RELAYS:-https://bsky.network} 47 + COCOON_ADMIN_PASSWORD: ${COCOON_ADMIN_PASSWORD} 48 + COCOON_SESSION_SECRET: ${COCOON_SESSION_SECRET} 49 + 50 + # Server configuration 51 + COCOON_ADDR: ":8080" 52 + COCOON_DB_TYPE: ${COCOON_DB_TYPE:-sqlite} 53 + COCOON_DB_NAME: ${COCOON_DB_NAME:-/data/cocoon/cocoon.db} 54 + COCOON_DATABASE_URL: ${COCOON_DATABASE_URL:-} 55 + COCOON_BLOCKSTORE_VARIANT: ${COCOON_BLOCKSTORE_VARIANT:-sqlite} 56 + # Set this if using Turso 57 + COCOON_TURSO_TOKEN: ${COCOON_TURSO_TOKEN:-} 58 + 59 + # Optional: SMTP settings for email 60 + COCOON_SMTP_USER: ${COCOON_SMTP_USER:-} 61 + COCOON_SMTP_PASS: ${COCOON_SMTP_PASS:-} 62 + COCOON_SMTP_HOST: ${COCOON_SMTP_HOST:-} 63 + COCOON_SMTP_PORT: ${COCOON_SMTP_PORT:-} 64 + COCOON_SMTP_EMAIL: ${COCOON_SMTP_EMAIL:-} 65 + COCOON_SMTP_NAME: ${COCOON_SMTP_NAME:-} 66 + 67 + # Optional: S3 configuration 68 + COCOON_S3_BACKUPS_ENABLED: ${COCOON_S3_BACKUPS_ENABLED:-false} 69 + COCOON_S3_BLOBSTORE_ENABLED: ${COCOON_S3_BLOBSTORE_ENABLED:-false} 70 + COCOON_S3_REGION: ${COCOON_S3_REGION:-} 71 + COCOON_S3_BUCKET: ${COCOON_S3_BUCKET:-} 72 + COCOON_S3_ENDPOINT: ${COCOON_S3_ENDPOINT:-} 73 + COCOON_S3_ACCESS_KEY: ${COCOON_S3_ACCESS_KEY:-} 74 + COCOON_S3_SECRET_KEY: ${COCOON_S3_SECRET_KEY:-} 75 + COCOON_S3_CDN_URL: ${COCOON_S3_CDN_URL:-} 76 + 77 + # Configure pointing to the subscribe repos service as a sync repos service 78 + PUSH_BASED_EVENTS: ${PUSH_BASED_EVENTS:-false} 79 + SUBSCRIBE_REPOS_SERVICE_URL: ${SUBSCRIBE_REPOS_SERVICE_URL:-} 80 + 81 + # Optional: Fallback proxy 82 + COCOON_FALLBACK_PROXY: ${COCOON_FALLBACK_PROXY:-} 83 + restart: unless-stopped 84 + healthcheck: 85 + test: ["CMD", "curl", "-f", "http://localhost:8080/xrpc/_health"] 86 + interval: 30s 87 + timeout: 10s 88 + retries: 3 89 + start_period: 40s 90 + 91 + create-invite: 92 + build: 93 + context: . 94 + dockerfile: Dockerfile 95 + image: ghcr.io/haileyok/cocoon:latest 96 + container_name: cocoon-create-invite 97 + network_mode: host 98 + volumes: 99 + - ./keys:/keys 100 + - ./data:/data/cocoon 101 + - ./create-initial-invite.sh:/create-initial-invite.sh:ro 102 + environment: 103 + COCOON_DID: ${COCOON_DID} 104 + COCOON_HOSTNAME: ${COCOON_HOSTNAME} 105 + COCOON_ROTATION_KEY_PATH: /keys/rotation.key 106 + COCOON_JWK_PATH: /keys/jwk.key 107 + COCOON_CONTACT_EMAIL: ${COCOON_CONTACT_EMAIL} 108 + COCOON_RELAYS: ${COCOON_RELAYS:-https://bsky.network} 109 + COCOON_ADMIN_PASSWORD: ${COCOON_ADMIN_PASSWORD} 110 + COCOON_DB_TYPE: ${COCOON_DB_TYPE:-sqlite} 111 + COCOON_DB_NAME: ${COCOON_DB_NAME:-/data/cocoon/cocoon.db} 112 + COCOON_DATABASE_URL: ${COCOON_DATABASE_URL:-} 113 + depends_on: 114 + - init-keys 115 + entrypoint: ["/bin/sh", "/create-initial-invite.sh"] 116 + restart: "no" 117 + 118 + caddy: 119 + image: caddy:2-alpine 120 + container_name: cocoon-caddy 121 + network_mode: host 122 + volumes: 123 + - ./Caddyfile:/etc/caddy/Caddyfile:ro 124 + - caddy_data:/data 125 + - caddy_config:/config 126 + restart: unless-stopped 127 + environment: 128 + COCOON_HOSTNAME: ${COCOON_HOSTNAME} 129 + CADDY_ACME_EMAIL: ${COCOON_CONTACT_EMAIL:-} 130 + 131 + volumes: 132 + data: 133 + driver: local 134 + caddy_data: 135 + driver: local 136 + caddy_config: 137 + driver: local