Derbas bibe bo naverokê

Quire bi Docker Compose sazkirin

Quire li ser infrastrukturiya xwe bi Docker Compose saz bike.

Wêne bide wek Markdown

Ev berhevoka tewaf li serverekî ye: LMS, karek paşî, xizmetên dema rastîn û nivîsariya beşdar, û her xizmeteke ikhtîyarî di pey profîlek. Rêşebeciya docs/architecture/23-ops.md beş 2 e.

Armancên din: Vercel û Cloudflare Workers tenê navûpa web bixebitînin. Nûvekirin di upgrade.md de, û veparîstin û ceribandina sererastkirinê di backup-restore.md de.

Çi te pêwîst e

  • Docker Engine 27 an bilindtr bi plugîna Compose 2.30 an bilindtr.
  • 4 hilpîlkera CPU û 8 GB bîranîn ji bo stacka veberî; 8 hilpîlker û 16 GB bi --profile full (tenê ClamAV nêzîkî 1.5 GB îşaret dihêle).
  • Naveke DNS ji bo navûpa web û yekî din ji bo naveroka bêbawer. Divê serverên cihên bin: pakêtên SCORM û HTMLya hatiye bar kirin di originê naverokê de xebitînin ta nikare kukiyan LMS bixwînin.
  • Ji bo ceribandinekî nexweş, lvh.me û *.localhost biçe 127.0.0.1, ku docker/.env.example bikar tîne. Xizmeta proxy a stacka xwe herduyan bi https di ser authorityyeke sertîfîkayê nexweş de diêpe, ji ber vê tiştî din ne tê sazkirin (binêre “TLS”).
  • Portên 80 û 443 vala li ser serverê (QUIRE_PROXY_HTTP_PORT û QUIRE_PROXY_HTTPS_PORT wan diguherîne).

Yekemcaran bixebitîn

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 init

docker/scripts/init-env.sh docker/.env ji docker/.env.example ve nivîsî bi her nepûrekî hatiye çêkirin (şîfreyên danegirş, kilîtên qedandin û sereke, geşta kilîta naverok) û kilîta qedandina kontrola denetinê di docker/secrets/audit-signing-key.pem de, ku Compose wê wek nepûr di karmeran de girê dike. Tenê sh, awk û openssl pêwîst dike, û docker/.env ku hê meye veşarî nake. Herdu dosye ji serverê derke: bê QUIRE_MASTER_KEY danegirşek hatiye sererastkirin nikare têketnaverên xwe şifra. Ji bo tijekirina dosyê bi dest, cp docker/.env.example docker/.env; dosye dibêje çawa her nepûr tê çêkirin.

Herdu origin divê https bin: xizmeta naverokê di productionê de httpyê ada raqûl dike, û divê domainekî îskan parve nekin. Xizmeta proxy ji bo herdu TLS tê axtin (binêre “TLS”); init-env.sh originekî http:// raqûl dike.

Stack bi rêzekî sabit dest pê dike, û her gav li yekê berê dîsaikîne:

  1. postgres dike sag. Gava yekem dest pê dike skrîpta init wê (docker/postgres/init/90-passwords.sh) şîfreyên çûar rol mîhaz dike.
  2. migrate her guhertin tê serbilindkirin û kuya ereng di danegirşa kontrol û her danegirşî tenantê taybet de dest pê dike, çawas dike ka hemû hevççûn in, paş derdike (docs/ops/upgrade.md). Guhertin her destpêkê tên xebitandin û idempotent in, ji ber vê nûvekirinek wêneke nû û destpekveke ye.
  3. init (apps/web/src/first-run.ts) danegirşa nivîsbariyê di QUIRE_DATABASE_ID de tomarkî dike û, gava QUIRE_SETUP_ADMIN_EMAIL saz bûye, rêxistina yekem û rêvebera wê çêdike. Navnivîsa têketinê û şîreke hatiye çêkirin carekê tê nivîsandin, di docker compose logs init de.
  4. web, content, worker, scheduler, collab û centrifugo dest pê dikin.
  5. proxy gava web û content sag in dest pê dike.

https://demo. bi domaina nivîsbariya te re veke (loga init navnivîsa têketinê ya rast tê nivîsandin), û têkeve. Li sazkirinekî nexweş, berê authorityyeke sertîfîkayê ya proxy bawer bin (binêre “TLS”). Şîreka hatiye çêkirin di /account/security biguherîne.

Prosekek bê nepûrekî pêwîst dest pê dike raqûl dike û mîhazê ku kêm e di loga xwe de navdide. Tiştek bi nîv mîhaz dest pê nake.

Xizmet û profîl

Xizmet Profîl Çi dike
postgres her tim Danegirş (PostgreSQL 18 bi pgvector, ji docker/postgres.Dockerfile hatiye biafirîn), bi WALya ji yekem boot ve arşîvkirî
migrate, init her tim Carekê: guhertin, paş yekemcaran bixebitîn
web her tim LMS, li QUIRE_HTTP_PORT (8080)
content her tim Originê naveroka bêbawer, li QUIRE_CONTENT_PORT (8081)
worker her tim Erengên paşî: e-poşt, rapor, karê dosye, webhook
scheduler her tim Erengên rastîn: 64 pêşnîşana dema ranawayê qeyd dike û wan bişîne bo worker; her dem pêşvebirek
collab her tim Nivîsariya beşdar websocket, li QUIRE_COLLAB_HTTP_PORT (1234)
centrifugo her tim Dema rastîn fêrbûn, li QUIRE_REALTIME_PORT (8000)
proxy her tim Caddy, deriyê TLS li portên 80 û 443 (binêre “TLS”)
valkey cache Cache û sinorên lez
clamav scan Çawaskiriya malware ji bo barkevan
gotenberg preview Pêşdîtinên Office bo PDF, avakirina şahadetname
imgproxy images Wêneyên biguherî û veguherî
transcoder video Wênea worker bi ffmpegya tenê LGPL, ji bo rendîtên vîdyoyê
seaweedfs storage Hilanîneyeke tiştên hevpeyman bi S3 li ser vê serverê
otelcol observability Komekareke OpenTelemetry
mailpit devmail Her posta derkevan digire, ji bo ceribandina Quire
backup backup Veparîstineke bingehî carekê; binêre backup-restore.md
backup-scheduler, backup-offsite backup Veparîstineke bingehî her QUIRE_BACKUP_INTERVAL_HOURS, û kopîyên şifrakirî ji serverê derve bi ceribandineke çawaskirinê hefteyî
h5p h5p Wênea alîkariyeke H5P LTI 1.3 ku tu di QUIRE_H5P_IMAGE de didî, li QUIRE_H5P_PORT (8090); binêre “Vekekirina dabînekê H5P”

--profile full her xizmeteke ikhtîyarî bi deng serdana backup û h5p dest pê dike. Yekê bi docker compose -f docker/compose.yaml --profile scan up -d bide dest pê. Bê xizmeteke ikhtîyarî Quire hê karekî dike û dibêje çi kêm e: nebûna scanner tê were ku barkev bê çawaskirin tê hilanîn û rêveber tê agahdarkirin; nebûna Gotenberg tê were ku dosye dagirtinê pêşkêş dikin bi dengê pêşdîtinê; nebûna transcoder tê were ku vîdyo bi dosyeke orîjînal lê dike.

Her wêneyekî parisî û peymanên lesanê wê di docker/third-party-containers.yaml de li lîsteyê ne.

Vekekirina dabînekê H5P

