unoffical wafrn mirror wafrn.net
atproto social-network activitypub
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at feature/drafts 329 lines 10 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 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 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 79 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 80 BUBBLE_SERVERS_SHOW_TYPE: ${BUBBLE_SERVERS_SHOW_TYPE:-} 81 BLOCKED_SERVERS_SHOW_TYPE: ${BLOCKED_SERVERS_SHOW_TYPE:-} 82 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 83 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX:-} 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 - ./packages/backend/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_started 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 frontend: 112 restart: unless-stopped 113 build: 114 context: . 115 dockerfile: packages/frontend/Dockerfile 116 ports: 117 - 80:80 118 - 443:443 119 extra_hosts: 120 - "host.docker.internal:host-gateway" 121 environment: 122 DOMAIN_NAME: ${DOMAIN_NAME} 123 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME} 124 CACHE_DOMAIN: ${CACHE_DOMAIN} 125 MEDIA_DOMAIN: ${MEDIA_DOMAIN} 126 127 DONATION_URL: ${DONATION_URL} 128 ACME_EMAIL: ${ACME_EMAIL} 129 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-} 130 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-} 131 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-} 132 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-} 133 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-} 134 BUBBLE_SERVERS_SHOW_TYPE: ${BUBBLE_SERVERS_SHOW_TYPE:-} 135 BLOCKED_SERVERS_SHOW_TYPE: ${BLOCKED_SERVERS_SHOW_TYPE:-} 136 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-} 137 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX:-} 138 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-} 139 CACHE_HOST: "cache:9000" 140 BACKEND_HOST: "wafrn-backend-1:9000 wafrn-backend-2:9000 wafrn-backend-3:9000" 141 WEBSOCKET_HOST: "wafrn-websocket-1:9000" 142 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 restart: unless-stopped 154 shm_size: '2gb' 155 environment: 156 POSTGRES_USER: ${POSTGRES_USER} 157 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 158 POSTGRES_DB: ${POSTGRES_DBNAME} 159 POSTGRES_METRICS_USER: ${POSTGRES_METRICS_USER} 160 POSTGRES_METRICS_PASSWORD: ${POSTGRES_METRICS_PASSWORD} 161 POSTGRES_METRICS_DBNAME: ${POSTGRES_METRICS_DBNAME} 162 volumes: 163 - dbpg:/var/lib/postgresql/data 164 165 adminer: 166 image: adminer 167 restart: unless-stopped 168 169 redis: 170 image: redis:8.4 171 restart: unless-stopped 172 volumes: 173 - redis:/data 174 175 pds: 176 image: ghcr.io/bluesky-social/pds:0.4 177 restart: unless-stopped 178 profiles: 179 - bluesky 180 environment: 181 PDS_HOSTNAME: ${PDS_DOMAIN_NAME} 182 PDS_JWT_SECRET: ${PDS_JWT_SECRET} 183 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD} 184 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} 185 PDS_DATA_DIRECTORY: /pds 186 PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks 187 PDS_BLOB_UPLOAD_LIMIT: 157286400 188 PDS_DID_PLC_URL: "https://plc.directory" 189 #PDS_BSKY_APP_VIEW_URL: "https://api.blacksky.community" 190 #PDS_BSKY_APP_VIEW_DID: "did:web:api.blacksky.community" 191 PDS_BSKY_APP_VIEW_URL: ${PDS_APPVIEW_URL:-https://api.bsky.app} 192 PDS_BSKY_APP_VIEW_DID: ${PDS_APPVIEW_DID:-did:web:api.bsky.app} 193 PDS_REPORT_SERVICE_URL: ${PDS_MOD_URL:-https://mod.bsky.app} 194 PDS_REPORT_SERVICE_DID: ${PDS_MOD_DID:-did:plc:ar7c4by46qjdydhdevvrndac} 195 PDS_CRAWLERS: ${PDS_CRAWLERS:-https://bsky.network, https://atproto.africa} 196 PDS_SERVICE_HANDLE_DOMAINS: ${PDS_HANDLE_DOMAINS:-.${PDS_DOMAIN_NAME}} 197 PDS_EMAIL_SMTP_URL: "smtps://${SMTP_USER}:${SMTP_PASSWORD}@${SMTP_HOST}:${SMTP_PORT}" 198 PDS_EMAIL_FROM_ADDRESS: "${SMTP_FROM}" 199 LOG_ENABLED: true 200 volumes: 201 - pds:/pds 202 203 pds_worker: 204 <<: *default_backend 205 deploy: 206 mode: replicated 207 replicas: 1 208 profiles: 209 - bluesky 210 command: "npm exec tsx atproto.ts" 211 212 cache: 213 <<: *default_backend 214 deploy: 215 mode: replicated 216 replicas: 1 217 websocket: 218 <<: *default_backend 219 deploy: 220 mode: replicated 221 replicas: 1 222 command: "npm exec tsx websocket.ts" 223 224 workers: 225 <<: *default_backend 226 build: 227 <<: *default_backend_build 228 environment: 229 <<: *default_backend_env_vars 230 USE_WORKERS: true 231 deploy: 232 mode: replicated 233 replicas: 3 234 235 prometheus: 236 restart: unless-stopped 237 image: prom/prometheus:latest 238 volumes: 239 - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml 240 - prometheus_data:/prometheus 241 command: 242 - '--config.file=/etc/prometheus/prometheus.yml' 243 - '--storage.tsdb.path=/prometheus' 244 - '--web.console.libraries=/usr/share/prometheus/console_libraries' 245 - '--web.console.templates=/usr/share/prometheus/consoles' 246 247 cadvisor: 248 restart: unless-stopped 249 image: gcr.io/cadvisor/cadvisor:latest 250 command: 251 - '-port=8081' 252 environment: 253 CADVISOR_HEALTHCHECK_URL: http://localhost:8081/healthz 254 volumes: 255 - /:/rootfs:ro 256 - /var/run:/var/run:rw 257 - /sys:/sys:ro 258 - /var/lib/docker/:/var/lib/docker:ro 259 260 node-exporter: 261 restart: unless-stopped 262 image: prom/node-exporter:latest 263 volumes: 264 - /proc:/host/proc:ro 265 - /sys:/host/sys:ro 266 - /:/rootfs:ro 267 command: 268 - '--path.procfs=/host/proc' 269 - '--path.sysfs=/host/sys' 270 - '--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($$|/)"' 271 272 grafana: 273 build: 274 context: monitoring/grafana 275 dockerfile: Dockerfile 276 volumes: 277 - grafana_data:/var/lib/grafana 278 restart: unless-stopped 279 environment: 280 GF_SERVER_HTTP_PORT: 2345 281 GF_SECURITY_ADMIN_PASSWORD: ${GF_SECURITY_ADMIN_PASSWORD} 282 GF_USERS_ALLOW_SIGN_UP: false 283 284 GF_SMTP_ENABLED: true 285 GF_SMTP_HOST: ${SMTP_HOST}:${SMTP_PORT} 286 GF_SMTP_FROM_ADDRESS: ${SMTP_FROM} 287 GF_SERVER_DOMAIN: ${DOMAIN_NAME} 288 GF_SMTP_FROM_NAME: ${SMTP_FROM} 289 GF_SMTP_USER: "${SMTP_USER}" 290 GF_SMTP_PASSWORD: "${SMTP_PASSWORD}" 291 292 POSTGRES_METRICS_USER: ${POSTGRES_METRICS_USER} 293 POSTGRES_METRICS_PASSWORD: ${POSTGRES_METRICS_PASSWORD} 294 POSTGRES_METRICS_DBNAME: ${POSTGRES_METRICS_DBNAME} 295 296 pgwatch: 297 build: 298 context: monitoring/pgwatch 299 dockerfile: Dockerfile 300 args: 301 POSTGRES_USER: ${POSTGRES_USER} 302 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 303 POSTGRES_DB: ${POSTGRES_DBNAME} 304 restart: unless-stopped 305 environment: 306 POSTGRES_METRICS_USER: ${POSTGRES_METRICS_USER} 307 POSTGRES_METRICS_PASSWORD: ${POSTGRES_METRICS_PASSWORD} 308 POSTGRES_METRICS_DBNAME: ${POSTGRES_METRICS_DBNAME} 309 command: 310 - "--web-disable=all" 311 - "--sources=/sources.yaml" 312 - "--sink=postgresql://${POSTGRES_METRICS_USER}:${POSTGRES_METRICS_PASSWORD}@db:5432/${POSTGRES_METRICS_DBNAME}" 313 depends_on: 314 db: 315 condition: service_started 316 317volumes: 318 dbpg: 319 caddy: 320 pds: 321 frontend: 322 redis: 323 prometheus_data: 324 grafana_data: 325 326 327networks: 328 default: 329 enable_ipv6: true