unoffical wafrn mirror
wafrn.net
atproto
social-network
activitypub
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 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 CONSTELLATION_URL: ${CONSTELLATION_URL:-}
61 SLINGSHOT_URL: ${SLINGSHOT_URL:-}
62 JETSTREAM_URL: ${JETSTREAM_URL:-}
63
64 FRONTEND_LOGO: ${FRONTEND_LOGO:-}
65 FRONTEND_API_URL: ${FRONTEND_API_URL:-}
66 FRONTEND_MEDIA_URL: ${FRONTEND_MEDIA_URL:-}
67 FRONTEND_CACHE_URL: ${FRONTEND_CACHE_URL:-}
68 FRONTEND_CACHE_BACKUP_URLS: ${FRONTEND_CACHE_BACKUP_URLS:-}
69 FRONTEND_SHORTEN_POSTS: ${FRONTEND_SHORTEN_POSTS:-}
70 FRONTEND_DISABLE_PWA: ${FRONTEND_DISABLE_PWA:-}
71 FRONTEND_MAINTENANCE: ${FRONTEND_MAINTENANCE:-}
72 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-}
73 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-}
74 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-}
75
76 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-}
77 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-}
78 BUBBLE_SERVERS_SHOW_TYPE: ${BUBBLE_SERVERS_SHOW_TYPE:-}
79 BLOCKED_SERVERS_SHOW_TYPE: ${BLOCKED_SERVERS_SHOW_TYPE:-}
80 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-}
81 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX:-}
82 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-}
83
84 FRONTEND_FQDN_URL: https://${DOMAIN_NAME}
85
86 ENABLE_RAW_OUTPUT: ${ENABLE_RAW_OUTPUT:-}
87 volumes:
88 - ./packages/backend/uploads:/app/packages/backend/uploads
89 - cache:/app/packages/backend/cache
90 - frontend:/app/packages/frontend:ro
91
92 migration:
93 <<: *default_backend
94 depends_on:
95 db:
96 condition: service_healthy
97 redis:
98 condition: service_started
99 frontend:
100 condition: service_started
101 restart: no
102 command: "npm exec tsx migrate.ts init-container"
103
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 extra_hosts:
114 - "host.docker.internal:host-gateway"
115 environment:
116 DOMAIN_NAME: ${DOMAIN_NAME}
117 PDS_DOMAIN_NAME: ${PDS_DOMAIN_NAME}
118 CACHE_DOMAIN: ${CACHE_DOMAIN}
119 MEDIA_DOMAIN: ${MEDIA_DOMAIN}
120
121 DONATION_URL: ${DONATION_URL}
122 ACME_EMAIL: ${ACME_EMAIL}
123 FRONTEND_SHORT_TITLE: ${FRONTEND_SHORT_TITLE:-}
124 FRONTEND_LONG_TITLE: ${FRONTEND_LONG_TITLE:-}
125 FRONTEND_DESCRIPTION: ${FRONTEND_DESCRIPTION:-}
126 REGISTRATION_LEVEL: ${REGISTRATION_LEVEL:-}
127 REGISTRATIONS_DISABLED_TEXT: ${REGISTRATIONS_DISABLED_TEXT:-}
128 BUBBLE_SERVERS_SHOW_TYPE: ${BUBBLE_SERVERS_SHOW_TYPE:-}
129 BLOCKED_SERVERS_SHOW_TYPE: ${BLOCKED_SERVERS_SHOW_TYPE:-}
130 AUTOFOLLOW_MAIN_ADMIN: ${AUTOFOLLOW_MAIN_ADMIN:-}
131 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX:-}
132 REGISTRATION_MINIMUM_AGE: ${REGISTRATION_MINIMUM_AGE:-}
133 volumes:
134 - "caddy:/data"
135 - "frontend:/var/www/html/frontend"
136 - ./packages/backend/uploads:/var/www/html/uploads
137 - ./packages/caddy:/etc/caddy/config
138
139 db:
140 build:
141 context: monitoring/database
142 dockerfile: Dockerfile
143 #command: -c 'max_connections=500'
144 restart: unless-stopped
145 shm_size: '2gb'
146 environment:
147 POSTGRES_USER: ${POSTGRES_USER}
148 POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
149 POSTGRES_DB: ${POSTGRES_DBNAME}
150 volumes:
151 - dbpg:/var/lib/postgresql/data
152
153 adminer:
154 image: adminer
155 restart: unless-stopped
156
157 redis:
158 image: redis:8.4
159 restart: unless-stopped
160 volumes:
161 - redis:/data
162
163 pds:
164 image: ghcr.io/bluesky-social/pds:0.4
165 restart: unless-stopped
166 profiles:
167 - bluesky
168 environment:
169 PDS_HOSTNAME: ${PDS_DOMAIN_NAME}
170 PDS_JWT_SECRET: ${PDS_JWT_SECRET}
171 PDS_ADMIN_PASSWORD: ${PDS_ADMIN_PASSWORD}
172 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}
173 PDS_DATA_DIRECTORY: /pds
174 PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks
175 PDS_BLOB_UPLOAD_LIMIT: 157286400
176 PDS_DID_PLC_URL: "https://plc.directory"
177 #PDS_BSKY_APP_VIEW_URL: "https://api.blacksky.community"
178 #PDS_BSKY_APP_VIEW_DID: "did:web:api.blacksky.community"
179 PDS_BSKY_APP_VIEW_URL: ${PDS_APPVIEW_URL:-https://api.bsky.app}
180 PDS_BSKY_APP_VIEW_DID: ${PDS_APPVIEW_DID:-did:web:api.bsky.app}
181 PDS_REPORT_SERVICE_URL: ${PDS_MOD_URL:-https://mod.bsky.app}
182 PDS_REPORT_SERVICE_DID: ${PDS_MOD_DID:-did:plc:ar7c4by46qjdydhdevvrndac}
183 PDS_CRAWLERS: ${PDS_CRAWLERS:-https://bsky.network, https://atproto.africa}
184 PDS_SERVICE_HANDLE_DOMAINS: ${PDS_HANDLE_DOMAINS:-.${PDS_DOMAIN_NAME}}
185 PDS_EMAIL_SMTP_URL: "smtps://${SMTP_USER}:${SMTP_PASSWORD}@${SMTP_HOST}:${SMTP_PORT}"
186 PDS_EMAIL_FROM_ADDRESS: "${SMTP_FROM}"
187 LOG_ENABLED: true
188 volumes:
189 - pds:/pds
190
191 pds_worker:
192 <<: *default_backend
193 profiles:
194 - bluesky
195 command: "npm exec tsx atproto.ts"
196
197volumes:
198 dbpg:
199 caddy:
200 pds:
201 frontend:
202 redis:
203 cache:
204
205
206networks:
207 default:
208 enable_ipv6: true