Quire runtimeek H5P an sidecar nevêşîne an nebar dike (ADR 0019). Ger tu H5P bikar tîne, abonebûneke xwe ya hatiye mîhankirin pêşkêş bike an nênsa H5P ya xwe ya ji aliyê xwe ve bi cuda ji Quire xebitîne. Ew dabînker wek alîkariyeke derveyê LTI 1.3 qeyd bike û naveroka wê bi wek çalakiyên alîkariyê li kursan zêde bike. Quire nîşan û pêşketina çalakiyê/nîşandanê bi LTI Assignment and Grade Services (AGS) tablê dike. Ger dabînker bayanên xAPI jî dişîne, wê ji bo darigeha bayanên xAPI ya Quire bi cuda mîhaz bike; tablêbûna AGS nîşan/pêşketin bayanên xAPI nadişîne. Barkevên Moodle rapor dike ku çalakiyên H5P girêtiyeke alîkariyeke LTI pêwîst in. Dabînker berpirsyarî runtimeya H5P, nivîsariya, banka naverokê û dîroka hercemê ye.

Ji bo xebitandina nênsa xwe ya ji aliyê xwe ve li vê serverê, QUIRE_H5P_IMAGE bi wêneya wê saz bike û profîla h5p bide dest pê. Compose wê li QUIRE_H5P_PORT (8090) belav dike û datayê di volume h5p-data de parastî dike; wêneya û peymanên bi wê re hatîn belîq li xwe ye.

Mîhaz

Her proses docker/.env dixwîne. Şablon, docker/.env.example, her mîhaz bi veberî wê li lîsteyê dide. Komek:

Navnivîş

Mîhaz Mani
QUIRE_APP_ORIGIN Navnivîsa giştî a LMS, mîna https://learn.example.com
QUIRE_CONTENT_ORIGIN Originê naverok, serverekî cuda
QUIRE_PLATFORM_DOMAINS Domainên ku rêxistin di bin wan de ne, bi virgul veşartî
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 li vir. Binêre rêbeberên din ji bo vercel û cloudflare
QUIRE_TRUSTED_PROXY_CIDRS Proxyên ku X-Forwarded-For wê bawer tê

Nepûr

Mîhaz Mani
QUIRE_SECRET_KEY Seans û tokeyan qedê dike. 64 tîpa hejmaran
QUIRE_MASTER_KEY Têketnaverên hatiye parastî wek nepûrên SSO û webhook veşarî dike. 32 hejmara, base64. Navûpa web û worker heman nirx pêwîst in. Biguherîn: key-rotation.md
QUIRE_MASTER_KEY_VERSION Nîşanera nûşeya kilîta sereke, gava neyê sazkirin v1. Gava tu biguherînî bilind bike
QUIRE_MASTER_KEY_RETIRED Kilîtên sereke yên berê ku hê pêwîst in ji bo xwînina ewên mühûrkiriye, wek v1=<base64>. Piştî ku biguherînek bê tiştî neçareser temam bibe rake
QUIRE_COLLAB_SIGNING_KEY Bi web û collab ve parvekirî ji bo qedandina tokeyên guhertin
QUIRE_BACKUP_SIGNING_KEY Veparîstinên kurs qedê dike (ikhtîyarî)

Kopîyeke QUIRE_MASTER_KEY di cîgeke dinî ji vê serverê biparîzê. Danegirşek bê wê hatiye sererastkirin nikare têketnaverên dihêle şifra.

Danegirş

Mîhaz Mani
POSTGRES_PASSWORD Superuser, bi konteyner û veparîstinan tê bikaranîn
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Şîfreyên rol, gava yekem dest pê dike tên sazkirin
DATABASE_URL Rolê nivîsbariyê. Parastina rizê li her pirsgirî ku wê dike tê serbilind kirin
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Rolê migrator, ji bo migrate û init
QUIRE_SUPERUSER_URL Tenê ji aliyê yekemcaran bixebitînê tê bikaranîn
QUIRE_REPORT_DATABASE_URL Rolê raporê ya tenê dixwîne, ji bo raporan û avakera rapor
QUIRE_AUDIT_DATABASE_URL Rolê denetinê, ji bo konsola denetinê û hiştartina SIEM
QUIRE_DATABASE_ID Her UUIDyek, ji bo demê sazkirinê sabit

Şîfreyên rol tenê gava volumeya danegirşê yekemcaran tê çêkirin tên serbilindkirin. Ji bo biguherîna yekê paşî, ALTER ROLE bikar bîne û paş URLya hevççûn nûve bike.

QUIRE_REPORT_DATABASE_URL ji bo danegirşa fizîkî ya bi DATABASE_URL mîhazkirî tê bikaranîn. Ji bo her danegirşî fizîkî ezmûnî, navnivîsa girêtiya quire_report ya xwe di derdikevariya web û worker de saz bike, paş navê guhertoyê di qada Reporting environment variable ya wê danegirşê de wek env:NAME bide. Nîşankera divê biçe heman danegirşê wek girêtiya sepanê wê, ji bo çêt, replica ya xwe yê dixwîne. Her rûwek raporê tenantê biçe girêtiya rapora danegirşa xwe: avakera rapor û raporên hatiye panîkirin, şandinên rabeşkirî, hiştartina rapor, analîz, loga denetinê, sarveyên denetinê ya REST û lêgerdina denetinê ya alîkar. Yek ji wan her tim girêtiya rapora danegirşekî din bikar nîne. Gava danegirşek girêtiya rapora tune, raporên adî li girêtiya nivîsbariya xwe ya danegirşê tên xebitandin, lê analîz û her dixwînina denetinê raqûl dikin û wê dibêjin, ji ber ku rolê nivîsbariyê nikare serîdana denetinê bixwîne.

Drivér

Mîhaz Vê wêşanê Tîp
QUIRE_STORAGE_DRIVER local (veberî), s3 an azure local dosyên di volume files de parastî dike. s3 AWS S3, R2, hevpeymaniya GCS û hilanîneyên S3 yên din diqetîne, bi barkevên multipart ku diceribînin
QUIRE_REALTIME_DRIVER inprocess (veberî), sse, centrifugo an durable_objects inprocess ji bo konteyneke web Şah; bi centrifugo an sse bikar bîne gava pir in
QUIRE_CACHE_DRIVER memory (veberî), postgres an valkey memory ji bo her proses e; bi valkey an postgres bikar bîne ta sinorên lez di nav konteyneran de bimînin
QUIRE_VIDEO_DRIVER ffmpeg (veberî) an progressive_mp4 An dabînekek hatiye mîhankirin: Cloudflare Stream, Mux an Bunny, bi kilîtan wê
QUIRE_IMAGE_DRIVER noop (veberî), imgproxy an cloudflare noop her wêne bi mezinahiya orîjînal diêpe. imgproxy profîla images û mîhazên jêrîn pêwîst dike; cloudflare Cloudflare Images bikar tîne
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi an in_process Veberiya platform ji bo seansên nû. Neyê sazkirin, seansên nû dibêjin ne mîhazkirî ne, heta rêxistinek qeyda xwe di bin Yekkêşin, Dabînkera seansê de veke. Qeyda xwe ya rêxistinê her tim serkeftî dike li ser vê nirxê. Mîhazên xwe ya her dabînker (BBB_URL û BBB_SECRET, guhertoyên ZOOM_*, TEAMS_*, GOOGLE_MEET_* û JITSI_*) tenê ji bo dabînkera li vir navdar tê xwînandin
QUIRE_MEETING_REGIONS Lîsteya bi virgul a eu, uk, us Li kêyê dabînka veberiya platform meeting parç dike. Neyê sazkirin, li rêxistinek bi herêmek veşartî nayê çawaskirin, wek berê. Qeyda xwe ya rêxistinê herêmên xwe di rûpela xwe de nîşan dike

Nirxeke driverek ku vê wêşanê tune gava navûpa web dest pê dike raqûl dike, bi navdan mîhazê, bila ne bi gizengî veşareke veberî ve biguherîne.

Wêne

Rûpel ji bo wêneyan bi çûar mezinahiya sabit diçe /api/files/{id}/image/{size}, ku heman gihîştina wek dosye xwe çawas dike û paş biçe xizmeta wêneyê. Her rêxistin dikare di saetekê de QUIRE_IMAGE_SPECS_PER_HOUR (veberî 2000) cuftên nû wêne û mezinahî bixwaze; mezinahiyên ku hê di wê saetê de hatine çêkirin tê hesibîn. Bi valkey an postgres ji bo QUIRE_CACHE_DRIVER bikar bîne gava zêdetir ji konteyneke web heye, ta sinor di nav wan de bimîne.

Mîhaz Drivér Tîp
IMGPROXY_URL imgproxy Navnivîsa ku gerok biçe imgproxy, mîna https://images.example.org. Profîla images wê li QUIRE_IMAGES_PORT (8082) belav dike
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Bişka hejmaran, heman nirxên ku imgproxy bi wê dest pê dike. Her yek bi openssl rand -hex 32 çêke. Quire her navnivîsa wêneyê bi wan qedê dike, ji ber vê imgproxy tiştekî nayê nivîsandin ku Quire nedaxwaz kirîye
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy bi hilanîna nexweş Li kêyê imgproxy orîjinan dihêle. Compose http://web:3000 mîhaz dike. Bi hilanîna s3 an azure imgproxy ji bucketê dihêle û ev nayê bikaranîn
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Tokeke API bi destûra guhertina Images, û hasha hesabê ji Images, sarvekên pêşeniker. Ji bo hesabê guhertoyên elastîk veke
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare Ikhtîyarî. Gava saz bûye, wêne tinî ne û her navnivîs qedê dike û derdike. Bê wê, wêne bi navnivîşên ku ji QUIRE_SECRET_KEY tên derkirin giştî in ku kes nikare qeye bikî

Cloudflare Images kopîya xwe ya her orîjînek ku diêpe parastî dike. Gava dosyeke rakirî ye, worker ew kopî berî orîjînalê rakîne.

Kuy

Erengên paşî bi pg-boss di heman danegirşa Postgres de bikar tînin, ji ber vê xizmeteke ku yê ku naxebite tune û tiştekî ji bo mîhazkirinê nîn e. Ereng di heman transaksiyonê de ku guhertina ku wê çêkirîye ve tên nûşîşkirin, ji ber vê derkevek nikare yekê kulîlêne an du caran bişîne. QUIRE_QUEUE_DRIVER li vir pgboss ye, veberiya wê; vercel û cloudflare tenê şandinên sivik ê agahdarî û webhook biçe kuya platforma xwe, û rêbeberên Vercel û Cloudflare wan û çawa navûpa wan nûşîşînin şîrokînin.

E-poşt

Yek ji van saz bike:

  • QUIRE_EMAIL_PROVIDER_CONFIG: tiştekî JSON ku dabînkeke HTTP û têketnavera wê navdide, mîna {"provider":"postmark","token":"..."}. Postmark, Amazon SES, Mailgun, SendGrid û Resend piştgirî tên.
  • QUIRE_SMTP_URL: smtp://user:password@host:587. Tenê ji bo vê armancê; armancên bêservers SMTP digirin.

QUIRE_MAIL_FROM şandekar e. Ji bo ceribandina Quire, profîla devmail bide dest pê, QUIRE_SMTP_URL=smtp://mailpit:1025 saz bike, û posta li http://localhost:8025 bixwîne.

Xizmetên ikhtîyarî

Mîhaz Bi profîl
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 an QUIRE_MEILISEARCH_URL Lêgerdineke dûr; paşî Postgres tevahî
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Çawaskiriya şîfreyan hatiye rakerandin. Bi veberî li gorî api.pwnedpasswords.com veke (tenê pêşgota heşt tîp û tê şandin); off wê raked, û URL biçe rangeyek API ku xwe dibîne

Dîtin

OTEL_EXPORTER_OTLP_ENDPOINT navdide komekarek ku her proses ji bo tracing û metrîk dişîne; bi profîla observability wê http://otelcol:4318 ye, û docker/otel-collector.yaml cîgeke ku tu exporter bo backenda xwe zêde dikî. Navûpa web, worker, scheduler, content û prosesên collab gava saz bûye spanên xwe bi OTLP/HTTP (daxwazên web, transaksiyonên danegirşa tenant, erengên worker û dawiyên derkevan) dişînin, û metrîkan her deqîqeyek biçe heman navnivîs (OTEL_METRICS_EXPORTER=none wan raked). OTEL_TRACES_SAMPLER_ARG parçeya tracingên ku tê parastin mîhaz dike. Log bi standard output li LOG_LEVEL derdike, û Compose wan diguherîne. Trace her tim datayî şexsî nade.

Derkevina herêmî (datayên EU)

QUIRE_REGION=eu dibêje ku stack rêxistên Îropayê diêpe. Worker paş her daxwazeke derkevan ku ji bo rêxistinek bi EU veşartî ye bi allowlistek (21-compliance.md beş 8.1) dihêle. Allowlist ev in: hostên ku xizmetên mîhazkirî ji bo herêmê derdike (navnivîsa hilanînê, dabînka e-poşt, dabîneke vîdyoyê hatiye mîhankirin, armancên hilanîna xwe ya rêxistinê, dabînkerên AI û qeyda e-poşt), hostên her xizmetekî ku dilovanîyeke çalak heye, û hostên ku tu di QUIRE_EGRESS_ALLOW_HOSTS de nivîsî. Daxwazeke bi hostekî giştî yên din nayê şandin berî ku wê, raqûlikirin di serîdana denetinê ya rêxistinê de bi navê privacy/egress_refused tê nivîsandin, û li bin Pejûhkirin, Wêcibariya herêmê tê lîstekirin.

Mîhaz Nirx Encam
QUIRE_EGRESS_ALLOW_HOSTS Lîsteya bi virgul a navên host, an *.example.org ji bo her subdomain Hostên zêde ku rêxistinekî EU dikare biçe. Endpointên webhook, xAPI û SIEM, çavkaniyên blog û hostên Amazon SES li vir ne, ji ber ku valbûna rêxistinê ye û tiştekî xizmet navdide. Loopback, navnivîşên taybet û navên tenê label wek web an clamav tora xwe ye û her tim ne tên çawaskirin

Rêxistên UK û US bi lîsteyekî host tên nihêrtin; çawaskirinên herêmê xizmetê parastî dike. Lîsteyê li worker saz bike; rûpela rêveber wê di navûpa web de dixwîne ta allowlist nîşan bide, ji ber vê wê di docker/.env de, ku her xizmet dixwîne, bide.

Çawaskiriya nivîsbariyê çelteke pak û têgilîyeke denetinê dide, û ew peşdengiya nîn e: kod dikare şaş be. Peşdengiya tor e. Compose ew ji bo te neyê belavkirin. Ji bo stackê herêmî, xizmetên worker û web biçe torekî internal: true ku tenê reçika derkevanê wê proxyyeke derkevan (mîna Squid an konteyneke tinyproxy) e ku heman hostên QUIRE_EGRESS_ALLOW_HOSTS bi qet hostên xizmetên mîhazkirî re destûr dike, û ji bo wan xizmet HTTPS_PROXY saz bike. Rûpela wêcibariyê hostên rast ê ku nivîsbariyê destûr dike li lîsteyê dide, ta du lîsteyan tên veñartin.

Sagiyê

Endpoint Mani
/healthz Zindîbûn: proses bersiv dike. Çawaskirinên Compose ev bikar tînin
/readyz Amadebûn: pêşbîn bila gihiştin, û her xizmeteke ikhtîyarî bi wek mîhazkirî an nî raport dike. Load balancera xwe biçe vir

