A modified version of Wafrn used on https://wf.jbc.lol (mirror of https://git.jbc.lol/jbcrn/wf.jbc.lol which is a mirror of https://codeberg.org/jbcarreon123/wf.jbc.lol)
at development 170 lines 5.1 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_healthy 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 SMTP_HOST: ${SMTP_HOST} 28 SMTP_USER: ${SMTP_USER} 29 SMTP_PORT: ${SMTP_PORT} 30 SMTP_PASSWORD: ${SMTP_PASSWORD} 31 SMTP_FROM: ${SMTP_FROM} 32 33 POSTGRES_USER: ${POSTGRES_USER} 34 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 35 POSTGRES_DBNAME: ${POSTGRES_DBNAME} 36 37 WEBPUSH_EMAIL: ${WEBPUSH_EMAIL} 38 WEBPUSH_PRIVATE: ${WEBPUSH_PRIVATE} 39 WEBPUSH_PUBLIC: ${WEBPUSH_PUBLIC} 40 41 ENABLE_BSKY: ${ENABLE_BSKY} 42 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 43 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 44 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 45 46 USE_WORKERS: true 47 LOG_SQL_QUERIES: ${LOG_SQL_QUERIES:-} 48 UPLOAD_LIMIT: ${UPLOAD_LIMIT:-} 49 POSTS_PER_PAGE: ${POSTS_PER_PAGE:-} 50 LOG_LEVEL: ${LOG_LEVEL:-} 51 BLOCKLIST_URI: ${BLOCKLIST_URI:-} 52 FRONTEND_PATH: ${FRONTEND_PATH:-} 53 DISABLE_REQUIRE_SEND_EMAIL: ${DISABLE_REQUIRE_SEND_EMAIL:-} 54 BLOCKED_IPS: ${BLOCKED_IPS:-} 55 REVIEW_REGISTRATIONS: ${REVIEW_REGISTRATIONS:-} 56 IGNORE_BLOCK_HOSTS: ${IGNORE_BLOCK_HOSTS:-} 57 58 FRONTEND_LOGO: ${FRONTEND_LOGO:-} 59 FRONTEND_API_URL: ${FRONTEND_API_URL:-} 60 FRONTEND_MEDIA_URL: ${FRONTEND_MEDIA_URL:-} 61 FRONTEND_CACHE_URL: ${FRONTEND_CACHE_URL:-} 62 FRONTEND_CACHE_BACKUP_URLS: ${FRONTEND_CACHE_BACKUP_URLS:-} 63 FRONTEND_SHORTEN_POSTS: ${FRONTEND_SHORTEN_POSTS:-} 64 FRONTEND_DISABLE_PWA: ${FRONTEND_DISABLE_PWA:-} 65 FRONTEND_MAINTENANCE: ${FRONTEND_MAINTENANCE:-} 66 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 67 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 68 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 69 70 FRONTEND_FQDN_URL: https://${DOMAIN_NAME} 71 72 ENABLE_RAW_OUTPUT: ${ENABLE_RAW_OUTPUT:-} 73 volumes: 74 - ./packages/backend/uploads:/app/packages/backend/uploads 75 - ./packages/backend/cache:/app/packages/backend/cache 76 - frontend:/app/packages/frontend:ro 77 78 migration: 79 <<: *default_backend 80 depends_on: 81 db: 82 condition: service_started 83 redis: 84 condition: service_started 85 frontend: 86 condition: service_started 87 restart: no 88 command: "npm exec tsx migrate.ts init-container" 89 90 frontend: 91 restart: unless-stopped 92 build: 93 context: . 94 dockerfile: packages/frontend/Dockerfile 95 ports: 96 - 80:80 97 - 443:443 98 environment: 99 DOMAIN_NAME: ${DOMAIN_NAME} 100 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 101 CACHE_DOMAIN: ${CACHE_DOMAIN} 102 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 103 ACME_EMAIL: ${ACME_EMAIL} 104 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 105 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 106 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 107 volumes: 108 - "caddy:/data" 109 - "frontend:/var/www/html/frontend" 110 - ./packages/backend/uploads:/var/www/html/uploads 111 - ./packages/caddy:/etc/caddy/config 112 113 db: 114 image: postgres:17 115 restart: unless-stopped 116 shm_size: '2gb' 117 environment: 118 POSTGRES_USER: ${POSTGRES_USER} 119 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 120 POSTGRES_DB: ${POSTGRES_DBNAME} 121 volumes: 122 - dbpg:/var/lib/postgresql/data 123 124 adminer: 125 image: adminer 126 restart: unless-stopped 127 128 redis: 129 image: redis:7.2.4 130 restart: unless-stopped 131 volumes: 132 - redis:/data 133 134 pds: 135 image: ghcr.io/bluesky-social/pds:0.4 136 restart: unless-stopped 137 profiles: 138 - bluesky 139 environment: 140 PDS_HOSTNAME: ${PDS_DOMAIN_NAME} 141 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 142 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 143 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} 144 PDS_DATA_DIRECTORY: /pds 145 PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks 146 PDS_BLOB_UPLOAD_LIMIT: 52428800 147 PDS_DID_PLC_URL: "https://plc.directory" 148 PDS_BSKY_APP_VIEW_URL: "https://api.bsky.app" 149 PDS_BSKY_APP_VIEW_DID: "did:web:api.bsky.app" 150 PDS_REPORT_SERVICE_URL: "https://mod.bsky.app" 151 PDS_REPORT_SERVICE_DID: "did:plc:ar7c4by46qjdydhdevvrndac" 152 PDS_CRAWLERS: "https://bsky.network, https://atproto.africa" 153 PDS_EMAIL_SMTP_URL: "smtp://${SMTP_USER}:${SMTP_PASSWORD}@${SMTP_HOST}:${SMTP_PORT}" 154 PDS_EMAIL_FROM_ADDRESS: "${SMTP_FROM}" 155 LOG_ENABLED: true 156 volumes: 157 - pds:/pds 158 159 pds_worker: 160 <<: *default_backend 161 profiles: 162 - bluesky 163 command: "npm exec tsx atproto.ts" 164 165volumes: 166 dbpg: 167 caddy: 168 pds: 169 frontend: 170 redis: