Iki produk lengkap ing siji host: LMS, pagawean latar, layanan realtime lan nyunting bebarengan, lan saben layanan opsional ing mburine profil. Desaine iku docs/architecture/23-ops.md bagean 2.
Target liyane: Vercel lan Cloudflare Workers mbukak tier web wae. Upgrade ana ing upgrade.md, lan serep lan latihan restore ing backup-restore.md.
Apa sing dibutuhake
- Docker Engine 27 utawa luwih anyar kanthi plugin Compose 2.30 utawa luwih anyar.
- 4 inti CPU lan 8 GB memori kanggo stack gawan; 8 inti lan 16 GB nganggo
--profile full(ClamAV dhewe nyekel kira-kira 1.5 GB signature). - Jeneng DNS kanggo tier web lan siji maneh kanggo konten sing ora dipercaya. Kudu host beda: paket SCORM lan HTML sing diunggah mlaku ing origin konten supaya ora tau bisa maca cookie LMS.
- Kanggo tes lokal,
lvh.melan*.localhostngrampungake menyang 127.0.0.1, sing digunakakedocker/.env.example. Layananproxystack dhewe ngladeni kalorone liwat https nganggo certificate authority lokal, supaya ora ana liyane sing diinstal (deleng “TLS”). - Port 80 lan 443 bebas ing host (
QUIRE_PROXY_HTTP_PORTlanQUIRE_PROXY_HTTPS_PORTmindhah).
Mlaku kapisan
QUIRE_APP_ORIGIN=https://learn.example.org \
QUIRE_CONTENT_ORIGIN=https://content.example-content.org \
QUIRE_SETUP_ADMIN_EMAIL=you@example.org \
docker/scripts/init-env.sh
docker compose -f docker/compose.yaml up -d --build
docker compose -f docker/compose.yaml logs initdocker/scripts/init-env.sh nulis docker/.env saka docker/.env.example kanthi saben rahasia digawe (tembung sandhi database, kunci signing lan master, pasangan kunci launch konten) lan kunci signing checkpoint audit ing docker/secrets/audit-signing-key.pem, sing dipasang Compose menyang worker minangka rahasia. Mung butuh sh, awk lan openssl, lan nolak nimpa docker/.env sing wis ana. Salin kalorone file saka host: tanpa QUIRE_MASTER_KEY database sing dibalekake ora bisa dekripsi kredensial sing disimpen. Kanggo ngisi file kanthi tangan, cp docker/.env.example docker/.env; file ngandhani carane nggawe saben rahasia.
Kalorone origin kudu https: layanan konten nolak http biasa ing produksi, lan ora kudu nuduhake domain sing bisa didaftar. Layanan proxy mungkasi TLS kanggo kalorone (deleng “TLS”); init-env.sh nolak origin http://.
Stack miwiti kanthi urutan tetep, lan saben langkah ngenteni sing sadurunge:
postgresdadi sehat. Ing miwiti pisanan skrip init-e (docker/postgres/init/90-passwords.sh) nyetel tembung sandhi papat peran.migratengetrapake saben migrasi lan bootstrap antrean pagawean ing database kontrol lan ing saben database tenant khusus, mriksa kabeh sarujuk, banjur metu (docs/ops/upgrade.md). Migrasi mlaku ing saben miwiti lan idempoten, dadi upgrade iku image anyar lan restart.init(apps/web/src/first-run.ts) nyathet database aplikasi ing sangisoreQUIRE_DATABASE_IDlan, nalikaQUIRE_SETUP_ADMIN_EMAILdisetel, nggawe organisasi kapisan lan administratore. Alamat mlebu lan tembung sandhi sing digawe dicithak sapisan, ingdocker compose logs init.web,content,worker,scheduler,collablancentrifugomiwiti.proxymiwiti yenweblancontentsehat.
Bukak https://demo. diterusake domain aplikasi panjenengan (log init nyithak alamat mlebu persis), lan mlebu. Ing instalasi lokal, percaya certificate authority proxy dhisik (deleng “TLS”). Ganti tembung sandhi sing digawe ing /account/security.
Proses sing diwiwiti tanpa rahasia sing dibutuhake nolak miwiti lan nyebutake setelan sing ilang ing loge. Ora ana sing miwiti setengah dikonfigurasi.
Layanan lan profil
| Layanan | Profil | Apa sing ditindakake |
|---|---|---|
| postgres | always | Database (PostgreSQL 18 nganggo pgvector, dibangun saka docker/postgres.Dockerfile), kanthi WAL diarsipake wiwit boot kapisan |
| migrate, init | always | Sapisan: migrasi, banjur mlaku kapisan |
| web | always | LMS, ing QUIRE_HTTP_PORT (8080) |
| content | always | Origin konten sing ora dipercaya, ing QUIRE_CONTENT_PORT (8081) |
| worker | always | Pagawean latar: email, laporan, pangolahan file, webhook |
| scheduler | always | Pagawean rutin: ndhaftarake 64 jadwal runtime lan masrahake menyang worker; siji leader ing wektu |
| collab | always | Websocket nyunting bebarengan, ing QUIRE_COLLAB_HTTP_PORT (1234) |
| centrifugo | always | Fan-out realtime, ing QUIRE_REALTIME_PORT (8000) |
| proxy | always | Caddy, lawang ngarep TLS ing port 80 lan 443 (deleng “TLS”) |
| valkey | cache |
Cache lan wates rate |
| clamav | scan |
Scan malware unggahan |
| gotenberg | preview |
Pratinjau Office menyang PDF, rendering sertifikat |
| imgproxy | images |
Gambar sing diowahi ukuran lan dikonversi |
| transcoder | video |
Image worker kanthi ffmpeg mung-LGPL, kanggo rendisi video |
| seaweedfs | storage |
Panyimpenan objek kompatibel S3 ing host iki |
| otelcol | observability |
Kolektor OpenTelemetry |
| mailpit | devmail |
Nyekel kabeh mail metu, kanggo nyoba Quire |
| backup | backup |
Serep dasar sapisan; deleng backup-restore.md |
| backup-scheduler, backup-offsite | backup |
Serep dasar saben QUIRE_BACKUP_INTERVAL_HOURS, lan salinan off-host dienkripsi kanthi latihan verifikasi mingguan |
| h5p | h5p |
Image piranti H5P LTI 1.3 sing disedhiyakake ing QUIRE_H5P_IMAGE, ing QUIRE_H5P_PORT (8090); deleng “Connecting an H5P provider” |
--profile full miwiti saben layanan opsional kajaba backup lan h5p. Miwiti siji nganggo docker compose -f docker/compose.yaml --profile scan up -d. Tanpa layanan opsional Quire tetep mlaku lan ngandhani apa sing ilang: tanpa scanner tegese unggahan disimpen tanpa discan lan administrator dikandhani; tanpa Gotenberg tegese file nawakake undhuhan tinimbang pratinjau; tanpa transcoder tegese video muter minangka file asli.
Saben image pihak katelu lan kewajiban lisensine kadhaptar ing docker/third-party-containers.yaml.
Nyambungake panyedhiya H5P
Quire ora nempelake utawa ngirim runtime utawa sidecar H5P (ADR 0019). Yen nggunakake H5P, sedhiyakake langganan sing dihosting dhewe utawa operasikake instance H5P sing dihosting dhewe kapisah saka Quire. Dhaptarake panyedhiya kasebut minangka piranti eksternal LTI 1.3 lan tambah kontene menyang kursus minangka aktivitas piranti. Quire ngijolake biji lan kemajuan aktivitas/pambiji liwat LTI Assignment and Grade Services (AGS). Yen panyedhiya uga ngirim pernyataan xAPI, konfigurasi kapisah kanggo statement store xAPI Quire; ijolan biji/kemajuan AGS ora ngirim pernyataan xAPI. Impor Moodle nglaporake aktivitas H5P butuh sambungan piranti LTI. Panyedhiya tetep tanggung jawab kanggo runtime H5P, authoring, bank konten lan riwayat jawabane.
Kanggo mbukak instance sing dihosting dhewe ing host iki, setel QUIRE_H5P_IMAGE menyang image-e lan miwiti profil h5p. Compose nerbitake ing QUIRE_H5P_PORT (8090) lan njaga datane ing volume h5p-data; image-e, lan kewajiban sing teka karo iku, tetep duweke panjenengan.
Setelan
Saben proses maca docker/.env. Template, docker/.env.example, ndhaftar saben setelan kanthi gawane. Kelompoke:
Alamat
| Setelan | Tegese |
|---|---|
QUIRE_APP_ORIGIN |
Alamat publik LMS, kayata https://learn.example.com |
QUIRE_CONTENT_ORIGIN |
Origin konten, host beda |
QUIRE_PLATFORM_DOMAINS |
Domain panggonan organisasi manggon, dipisahake koma |
QUIRE_MARKETING_ORIGIN |
Optional. The marketing site, default https://quirelms.com. The only origin the waitlist form (POST /api/waitlist, POST /waitlist) accepts and redirects to. Comma separated; a www. variant is allowed only if listed |
QUIRE_DEPLOY_TARGET |
compose ing kene. Deleng pandhuan liyane kanggo vercel lan cloudflare |
QUIRE_TRUSTED_PROXY_CIDRS |
Proxy sing X-Forwarded-For-e dipercaya |
Rahasia
| Setelan | Tegese |
|---|---|
QUIRE_SECRET_KEY |
Nandatangani sesi lan token. 64 karakter hex |
QUIRE_MASTER_KEY |
Mbungkus kredensial sing disimpen kayata rahasia SSO lan webhook. 32 byte, base64. Tier web lan worker butuh nilai sing padha. Rotasi: key-rotation.md |
QUIRE_MASTER_KEY_VERSION |
Label versi kunci master, v1 nalika ora disetel. Naikke nalika muter |
QUIRE_MASTER_KEY_RETIRED |
Kunci master sadurunge sing isih dibutuhake kanggo maca apa sing disegel, minangka v1=<base64>. Copot sawise rotasi rampung tanpa sing ora dirampungake |
QUIRE_COLLAB_SIGNING_KEY |
Dienggo bareng web lan collab kanggo nandatangani token nyunting |
QUIRE_BACKUP_SIGNING_KEY |
Nandatangani serep kursus (opsional) |
Simpen salinan QUIRE_MASTER_KEY ing papan liya saka host iki. Database sing dibalekake tanpane ora bisa dekripsi kredensial sing dicekel.
Database
| Setelan | Tegese |
|---|---|
POSTGRES_PASSWORD |
Superuser, digunakake dening container lan serep |
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD |
Tembung sandhi peran, disetel ing miwiti kapisan |
DATABASE_URL |
Peran aplikasi. Keamanan tingkat baris berlaku kanggo saben query sing digawe |
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL |
Peran migrator, kanggo migrate lan init |
QUIRE_SUPERUSER_URL |
Digunakake mung dening mlaku kapisan |
QUIRE_REPORT_DATABASE_URL |
Peran laporan read-only, kanggo laporan lan pembangun laporan |
QUIRE_AUDIT_DATABASE_URL |
Peran audit, kanggo konsol audit lan ekspor SIEM |
QUIRE_DATABASE_ID |
UUID apa wae, tetep suwene instalasi |
Tembung sandhi peran ditrapake mung nalika volume database pisanan digawe. Kanggo ngganti mengko, gunakake ALTER ROLE banjur nganyari URL sing cocog.
QUIRE_REPORT_DATABASE_URL digunakake kanggo database fisik sing dikonfigurasi dening DATABASE_URL. Kanggo database fisik kadhaptar liyane, setel URL sambungan quire_report dhewe ing lingkungan web lan worker, banjur lebokake jeneng variabel ing kolom Reporting environment variable database kasebut minangka env:NAME. Referensi kudu nuduhake database sing padha karo sambungan appe, idealnya replika wacane. Saben permukaan laporan ngetutake tenant menyang sambungan laporan database dhewe: pembangun laporan lan laporan sing disimpen, pangiriman terjadwal, ekspor laporan, analitik, log audit, sumber audit REST lan panelusuran audit asisten. Ora ana sing tau nyilih URL laporan database liya. Nalika database ora duwe sambungan laporan, laporan biasa mlaku ing sambungan aplikasi database dhewe, dene analitik lan saben wacan audit nolak lan ngandhani, amarga peran aplikasi ora bisa maca jejak audit.
Driver
| Setelan | Rilis iki | Cathetan |
|---|---|---|
QUIRE_STORAGE_DRIVER |
local (gawan), s3 utawa azure |
local nyimpen file ing volume files. s3 nyakup AWS S3, R2, interoperabilitas GCS lan toko kompatibel S3 liyane, kanthi unggahan multipart sing bisa diterusake |
QUIRE_REALTIME_DRIVER |
inprocess (gawan), sse, centrifugo utawa durable_objects |
inprocess pas kanggo siji container web; gunakake centrifugo utawa sse nalika ana pirang |
QUIRE_CACHE_DRIVER |
memory (gawan), postgres utawa valkey |
memory per proses; gunakake valkey utawa postgres supaya wates rate tahan ing antar container |
QUIRE_VIDEO_DRIVER |
ffmpeg (gawan) utawa progressive_mp4 |
Utawa panyedhiya sing dihosting: Cloudflare Stream, Mux utawa Bunny, miturut kunce |
QUIRE_IMAGE_DRIVER |
noop (gawan), imgproxy utawa cloudflare |
noop ngladeni saben gambar ing ukuran asline. imgproxy butuh profil images lan setelan ing ngisor; cloudflare nggunakake Cloudflare Images |
QUIRE_MEETING_PROVIDER |
bbb, zoom, teams, meet, jitsi utawa in_process |
Gawan platform kanggo sesi langsung. Ora disetel, sesi langsung ngandhani ora dikonfigurasi, nganti organisasi nyambungake akune dhewe ing sangisore Integrations, Live session provider. Akun dhewe organisasi tansah menang tinimbang nilai iki. Setelan dhewe saben panyedhiya (BBB_URL lan BBB_SECRET, variabel ZOOM_*, TEAMS_*, GOOGLE_MEET_* lan JITSI_*) diwaca mung kanggo panyedhiya sing dijenengi ing kene |
QUIRE_MEETING_REGIONS |
Dhaptar koma eu, uk, us |
Panggonan panyedhiya gawan platform ngolah rapat. Ora disetel, ora dipriksa nglawan organisasi sing disematake menyang wilayah, kaya sadurunge. Akun dhewe organisasi nyatakake wilayahe ing kacane |
Nilai driver sing ora kalebu rilis iki ditolak nalika tier web miwiti, kanthi setelan dijenengi, tinimbang diganti meneng dening gawan.
Gambar
Kaca njaluk gambar ing patang ukuran tetep liwat /api/files/{id}/image/{size}, sing mriksa akses sing padha karo file dhewe banjur ngalihake menyang layanan gambar. Saben organisasi bisa njaluk QUIRE_IMAGE_SPECS_PER_HOUR (gawan 2000) pasangan gambar lan ukuran anyar sejam; ukuran sing wis diprodhuksi jam kasebut ora dietung. Gunakake valkey utawa postgres kanggo QUIRE_CACHE_DRIVER kanthi luwih saka siji container web, supaya wates tahan ing antarane.
| Setelan | Driver | Cathetan |
|---|---|---|
IMGPROXY_URL |
imgproxy |
Alamat sing digayuh browser imgproxy, contone https://images.example.org. Profil images nerbitake ing QUIRE_IMAGES_PORT (8082) |
IMGPROXY_KEY, IMGPROXY_SALT |
imgproxy |
String hex, nilai sing padha imgproxy diwiwiti. Gawe saben nganggo openssl rand -hex 32. Quire nandatangani saben alamat gambar karo iku, supaya imgproxy ora ngrender apa sing ora dijaluk Quire |
QUIRE_IMAGE_SOURCE_ORIGIN |
imgproxy kanthi panyimpenan lokal |
Panggonan imgproxy njupuk asline. Compose nyetel http://web:3000. Kanthi panyimpenan s3 utawa azure imgproxy njupuk saka bucket lan iki ora digunakake |
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH |
cloudflare |
Token API kanthi ijin edit Images, lan hash akun saka Images, Developer resources. Uripake varian fleksibel kanggo akun |
CLOUDFLARE_IMAGES_SIGNING_KEY |
cloudflare |
Opsional. Nalika disetel, gambar pribadi lan saben alamat ditandatangani lan kadaluwarsa. Tanpane, gambar publik ing alamat sing asale saka QUIRE_SECRET_KEY sing ora bisa ditebak sapa wae |
Cloudflare Images nyimpen salinane dhewe saben asli sing dilayani. Nalika file dibusak, worker mbusak salinan kasebut sadurunge asline.
Antrean
Pagawean latar nggunakake pg-boss ing database Postgres sing padha, supaya ora ana layanan antrean sing dibukak lan ora ana sing dikonfigurasi. Pagawean diantrekake ing transaksi sing padha karo owahan sing njalari, supaya crash ora bisa ilang siji utawa ngirim kaping pindho. QUIRE_QUEUE_DRIVER iku pgboss ing kene, gawane; vercel lan cloudflare mindhah mung pangiriman notifikasi lan webhook entheng menyang antreane platform dhewe, lan pandhuan Vercel lan Cloudflare njlentrehake lan carane tier web-e ngantrekake.
Setel salah siji:
QUIRE_EMAIL_PROVIDER_CONFIG: objek JSON sing nyebutake panyedhiya HTTP lan kredensiale, kayata{"provider":"postmark","token":"..."}. Postmark, Amazon SES, Mailgun, SendGrid lan Resend didhukung.QUIRE_SMTP_URL:smtp://user:password@host:587. Target iki wae; target serverless mblokir SMTP.
QUIRE_MAIL_FROM iku pangirim. Kanggo nyoba Quire, miwiti profil devmail, setel QUIRE_SMTP_URL=smtp://mailpit:1025, lan waca mail ing http://localhost:8025.
Layanan opsional
| Setelan | Kanthi profil |
|---|---|
CLAMAV_URL=tcp://clamav:3310 |
scan |
GOTENBERG_URL=http://gotenberg:3000 |
preview |
IMGPROXY_KEY, IMGPROXY_SALT |
images |
VALKEY_URL=redis://valkey:6379 |
cache |
QUIRE_OPENSEARCH_URL utawa QUIRE_MEILISEARCH_URL |
Panelusuran eksternal; teks lengkap Postgres yen ora |
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL |
Pamriksan pelanggaran tembung sandhi. Urip kanthi gawan nglawan api.pwnedpasswords.com (mung prefiks hash limang karakter sing dikirim); off mateni, lan URL nuduhake menyang range API sing dihosting dhewe |
Observabilitas
OTEL_EXPORTER_OTLP_ENDPOINT nyebutake kolektor sing dikirimi saben proses trace lan metrik; kanthi profil observability iku http://otelcol:4318, lan docker/otel-collector.yaml iku panggonan nambah exporter kanggo backend panjenengan. Proses tier web, worker, scheduler, content lan collab ngekspor span liwat OTLP/HTTP (panjalukan web, transaksi database tenant, pagawean worker lan telpon metu) nalika disetel, lan metrik menyang endpoint sing padha saben menit (OTEL_METRICS_EXPORTER=none mateni). OTEL_TRACES_SAMPLER_ARG nyetel bagean trace sing disimpen. Log menyang output standar ing LOG_LEVEL, lan Compose muter. Trace ora tau nggawa data pribadi.
Egress regional (residensi data EU)
QUIRE_REGION=eu ngandhani stack ngladeni organisasi Uni Eropa. Worker banjur nyekel saben panjalukan metu sing digawe kanggo organisasi sing disematake menyang EU menyang allowlist (21-compliance.md bagean 8.1). Allowlist iku host sing dideklarasikake layanan sing dikonfigurasi kanggo wilayah (endpoint panyimpenan, panyedhiya email, panyedhiya video sing dihosting, target panyimpenan dhewe organisasi, panyedhiya AI lan akun email), host layanan apa wae ing sangisore derogasi aktif, lan host sing kadhaptar ing QUIRE_EGRESS_ALLOW_HOSTS. Panjalukan menyang host publik liyane ditolak sadurunge dikirim, penolakan ditulis menyang jejak audit organisasi minangka privacy/egress_refused, lan kadhaptar ing sangisore Compliance, Data residency.
| Setelan | Nilai | Efek |
|---|---|---|
QUIRE_EGRESS_ALLOW_HOSTS |
Dhaptar koma hostname, utawa *.example.org kanggo saben subdomain |
Host tambahan sing bisa digayuh organisasi EU. Endpoint webhook, xAPI lan SIEM, feed blog lan host Amazon SES kalebu ing kene, amarga iku pilihane organisasi dhewe lan ora ana layanan sing mendeklarasikake. Loopback, alamat pribadi lan jeneng label tunggal kayata web utawa clamav iku jaringan dhewe lan ora tau dipriksa |
Organisasi UK lan US ora dicekel menyang dhaptar host; njaga pamriksan wilayah layanan. Setel dhaptar ing worker; kaca admin maca ing tier web kanggo nuduhake allowlist, dadi lebokake ing docker/.env, sing diwaca saben layanan.
Pamriksan aplikasi menehi kaluputan cetha lan entri audit, lan dudu jaminan: kode bisa salah. Jaminane iku jaringan. Compose ora negakake kanggo panjenengan. Kanggo stack regional, lebokake layanan worker lan web ing jaringan internal: true sing mung rute metune proxy egress (contone Squid utawa container tinyproxy) sing ngidinake host sing padha karo QUIRE_EGRESS_ALLOW_HOSTS ditambah host layanan sing dikonfigurasi, lan setel HTTPS_PROXY kanggo layanan kasebut. Kaca residensi ndhaftar host persis sing diidinake aplikasi, supaya kalorone dhaptar bisa dibandhingake.
Kesehatan
| Endpoint | Tegese |
|---|---|
/healthz |
Liveness: prosese mangsuli. Pamriksan kesehatan Compose nggunakake iki |
/readyz |
Readiness: dependensi bisa digayuh, lan saben layanan opsional dilaporake dikonfigurasi utawa ora. Tudingake load balancer ing kene |
docker compose -f docker/compose.yaml ps nuduhake kesehatane saben layanan.
TLS
Layanan proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile) iku bagean saka stack gawan. Mangsuli ing port 80 lan 443 lan rute:
| Host utawa path | Menyang |
|---|---|
QUIRE_PROXY_CONTENT_HOST |
content |
QUIRE_PROXY_APP_HOST, saben subdomain tenant lan domain khusus |
web |
/_collab/ ing host kasebut |
collab (websocket, QUIRE_COLLAB_URL) |
/_realtime/connection/ ing host kasebut |
websocket klien centrifugo; API servere ora tau diekspos |
/_images/ ing host kasebut |
imgproxy, kanthi profil images (IMGPROXY_URL) |
init-env.sh nurunake QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL lan IMGPROXY_URL saka kalorone origin, supaya ora bisa beda. Owahi bebarengan yen ngganti origin kanthi tangan.
Sertifikat ngetutake QUIRE_PROXY_TLS:
-
internal(gawan): certificate authority Caddy dhewe, kanggolocalhost,*.localhostlanlvh.me. Percaya roote sapisan, banjur browsing:docker compose -f docker/compose.yaml cp \ proxy:/data/caddy/pki/authorities/local/root.crt ./quire-local-ca.crtTambah
quire-local-ca.crtmenyang trust store sistem utawa browser.curlnampa karo--cacert. -
Alamat email: sertifikat ACME otomatis (Let’s Encrypt, banjur ZeroSSL) kanggo hostname asli. DNS kanggo kalorone origin lan saben host tenant kudu nuduhake ing kene, lan port 80 lan 443 kudu bisa digayuh saka internet.
Host tenant diterbitake nalika dibutuhake, ing kunjungan kapisan, lan mung nalika web konfirmasi jenenge kagungane instalasi iki (/tls-allowed, ditakokake ing jaringan Compose). Ora butuh sertifikat wildcard utawa plugin panyedhiya DNS, lan wong asing sing nuduhake jeneng menyang host ora bisa nggawe njaluk sertifikat. Sertifikat lan authority lokal manggon ing volume caddy-data; serep karo liyane yen nggunakake internal.
Web percaya X-Forwarded-For saka proxy wae: proxy duwe alamat tetep (QUIRE_PROXY_ADDRESS, gawan 172.29.64.10) ing subnet tetep (QUIRE_COMPOSE_SUBNET), lan QUIRE_TRUSTED_PROXY_CIDRS nyebutake alamat kasebut. Yen subnet tabrakan karo jaringan ing host, ganti kalorone lan mbukak docker compose down sadurunge up.
Ing mburine reverse proxy dhewe
Kanggo nggunakake load balancer utawa proxy sing wis dibukak, jarake proxy (docker compose up -d --scale proxy=0) lan mungkasi TLS ing ngarepe web (8080), content (8081), collab (1234, websocket) lan centrifugo (8000, websocket). Setel alamat publik ing QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN lan QUIRE_COLLAB_URL (wss://), lan rentang alamat proxye ing QUIRE_TRUSTED_PROXY_CIDRS.
Ngatasi masalah
initmetu kanthi “QUIRE_DATABASE_ID is not a UUID”: setel nganggouuidgen.webmiwiti maneh kanthi “did not start on compose”: log ndhaftar saben setelan sing ora bisa dihormati lan apa sing digunakake.- Ngganti tembung sandhi peran ing
.envsawise miwiti kapisan ora nindakake apa-apa: skrip init mlaku sapisan. GunakakeALTER ROLE. - Unggahan gagal kanthi kaluputan scan selagi
CLAMAV_URLdisetel: ClamAV ngundhuh signature ing miwiti kapisan, sing butuh sawetara menit.