unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at development 245 lines 7.6 kB view raw
1services: 2 backend: &default_backend 3 build: &default_backend_build 4 context: . 5 dockerfile: packages/backend/Dockerfile 6 # these args configure private env vars for the backend and public env vars for the frontend 7 depends_on: 8 db: 9 condition: service_healthy 10 redis: 11 condition: service_started 12 frontend: 13 condition: service_started 14 migration: 15 condition: service_completed_successfully 16 restart: unless-stopped 17 environment: &default_backend_env_vars 18 NODE_ENV: production 19 ADMIN_USER: ${ADMIN_USER} 20 ADMIN_EMAIL: ${ADMIN_EMAIL} 21 ADMIN_PASSWORD: ${ADMIN_PASSWORD} 22 JWT_SECRET: ${JWT_SECRET} 23 DOMAIN_NAME: ${DOMAIN_NAME} 24 25 CACHE_DOMAIN: ${CACHE_DOMAIN} 26 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 27 28 DONATION_URL: ${DONATION_URL} 29 30 SMTP_HOST: ${SMTP_HOST} 31 SMTP_USER: ${SMTP_USER} 32 SMTP_PORT: ${SMTP_PORT} 33 SMTP_PASSWORD: ${SMTP_PASSWORD} 34 SMTP_FROM: ${SMTP_FROM} 35 36 POSTGRES_USER: ${POSTGRES_USER} 37 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 38 POSTGRES_DBNAME: ${POSTGRES_DBNAME} 39 40 WEBPUSH_EMAIL: ${WEBPUSH_EMAIL} 41 WEBPUSH_PRIVATE: ${WEBPUSH_PRIVATE} 42 WEBPUSH_PUBLIC: ${WEBPUSH_PUBLIC} 43 44 ENABLE_BSKY: ${ENABLE_BSKY} 45 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 46 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 47 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 48 49 USE_WORKERS: false 50 LOG_SQL_QUERIES: ${LOG_SQL_QUERIES:-} 51 UPLOAD_LIMIT: ${UPLOAD_LIMIT:-} 52 POSTS_PER_PAGE: ${POSTS_PER_PAGE:-} 53 LOG_LEVEL: ${LOG_LEVEL:-} 54 BLOCKLIST_URI: ${BLOCKLIST_URI:-} 55 FRONTEND_PATH: ${FRONTEND_PATH:-} 56 DISABLE_REQUIRE_SEND_EMAIL: ${DISABLE_REQUIRE_SEND_EMAIL:-} 57 BLOCKED_IPS: ${BLOCKED_IPS:-} 58 REVIEW_REGISTRATIONS: ${REVIEW_REGISTRATIONS:-} 59 IGNORE_BLOCK_HOSTS: ${IGNORE_BLOCK_HOSTS:-} 60 61 CONSTELLATION_URL: ${CONSTELLATION_URL:-} 62 SLINGSHOT_URL: ${SLINGSHOT_URL:-} 63 JETSTREAM_URL: ${JETSTREAM_URL:-} 64 65 FRONTEND_LOGO: ${FRONTEND_LOGO:-} 66 FRONTEND_API_URL: ${FRONTEND_API_URL:-} 67 FRONTEND_MEDIA_URL: ${FRONTEND_MEDIA_URL:-} 68 FRONTEND_CACHE_URL: ${FRONTEND_CACHE_URL:-} 69 FRONTEND_CACHE_BACKUP_URLS: ${FRONTEND_CACHE_BACKUP_URLS:-} 70 FRONTEND_SHORTEN_POSTS: ${FRONTEND_SHORTEN_POSTS:-} 71 FRONTEND_DISABLE_PWA: ${FRONTEND_DISABLE_PWA:-} 72 FRONTEND_MAINTENANCE: ${FRONTEND_MAINTENANCE:-} 73 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 74 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 75 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 76 77 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 78 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 79 BUBBLE_SERVERS_SHOW_TYPE: ${BUBBLE_SERVERS_SHOW_TYPE:-} 80 BLOCKED_SERVERS_SHOW_TYPE: ${BLOCKED_SERVERS_SHOW_TYPE:-} 81 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 82 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX:-} 83 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 84 85 FRONTEND_FQDN_URL: https://${DOMAIN_NAME} 86 87 ENABLE_RAW_OUTPUT: ${ENABLE_RAW_OUTPUT:-} 88 deploy: 89 mode: replicated 90 replicas: 3 91 volumes: 92 - ./packages/backend/uploads:/app/packages/backend/uploads 93 - cache:/app/packages/backend/cache 94 - frontend:/app/packages/frontend:ro 95 96 migration: 97 <<: *default_backend 98 depends_on: 99 db: 100 condition: service_healthy 101 redis: 102 condition: service_started 103 frontend: 104 condition: service_started 105 restart: no 106 deploy: 107 mode: replicated 108 replicas: 1 109 command: "npm exec tsx migrate.ts init-container" 110 111 112 frontend: 113 restart: unless-stopped 114 build: 115 context: . 116 dockerfile: packages/frontend/Dockerfile 117 ports: 118 - 80:80 119 - 443:443 120 extra_hosts: 121 - "host.docker.internal:host-gateway" 122 environment: 123 DOMAIN_NAME: ${DOMAIN_NAME} 124 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 125 CACHE_DOMAIN: ${CACHE_DOMAIN} 126 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 127 128 DONATION_URL: ${DONATION_URL} 129 ACME_EMAIL: ${ACME_EMAIL} 130 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 131 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 132 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 133 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 134 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 135 BUBBLE_SERVERS_SHOW_TYPE: ${BUBBLE_SERVERS_SHOW_TYPE:-} 136 BLOCKED_SERVERS_SHOW_TYPE: ${BLOCKED_SERVERS_SHOW_TYPE:-} 137 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 138 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX:-} 139 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 140 CACHE_HOST: "cache:9000" 141 BACKEND_HOST: "wafrn-backend-1:9000 wafrn-backend-2:9000 wafrn-backend-3:9000" 142 WEBSOCKET_HOST: "wafrn-websocket-1:9000" 143 volumes: 144 - "caddy:/data" 145 - "frontend:/var/www/html/frontend" 146 - ./packages/backend/uploads:/var/www/html/uploads 147 - ./packages/caddy:/etc/caddy/config 148 149 db: 150 build: 151 context: monitoring/database 152 dockerfile: Dockerfile 153 #command: -c 'max_connections=500' 154 restart: unless-stopped 155 shm_size: '2gb' 156 environment: 157 POSTGRES_USER: ${POSTGRES_USER} 158 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 159 POSTGRES_DB: ${POSTGRES_DBNAME} 160 volumes: 161 - dbpg:/var/lib/postgresql/data 162 163 adminer: 164 image: adminer 165 restart: unless-stopped 166 167 redis: 168 image: redis:8.4 169 restart: unless-stopped 170 volumes: 171 - redis:/data 172 173 pds: 174 image: ghcr.io/bluesky-social/pds:0.4 175 restart: unless-stopped 176 profiles: 177 - bluesky 178 environment: 179 PDS_HOSTNAME: ${PDS_DOMAIN_NAME} 180 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 181 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 182 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} 183 PDS_DATA_DIRECTORY: /pds 184 PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks 185 PDS_BLOB_UPLOAD_LIMIT: 157286400 186 PDS_DID_PLC_URL: "https://plc.directory" 187 #PDS_BSKY_APP_VIEW_URL: "https://api.blacksky.community" 188 #PDS_BSKY_APP_VIEW_DID: "did:web:api.blacksky.community" 189 PDS_BSKY_APP_VIEW_URL: ${PDS_APPVIEW_URL:-https://api.bsky.app} 190 PDS_BSKY_APP_VIEW_DID: ${PDS_APPVIEW_DID:-did:web:api.bsky.app} 191 PDS_REPORT_SERVICE_URL: ${PDS_MOD_URL:-https://mod.bsky.app} 192 PDS_REPORT_SERVICE_DID: ${PDS_MOD_DID:-did:plc:ar7c4by46qjdydhdevvrndac} 193 PDS_CRAWLERS: ${PDS_CRAWLERS:-https://bsky.network, https://atproto.africa} 194 PDS_SERVICE_HANDLE_DOMAINS: ${PDS_HANDLE_DOMAINS:-.${PDS_DOMAIN_NAME}} 195 PDS_EMAIL_SMTP_URL: "smtps://${SMTP_USER}:${SMTP_PASSWORD}@${SMTP_HOST}:${SMTP_PORT}" 196 PDS_EMAIL_FROM_ADDRESS: "${SMTP_FROM}" 197 LOG_ENABLED: true 198 volumes: 199 - pds:/pds 200 201 pds_worker: 202 <<: *default_backend 203 profiles: 204 - bluesky 205 deploy: 206 mode: replicated 207 replicas: 1 208 command: "npm exec tsx atproto.ts" 209 210 cache: 211 <<: *default_backend 212 deploy: 213 mode: replicated 214 replicas: 1 215 216 websocket: 217 <<: *default_backend 218 deploy: 219 mode: replicated 220 replicas: 1 221 command: "npm exec tsx websocket.ts" 222 223 workers: 224 <<: *default_backend 225 build: 226 <<: *default_backend_build 227 environment: 228 <<: *default_backend_env_vars 229 USE_WORKERS: true 230 deploy: 231 mode: replicated 232 replicas: 3 233 234volumes: 235 dbpg: 236 caddy: 237 pds: 238 frontend: 239 redis: 240 cache: 241 242 243networks: 244 default: 245 enable_ipv6: true