grain.social is a photo sharing platform built on atproto.
1name: grain_infra 2services: 3 maildev: 4 image: maildev/maildev 5 restart: always 6 environment: 7 - TZ=America/Los_Angeles 8 - MAILDEV_WEB_PORT=1080 9 - MAILDEV_SMTP_PORT=1025 10 ports: 11 - "8050:1080" 12 - "1025:1025" 13 logging: 14 driver: "json-file" 15 options: 16 max-size: "1m" 17 18 caddy: 19 container_name: caddy 20 image: caddy:2 21 depends_on: 22 - pds 23 restart: unless-stopped 24 cap_add: 25 - NET_ADMIN 26 ports: 27 - "80:80" 28 - "443:443" 29 - "443:443/udp" 30 volumes: 31 - ./Caddyfile:/etc/caddy/Caddyfile 32 - caddy_data:/data 33 - caddy_config:/config 34 35 pds: 36 image: ghcr.io/bluesky-social/pds:0.4 37 container_name: pds 38 restart: unless-stopped 39 ports: 40 - '4001:3000' 41 volumes: 42 - pds:/pds 43 env_file: 44 - ./pds.env 45 46 plc: 47 image: ghcr.io/bluesky-social/did-method-plc:plc-f2ab7516bac5bc0f3f86842fa94e996bd1b3815b 48 platform: linux/amd64 49 container_name: plc 50 restart: unless-stopped 51 ports: 52 - '4000:8080' 53 depends_on: 54 - plc_db 55 environment: 56 DEBUG_MODE: 1 57 LOG_ENABLED: "true" 58 LOG_LEVEL: "debug" 59 LOG_DESTINATION: 1 60 DB_CREDS_JSON: &DB_CREDS_JSON '{"username":"pg","password":"password","host":"plc_db","port":5432}' 61 DB_MIGRATE_CREDS_JSON: *DB_CREDS_JSON 62 PLC_VERSION: 0.0.1 63 PORT: 8080 64 65 plc_db: 66 image: postgres:14.4-alpine 67 container_name: plc_db 68 environment: 69 - POSTGRES_USER=pg 70 - POSTGRES_PASSWORD=password 71 ports: 72 - '5433:5432' 73 volumes: 74 - plc:/var/lib/postgresql/data 75 76 jetstream: 77 container_name: jetstream 78 image: ghcr.io/bluesky-social/jetstream:sha-0ab10bd 79 restart: unless-stopped 80 volumes: 81 - jetstream:/data 82 environment: 83 - JETSTREAM_DATA_DIR=/data 84 # livness check interval to restart when no events are received (default: 15sec) 85 - JETSTREAM_LIVENESS_TTL=300s 86 - JETSTREAM_WS_URL=ws://pds:3000/xrpc/com.atproto.sync.subscribeRepos 87 88volumes: 89 caddy_data: 90 caddy_config: 91 pds: 92 plc: 93 jetstream: