unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at angular21 226 lines 6.7 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_started 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 FRONTEND_LOGO: ${FRONTEND_LOGO:-} 62 FRONTEND_API_URL: ${FRONTEND_API_URL:-} 63 FRONTEND_MEDIA_URL: ${FRONTEND_MEDIA_URL:-} 64 FRONTEND_CACHE_URL: ${FRONTEND_CACHE_URL:-} 65 FRONTEND_CACHE_BACKUP_URLS: ${FRONTEND_CACHE_BACKUP_URLS:-} 66 FRONTEND_SHORTEN_POSTS: ${FRONTEND_SHORTEN_POSTS:-} 67 FRONTEND_DISABLE_PWA: ${FRONTEND_DISABLE_PWA:-} 68 FRONTEND_MAINTENANCE: ${FRONTEND_MAINTENANCE:-} 69 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 70 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 71 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 72 73 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 74 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 75 HIDE_BLOCKED_SERVERS: ${HIDE_BLOCKED_SERVERS:-} 76 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 77 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 78 79 FRONTEND_FQDN_URL: https://${DOMAIN_NAME} 80 81 ENABLE_RAW_OUTPUT: ${ENABLE_RAW_OUTPUT:-} 82 deploy: 83 mode: replicated 84 replicas: 3 85 volumes: 86 - ./packages/backend/uploads:/app/packages/backend/uploads 87 - ./packages/backend/cache:/app/packages/backend/cache 88 - frontend:/app/packages/frontend:ro 89 90 migration: 91 <<: *default_backend 92 depends_on: 93 db: 94 condition: service_started 95 redis: 96 condition: service_started 97 frontend: 98 condition: service_started 99 restart: no 100 deploy: 101 mode: replicated 102 replicas: 1 103 command: "npm exec tsx migrate.ts init-container" 104 105 frontend: 106 restart: unless-stopped 107 build: 108 context: . 109 dockerfile: packages/frontend/Dockerfile 110 ports: 111 - 80:80 112 - 443:443 113 environment: 114 DOMAIN_NAME: ${DOMAIN_NAME} 115 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 116 CACHE_DOMAIN: ${CACHE_DOMAIN} 117 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 118 119 DONATION_URL: ${DONATION_URL} 120 ACME_EMAIL: ${ACME_EMAIL} 121 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 122 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 123 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 124 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 125 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 126 HIDE_BLOCKED_SERVERS: ${HIDE_BLOCKED_SERVERS:-} 127 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 128 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 129 CACHE_HOST: "cache:9000" 130 BACKEND_HOST: "wafrn-backend-1:9000 wafrn-backend-2:9000 wafrn-backend-3:9000" 131 WEBSOCKET_HOST: "wafrn-websocket-1:9000" 132 volumes: 133 - "caddy:/data" 134 - "frontend:/var/www/html/frontend" 135 - ./packages/backend/uploads:/var/www/html/uploads 136 - ./packages/caddy:/etc/caddy/config 137 138 db: 139 image: postgres:17 140 restart: unless-stopped 141 shm_size: '2gb' 142 environment: 143 POSTGRES_USER: ${POSTGRES_USER} 144 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 145 POSTGRES_DB: ${POSTGRES_DBNAME} 146 volumes: 147 - dbpg:/var/lib/postgresql/data 148 149 adminer: 150 image: adminer 151 restart: unless-stopped 152 153 redis: 154 image: redis:7.2.4 155 restart: unless-stopped 156 volumes: 157 - redis:/data 158 159 pds: 160 image: ghcr.io/bluesky-social/pds:0.4 161 restart: unless-stopped 162 profiles: 163 - bluesky 164 environment: 165 PDS_HOSTNAME: ${PDS_DOMAIN_NAME} 166 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 167 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 168 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} 169 PDS_DATA_DIRECTORY: /pds 170 PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks 171 PDS_BLOB_UPLOAD_LIMIT: 157286400 172 PDS_DID_PLC_URL: "https://plc.directory" 173 PDS_BSKY_APP_VIEW_URL: "https://api.bsky.app" 174 PDS_BSKY_APP_VIEW_DID: "did:web:api.bsky.app" 175 PDS_REPORT_SERVICE_URL: "https://mod.bsky.app" 176 PDS_REPORT_SERVICE_DID: "did:plc:ar7c4by46qjdydhdevvrndac" 177 PDS_CRAWLERS: "https://bsky.network, https://atproto.africa" 178 PDS_EMAIL_SMTP_URL: "smtps://${SMTP_USER}:${SMTP_PASSWORD}@${SMTP_HOST}:${SMTP_PORT}" 179 PDS_EMAIL_FROM_ADDRESS: "${SMTP_FROM}" 180 LOG_ENABLED: true 181 volumes: 182 - pds:/pds 183 184 pds_worker: 185 <<: *default_backend 186 profiles: 187 - bluesky 188 deploy: 189 mode: replicated 190 replicas: 1 191 command: "npm exec tsx atproto.ts" 192 193 cache: 194 <<: *default_backend 195 deploy: 196 mode: replicated 197 replicas: 1 198 199 websocket: 200 <<: *default_backend 201 deploy: 202 mode: replicated 203 replicas: 1 204 command: "npm exec tsx websocket.ts" 205 206 workers: 207 <<: *default_backend 208 build: 209 <<: *default_backend_build 210 environment: 211 <<: *default_backend_env_vars 212 USE_WORKERS: true 213 deploy: 214 mode: replicated 215 replicas: 3 216 217volumes: 218 dbpg: 219 caddy: 220 pds: 221 frontend: 222 redis: 223 224networks: 225 default: 226 enable_ipv6: true