unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at angular21 189 lines 5.8 kB view raw
1services: 2 backend: &default_backend 3 build: 4 context: . 5 dockerfile: packages/backend/Dockerfile 6 depends_on: 7 db: 8 condition: service_started 9 redis: 10 condition: service_started 11 frontend: 12 condition: service_started 13 migration: 14 condition: service_completed_successfully 15 restart: unless-stopped 16 environment: 17 NODE_ENV: production 18 ADMIN_USER: ${ADMIN_USER} 19 ADMIN_EMAIL: ${ADMIN_EMAIL} 20 ADMIN_PASSWORD: ${ADMIN_PASSWORD} 21 JWT_SECRET: ${JWT_SECRET} 22 DOMAIN_NAME: ${DOMAIN_NAME} 23 24 CACHE_DOMAIN: ${CACHE_DOMAIN} 25 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 26 27 DONATION_URL: ${DONATION_URL} 28 29 SMTP_HOST: ${SMTP_HOST} 30 SMTP_USER: ${SMTP_USER} 31 SMTP_PORT: ${SMTP_PORT} 32 SMTP_PASSWORD: ${SMTP_PASSWORD} 33 SMTP_FROM: ${SMTP_FROM} 34 35 POSTGRES_USER: ${POSTGRES_USER} 36 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 37 POSTGRES_DBNAME: ${POSTGRES_DBNAME} 38 39 WEBPUSH_EMAIL: ${WEBPUSH_EMAIL} 40 WEBPUSH_PRIVATE: ${WEBPUSH_PRIVATE} 41 WEBPUSH_PUBLIC: ${WEBPUSH_PUBLIC} 42 43 ENABLE_BSKY: ${ENABLE_BSKY} 44 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 45 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 46 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 47 48 USE_WORKERS: true 49 LOG_SQL_QUERIES: ${LOG_SQL_QUERIES:-} 50 UPLOAD_LIMIT: ${UPLOAD_LIMIT:-} 51 POSTS_PER_PAGE: ${POSTS_PER_PAGE:-} 52 LOG_LEVEL: ${LOG_LEVEL:-} 53 BLOCKLIST_URI: ${BLOCKLIST_URI:-} 54 FRONTEND_PATH: ${FRONTEND_PATH:-} 55 DISABLE_REQUIRE_SEND_EMAIL: ${DISABLE_REQUIRE_SEND_EMAIL:-} 56 BLOCKED_IPS: ${BLOCKED_IPS:-} 57 REVIEW_REGISTRATIONS: ${REVIEW_REGISTRATIONS:-} 58 IGNORE_BLOCK_HOSTS: ${IGNORE_BLOCK_HOSTS:-} 59 60 FRONTEND_LOGO: ${FRONTEND_LOGO:-} 61 FRONTEND_API_URL: ${FRONTEND_API_URL:-} 62 FRONTEND_MEDIA_URL: ${FRONTEND_MEDIA_URL:-} 63 FRONTEND_CACHE_URL: ${FRONTEND_CACHE_URL:-} 64 FRONTEND_CACHE_BACKUP_URLS: ${FRONTEND_CACHE_BACKUP_URLS:-} 65 FRONTEND_SHORTEN_POSTS: ${FRONTEND_SHORTEN_POSTS:-} 66 FRONTEND_DISABLE_PWA: ${FRONTEND_DISABLE_PWA:-} 67 FRONTEND_MAINTENANCE: ${FRONTEND_MAINTENANCE:-} 68 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 69 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 70 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 71 72 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 73 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 74 HIDE_BLOCKED_SERVERS: ${HIDE_BLOCKED_SERVERS:-} 75 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 76 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 77 78 FRONTEND_FQDN_URL: https://${DOMAIN_NAME} 79 80 ENABLE_RAW_OUTPUT: ${ENABLE_RAW_OUTPUT:-} 81 volumes: 82 - ./packages/backend/uploads:/app/packages/backend/uploads 83 - ./packages/backend/cache:/app/packages/backend/cache 84 - frontend:/app/packages/frontend:ro 85 86 migration: 87 <<: *default_backend 88 depends_on: 89 db: 90 condition: service_started 91 redis: 92 condition: service_started 93 frontend: 94 condition: service_started 95 restart: no 96 command: "npm exec tsx migrate.ts init-container" 97 98 frontend: 99 restart: unless-stopped 100 build: 101 context: . 102 dockerfile: packages/frontend/Dockerfile 103 ports: 104 - 80:80 105 - 443:443 106 environment: 107 DOMAIN_NAME: ${DOMAIN_NAME} 108 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 109 CACHE_DOMAIN: ${CACHE_DOMAIN} 110 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 111 112 DONATION_URL: ${DONATION_URL} 113 ACME_EMAIL: ${ACME_EMAIL} 114 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 115 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 116 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 117 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 118 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 119 HIDE_BLOCKED_SERVERS: ${HIDE_BLOCKED_SERVERS:-} 120 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 121 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 122 volumes: 123 - "caddy:/data" 124 - "frontend:/var/www/html/frontend" 125 - ./packages/backend/uploads:/var/www/html/uploads 126 - ./packages/caddy:/etc/caddy/config 127 128 db: 129 image: postgres:17 130 restart: unless-stopped 131 shm_size: '2gb' 132 environment: 133 POSTGRES_USER: ${POSTGRES_USER} 134 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 135 POSTGRES_DB: ${POSTGRES_DBNAME} 136 volumes: 137 - dbpg:/var/lib/postgresql/data 138 139 adminer: 140 image: adminer 141 restart: unless-stopped 142 143 redis: 144 image: redis:7.2.4 145 restart: unless-stopped 146 volumes: 147 - redis:/data 148 149 pds: 150 image: ghcr.io/bluesky-social/pds:0.4 151 restart: unless-stopped 152 profiles: 153 - bluesky 154 environment: 155 PDS_HOSTNAME: ${PDS_DOMAIN_NAME} 156 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 157 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 158 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} 159 PDS_DATA_DIRECTORY: /pds 160 PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks 161 PDS_BLOB_UPLOAD_LIMIT: 157286400 162 PDS_DID_PLC_URL: "https://plc.directory" 163 PDS_BSKY_APP_VIEW_URL: "https://api.bsky.app" 164 PDS_BSKY_APP_VIEW_DID: "did:web:api.bsky.app" 165 PDS_REPORT_SERVICE_URL: "https://mod.bsky.app" 166 PDS_REPORT_SERVICE_DID: "did:plc:ar7c4by46qjdydhdevvrndac" 167 PDS_CRAWLERS: "https://bsky.network, https://atproto.africa" 168 PDS_EMAIL_SMTP_URL: "smtps://${SMTP_USER}:${SMTP_PASSWORD}@${SMTP_HOST}:${SMTP_PORT}" 169 PDS_EMAIL_FROM_ADDRESS: "${SMTP_FROM}" 170 LOG_ENABLED: true 171 volumes: 172 - pds:/pds 173 174 pds_worker: 175 <<: *default_backend 176 profiles: 177 - bluesky 178 command: "npm exec tsx atproto.ts" 179 180volumes: 181 dbpg: 182 caddy: 183 pds: 184 frontend: 185 redis: 186 187networks: 188 default: 189 enable_ipv6: true