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