docker compose -f docker/compose.yaml ps sagiya her xizmetê nîşan dike.

TLS

Xizmeta proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile) beşeka stacka veberî ye. Li portên 80 û 443 bersiv dike û raport dike:

Host an reçike Biçe
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, her subdomainê tenant û domain taybet web
/_collab/ li wan hostan collab (websocket, QUIRE_COLLAB_URL)
/_realtime/connection/ li wan hostan websocket a mirov ya centrifugo; server API wê her tim ne tê beran
/_images/ li wan hostan imgproxy, bi profîla images (IMGPROXY_URL)

init-env.sh QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL û IMGPROXY_URL ji du originan derdike, ji ber vê nikare veşqirin. Ger tu originek bi dest biguherînî wan bi hev re biguherîne.

Sertîfîkatan bi QUIRE_PROXY_TLS bişopînin:

  • internal (veberî): authorityyeke sertîfîkayê ya Caddy, ji bo localhost, *.localhost û lvh.me. Root wê carekê bawer bike, paş bigere:

    docker compose -f docker/compose.yaml cp \
      proxy:/data/caddy/pki/authorities/local/root.crt ./quire-local-ca.crt

    quire-local-ca.crt biçe storeya baweriya pergalê an gerokê. curl bi --cacert wê digire.

  • Navnivîseke e-poştê: sertîfîkayên ACME (Let’s Encrypt, paş ZeroSSL) ji bo navên rastîn. DNS ji bo herdu origin û her hostê tenant divê biçe vir, û portên 80 û 443 divê ji înternetê debide.

Hostên tenant gava daxwaz bûye, di sereke serdana yekem de tên danîn, û tenê gava web piştrîn dike ku nav belî vê sazkirinê ye (/tls-allowed, ku di tora Compose de tê daxwazkirin). Sertîfîkayeke wildcard an plugîneke dabînkera DNS pêwîst nîne, û miroveke nenas ku navek biçe serverê nikare wê bivêje sertîfîkaya begêrîn. Sertîfîk û authorityyeke nexweş di volume caddy-data de ne; ger tu internal bikar tîne wê bi yên din re veparîste.

Web X-Forwarded-For ji proxy ve tenê bawer dike: proxy navnivîseke sabit heye (QUIRE_PROXY_ADDRESS, veberî 172.29.64.10) di subnetekî sabit de (QUIRE_COMPOSE_SUBNET), û QUIRE_TRUSTED_PROXY_CIDRS ew navnivîs navdide. Ger subnet bi tora sereke a serverê bireke, herdu biguherîne û docker compose down bixebitîne berî up.

Bi pey proxea xwe yê versa

Ji bo bikaranîna load balançerek an proxyek ku tu hê xebitîne, proxy derxe (docker compose up -d --scale proxy=0) û TLS bi pêşî web (8080), content (8081), collab (1234, websocket) û centrifugo (8000, websocket) axtine. Navnivîşên giştî di QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN û QUIRE_COLLAB_URL (wss://) saz bike, û navnivîsa proxya xwe di QUIRE_TRUSTED_PROXY_CIDRS de.

Çareserkirina pirsgirêk

  • init bi “QUIRE_DATABASE_ID is not a UUID” derdike: bi uuidgen saz bike.
  • web bi “did not start on compose” dest pê nake: log her mîhazê ku nikare bêhna bike û çi bikar tîne li lîsteyê dide.
  • Biguherîna şîfreya rolek di .env de dûpiştî yekem dest pêkirinê tiştek nake: skrîpta init carekê bixebitîne. ALTER ROLE bikar bîne.
  • Barkev bi çelteke scanê serneketin gava CLAMAV_URL saz bûye: ClamAV îşaretên xwe di yekem dest pêkirinê de daxe, ku çend deqîqe digire.
Rêvenîşan

Ji bo lêgerdin binivîse…

↑↓ bigere↵ hilbijêreEsc bigire