Neidio i'r cynnwys

Gosod Quire gyda Docker Compose

Gosod Quire ar eich seilwaith eich hun gyda Docker Compose.

Gweld fel Markdown

Dyma’r cynnyrch llawn ar un host: y LMS, ei waith cefndir, y gwasanaethau amser real a golygu cydweithredol, a phob gwasanaeth dewisol y tu ôl i broffil. Mae’r dyluniad yn adran 2 o docs/architecture/23-ops.md.

Targedau eraill: dim ond haen we mae Vercel a Cloudflare Workers yn ei rhedeg. Mae uwchraddio yn upgrade.md, a chopïau wrth gefn a’r prawf adfer yn backup-restore.md.

Beth sydd ei angen

  • Docker Engine 27 neu’n ddiweddarach gyda’r ategyn Compose 2.30 neu’n ddiweddarach.
  • 4 craidd CPU ac 8 GB o gof ar gyfer y stack diofyn; 8 craidd ac 16 GB gyda --profile full (mae ClamAV yn unig yn dal tua 1.5 GB o lofnodion).
  • Enw DNS ar gyfer yr haen we ac un arall ar gyfer cynnwys nad yw’n ddibynadwy. Rhaid iddynt fod yn hostiaid gwahanol: mae pecynnau SCORM a HTML a lwythir i fyny yn rhedeg o’r tarddiad cynnwys fel na allant byth ddarllen cwcis y LMS.
  • Ar gyfer prawf lleol, mae lvh.me a *.localhost yn datrys i 127.0.0.1, sef yr hyn y mae docker/.env.example yn ei ddefnyddio. Mae gwasanaeth proxy y stack ei hun yn gwasanaethu’r ddau dros https gydag awdurdod tystysgrif lleol, felly nid oes angen gosod dim arall (gweler “TLS”).
  • Porthladdoedd 80 a 443 yn rhydd ar y host (QUIRE_PROXY_HTTP_PORT a QUIRE_PROXY_HTTPS_PORT sy’n eu symud).

Rhediad cyntaf

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

Mae docker/scripts/init-env.sh yn ysgrifennu docker/.env o docker/.env.example gyda phob cyfrinach wedi’i chynhyrchu (cyfrineiriau cronfa ddata, yr allweddi llofnodi a meistr, pâr allweddi lansio cynnwys) ac allwedd llofnodi pwynt archwilio yn docker/secrets/audit-signing-key.pem, y mae Compose yn ei mowntio i’r gweithwyr fel cyfrinach. Dim ond sh, awk ac openssl sydd eu hangen arno, ac mae’n gwrthod ailysgrifennu docker/.env sy’n bodoli eisoes. Copïwch y ddwy ffeil oddi ar y host: heb QUIRE_MASTER_KEY ni all cronfa ddata a adferwyd ddadgryptio ei manylion mewngofnodi sydd wedi’u storio. I lenwi’r ffeil â llaw yn lle hynny, cp docker/.env.example docker/.env; mae’r ffeil yn dweud sut i gynhyrchu pob cyfrinach.

Rhaid i’r ddau darddiad fod yn https: mae’r gwasanaeth cynnwys yn gwrthod http plaen mewn cynhyrchu, ac ni ddylent rannu parth cofrestradwy. Mae’r gwasanaeth proxy yn terfynu TLS ar gyfer y ddau (gweler “TLS”); mae init-env.sh yn gwrthod tarddiad http://.

Mae’r stack yn cychwyn mewn trefn sefydlog, ac mae pob cam yn aros am y cam o’i flaen:

  1. Daw postgres yn iach. Ar y cychwyn cyntaf mae ei sgript cychwyn (docker/postgres/init/90-passwords.sh) yn gosod pedwar cyfrinair rôl.
  2. Mae migrate yn cymhwyso pob mudo ac yn cychwyn ciw’r swyddi yn y gronfa ddata reoli ac ym mhob cronfa ddata tenant benodedig, yn gwirio eu bod i gyd eu bod i gyd yn cytuno, ac yna’n gadael (docs/ops/upgrade.md). Mae mudo’n rhedeg ar bob cychwyn ac yn idempotent, felly delwedd newydd ac ailgychwyn yw uwchraddiad.
  3. Mae init (apps/web/src/first-run.ts) yn cofnodi cronfa ddata’r rhaglen o dan QUIRE_DATABASE_ID a, phan osodir QUIRE_SETUP_ADMIN_EMAIL, yn creu’r sefydliad cyntaf a’i weinyddwr. Caiff cyfeiriad mewngofnodi a chyfrinair a gynhyrchwyd eu hargraffu unwaith yn docker compose logs init.
  4. Mae web, content, worker, scheduler, collab a centrifugo yn cychwyn.
  5. Mae proxy yn cychwyn unwaith y bydd web a content yn iach.

Agorwch https://demo. ac yna barth eich rhaglen (mae’r cofnod init yn argraffu’r union gyfeiriad mewngofnodi), a mewngofnodwch. Ar osodiad lleol, ymddiriedwch yn awdurdod tystysgrif y proxy yn gyntaf (gweler “TLS”). Newidiwch y cyfrinair a gynhyrchwyd yn /account/security.

Mae proses a gychwynnwyd heb gyfrinach ofynnol yn gwrthod cychwyn ac yn enwi’r gosodiad coll yn ei chofnod. Ni fydd dim yn cychwyn wedi’i ffurfweddu’n rhannol.

Gwasanaethau a phroffiliau

Gwasanaeth Proffil Beth mae’n ei wneud
postgres bob amser Y gronfa ddata (PostgreSQL 18 gyda pgvector, wedi’i adeiladu o docker/postgres.Dockerfile), gyda WAL wedi’i archifo o’r cychwyn cyntaf
migrate, init bob amser Unwaith: mudo, yna’r rhediad cyntaf
web bob amser Y LMS, ar QUIRE_HTTP_PORT (8080)
content bob amser Tarddiad cynnwys nad yw’n ddibynadwy, ar QUIRE_CONTENT_PORT (8081)
worker bob amser Swyddi cefndir: e-bost, adroddiadau, prosesu ffeiliau, webhooks
scheduler bob amser Swyddi rheolaidd: cofrestru 64 amserlen amser rhedeg a’u trosglwyddo i’r worker; un arweinydd ar y tro
collab bob amser Websocket golygu cydweithredol, ar QUIRE_COLLAB_HTTP_PORT (1234)
centrifugo bob amser Dosbarthu amser real, ar QUIRE_REALTIME_PORT (8000)
proxy bob amser Caddy, y drws TLS blaen ar borthladdoedd 80 a 443 (gweler “TLS”)
valkey cache Storfa dros dro a therfynau cyfradd
clamav scan Sganio meddalwedd faleisus mewn llwythiadau
gotenberg preview Rhagolygon Office i PDF, rendro tystysgrifau
imgproxy images Ailfeintio a throsi delweddau
transcoder video Delwedd worker gyda ffmpeg LGPL yn unig, ar gyfer fersiynau fideo wedi’u rendro
seaweedfs storage Storfa gwrthrychau sy’n gydnaws â S3 ar y host hwn
otelcol observability Casglwr OpenTelemetry
mailpit devmail Dal yr holl bost sy’n mynd allan, i roi cynnig ar Quire
backup backup Copi wrth gefn sylfaenol unwaith; gweler backup-restore.md
backup-scheduler, backup-offsite backup Copi wrth gefn sylfaenol bob QUIRE_BACKUP_INTERVAL_HOURS, a chopïau wedi’u hamgryptio oddi ar y host gyda phrawf gwirio wythnosol
h5p h5p Delwedd offeryn H5P LTI 1.3 a ddarperir gennych yn QUIRE_H5P_IMAGE, ar QUIRE_H5P_PORT (8090); gweler “Cysylltu darparwr H5P”

Mae --profile full yn cychwyn pob gwasanaeth dewisol heblaw backup a h5p. Dechreuwch un gyda docker compose -f docker/compose.yaml --profile scan up -d. Heb wasanaeth dewisol, mae Quire yn dal i weithio ac yn dweud beth sydd ar goll: heb sganiwr cedwir llwythiadau heb eu sganio a rhoddir gwybod i’r gweinyddwr; heb Gotenberg, cynigir lawrlwytho ffeiliau yn lle rhagolwg; heb drawsnewidydd, caiff fideo ei chwarae fel y ffeil wreiddiol.

Rhestrir pob delwedd trydydd parti a’i rhwymedigaethau trwydded yn docker/third-party-containers.yaml.

Cysylltu darparwr H5P

Nid yw Quire yn mewnosod nac yn cludo runtime neu sidecar H5P (ADR 0019). Os ydych yn defnyddio H5P, darparwch eich tanysgrifiad lletyol eich hun neu weithredwch eich instans H5P hunangynhaliol eich hun ar wahân i Quire. Cofrestrwch y darparwr hwnnw fel offeryn allanol LTI 1.3 ac ychwanegwch ei gynnwys at gyrsiau fel gweithgareddau offeryn. Mae Quire yn cyfnewid graddau a chynnydd gweithgaredd/marcio drwy LTI Assignment and Grade Services (AGS). Os bydd y darparwr hefyd yn anfon datganiadau xAPI, ffurfweddwch hynny ar wahân ar gyfer storfa datganiadau xAPI Quire; nid yw cyfnewid graddau/cynnydd AGS yn anfon datganiadau xAPI. Mae mewnforion Moodle yn adrodd bod angen cysylltiad offeryn LTI ar weithgareddau H5P. Mae’r darparwr yn parhau’n gyfrifol am ei runtime H5P, ei awduro, ei fanc cynnwys a’i hanes ymdrechion.

I redeg eich instans hunangynhaliol eich hun ar y host hwn, gosodwch QUIRE_H5P_IMAGE i’w ddelwedd a dechreuwch broffil h5p. Mae Compose yn ei gyhoeddi ar QUIRE_H5P_PORT (8090) ac yn cadw ei ddata yng nghyfrol h5p-data; eich cyfrifoldeb chi yw’r ddelwedd a’r rhwymedigaethau sy’n dod gyda hi.

Gosodiadau

Mae pob proses yn darllen docker/.env. Mae’r templed, docker/.env.example, yn rhestru pob gosodiad a’i ragosodiad. Y grwpiau:

Cyfeiriadau

Gosodiad Ystyr
QUIRE_APP_ORIGIN Cyfeiriad cyhoeddus y LMS, megis https://learn.example.com
QUIRE_CONTENT_ORIGIN Tarddiad cynnwys, host gwahanol
QUIRE_PLATFORM_DOMAINS Parthau y mae sefydliadau’n byw oddi tanynt, wedi’u gwahanu gan goma
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 yma. Gweler y canllawiau eraill am vercel a cloudflare
QUIRE_TRUSTED_PROXY_CIDRS Proxy y credir eu X-Forwarded-For

Cyfrinachau

Gosodiad Ystyr
QUIRE_SECRET_KEY Llofnodi sesiynau a thocynnau. 64 nod hecsadegol
QUIRE_MASTER_KEY Lapio manylion mewngofnodi sydd wedi’u storio fel cyfrinachau SSO a webhook. 32 beit, base64. Mae angen yr un gwerth ar yr haen we a’r worker. Newid: key-rotation.md
QUIRE_MASTER_KEY_VERSION Label fersiwn yr allwedd feistr, v1 os nad yw wedi’i gosod. Codwch hi wrth newid yr allwedd
QUIRE_MASTER_KEY_RETIRED Allweddi meistr cynharach sydd eu hangen o hyd i ddarllen yr hyn a seliwyd ganddynt, fel v1=<base64>. Tynnwch ar ôl i newid orffen heb ddim heb ei ddatrys
QUIRE_COLLAB_SIGNING_KEY Wedi’i rhannu gan web a collab i lofnodi tocynnau golygu
QUIRE_BACKUP_SIGNING_KEY Llofnodi copïau wrth gefn cwrs (dewisol)

Cadwch gopi o QUIRE_MASTER_KEY rywle heblaw’r host hwn. Ni all cronfa ddata a adferwyd hebddi ddadgryptio’r manylion mewngofnodi sydd ynddi.

Cronfa ddata

Gosodiad Ystyr
POSTGRES_PASSWORD Y superuser, a ddefnyddir gan y cynhwysydd a’r copïau wrth gefn
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Cyfrineiriau rôl, wedi’u gosod ar y cychwyn cyntaf
DATABASE_URL Rôl y rhaglen. Mae diogelwch ar lefel rhes yn berthnasol i bob ymholiad y mae’n ei wneud
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Rôl mudo, ar gyfer migrate a init
QUIRE_SUPERUSER_URL Defnyddir ar gyfer y rhediad cyntaf yn unig
QUIRE_REPORT_DATABASE_URL Rôl adrodd darllen-yn-unig, ar gyfer adroddiadau a’r adeiladydd adroddiadau
QUIRE_AUDIT_DATABASE_URL Rôl archwilio, ar gyfer y consol archwilio ac allforio SIEM
QUIRE_DATABASE_ID Unrhyw UUID, yn sefydlog am oes y gosodiad

Dim ond pan gaiff cyfrol y gronfa ddata ei chreu am y tro cyntaf y cymhwysir cyfrineiriau rôl. I newid un yn ddiweddarach, defnyddiwch ALTER ROLE ac yna diweddarwch yr URL cyfatebol.

Defnyddir QUIRE_REPORT_DATABASE_URL ar gyfer y gronfa ddata ffisegol a ffurfweddwyd gan DATABASE_URL. Ar gyfer unrhyw gronfa ddata ffisegol gofrestredig arall, gosodwch ei URL cysylltiad quire_report ei hun yn amgylcheddau’r we a’r worker, yna rhowch enw’r newidyn yng maes Newidyn amgylchedd adrodd y gronfa ddata honno fel env:NAME. Rhaid i’r cyfeirnod bwyntio at yr un gronfa ddata â chysylltiad yr ap, sef ei replica darllen yn ddelfrydol. Mae pob rhyngwyneb adrodd yn dilyn y tenant i gysylltiad adrodd ei gronfa ddata ei hun: yr adeiladydd adroddiadau a’r adroddiadau a gadwyd, dosbarthiadau wedi’u trefnu, allforion adroddiadau, dadansoddeg, cofnod archwilio, adnoddau archwilio REST a chwiliad archwilio’r cynorthwyydd. Nid oes un ohonynt byth yn benthyg URL adrodd cronfa ddata arall. Pan nad oes gan gronfa ddata gysylltiad adrodd, mae adroddiadau arferol yn rhedeg ar ei chysylltiad rhaglen ei hun, tra bo dadansoddeg a phob darlleniad archwilio’n gwrthod ac yn dweud hynny, oherwydd na all rôl y rhaglen ddarllen y cofnod archwilio.

Gyrwyr

Gosodiad Y datganiad hwn Nodiadau
QUIRE_STORAGE_DRIVER local (diofyn), s3 neu azure Mae local yn cadw ffeiliau yn y gyfrol files. Mae s3 yn cynnwys AWS S3, cydnawsedd R2 a GCS, a storfeydd eraill sy’n gydnaws â S3, gyda llwythiadau aml-ran y gellir eu hailddechrau
QUIRE_REALTIME_DRIVER inprocess (diofyn), sse, centrifugo neu durable_objects Mae inprocess yn briodol ar gyfer un cynhwysydd web; defnyddiwch centrifugo neu sse os oes sawl un
QUIRE_CACHE_DRIVER memory (diofyn), postgres neu valkey Mae memory fesul proses; defnyddiwch valkey neu postgres fel bod terfynau cyfradd yn gyson ar draws cynwysyddion
QUIRE_VIDEO_DRIVER ffmpeg (diofyn) neu progressive_mp4 Neu ddarparwr lletyol: Cloudflare Stream, Mux neu Bunny, drwy eu hallweddi
QUIRE_IMAGE_DRIVER noop (diofyn), imgproxy neu cloudflare Mae noop yn gwasanaethu pob delwedd ar ei maint gwreiddiol. Mae angen i imgproxy gael proffil images a’r gosodiadau isod; mae cloudflare yn defnyddio Cloudflare Images
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi neu in_process Darparwr diofyn y platfform ar gyfer sesiynau byw. Os na chaiff ei osod, dywed sesiynau byw nad ydynt wedi’u ffurfweddu nes bod sefydliad yn cysylltu ei gyfrif ei hun o dan Integreiddiadau, Darparwr sesiynau byw. Mae cyfrif sefydliad ei hun bob amser yn cael blaenoriaeth dros y gwerth hwn. Dim ond ar gyfer y darparwr a enwir yma y darllenir gosodiadau pob darparwr (BBB_URL a BBB_SECRET, y newidynnau ZOOM_*, TEAMS_*, GOOGLE_MEET_* a JITSI_*)
QUIRE_MEETING_REGIONS Rhestr wedi’i gwahanu gan goma o eu, uk, us Lle mae darparwr diofyn y platfform yn prosesu cyfarfodydd. Os heb ei osod, ni chaiff ei wirio yn erbyn sefydliad wedi’i binio i ranbarth, fel o’r blaen. Mae cyfrif sefydliad ei hun yn datgan ei ranbarthau ar ei dudalen

Gwrthodir gwerth gyrrwr nad yw’r datganiad hwn yn ei gynnwys pan fydd yr haen we’n cychwyn, gan enwi’r gosodiad, yn hytrach na’i ddisodli’n dawel â’r rhagosodiad.

Delweddau

Mae tudalennau’n gofyn am ddelweddau mewn pedwar maint sefydlog drwy /api/files/{id}/image/{size}, sy’n gwirio’r un mynediad â’r ffeil ei hun ac yna’n ailgyfeirio at wasanaeth y ddelwedd. Gall pob sefydliad ofyn am QUIRE_IMAGE_SPECS_PER_HOUR (diofyn 2000) parau delwedd a maint newydd yr awr; nid yw meintiau a gynhyrchwyd eisoes yr awr honno’n cyfrif. Defnyddiwch valkey neu postgres ar gyfer QUIRE_CACHE_DRIVER gyda mwy nag un cynhwysydd web fel bod y terfyn yn berthnasol iddynt i gyd.

Gosodiad Gyrrwr Nodiadau
IMGPROXY_URL imgproxy Y cyfeiriad y mae porwyr yn cyrraedd imgproxy ynddo, er enghraifft https://images.example.org. Mae proffil images yn ei gyhoeddi ar QUIRE_IMAGES_PORT (8082)
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Llinynnau hecsadegol, yr un gwerthoedd ag y cychwynnir imgproxy gyda nhw. Cynhyrchwch bob un gyda openssl rand -hex 32. Mae Quire yn llofnodi pob cyfeiriad delwedd â nhw, felly nid yw imgproxy’n rendro dim na ofynnodd Quire amdano
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy gyda storfa leol O ble mae imgproxy’n nôl y rhai gwreiddiol. Mae Compose yn gosod http://web:3000. Gyda storfa s3 neu azure, mae imgproxy’n nôl o’r bwced ac ni ddefnyddir hwn
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Tocyn API gyda chaniatâd golygu Images, a hash y cyfrif o Images, adnoddau datblygwr. Trowch amrywiadau hyblyg ymlaen ar gyfer y cyfrif
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare Dewisol. Pan fydd wedi’i osod, mae delweddau’n breifat a chaiff pob cyfeiriad ei lofnodi ac mae’n dod i ben. Hebddo, mae delweddau’n gyhoeddus mewn cyfeiriadau sy’n deillio o QUIRE_SECRET_KEY ac na all neb eu dyfalu

Mae Cloudflare Images yn cadw ei gopi ei hun o bob gwreiddiol mae’n ei wasanaethu. Pan gaiff ffeil ei dileu, mae’r worker yn dileu’r copi hwnnw cyn y gwreiddiol.

Ciw

Mae swyddi cefndir yn defnyddio pg-boss yn yr un gronfa ddata Postgres, felly nid oes angen rhedeg gwasanaeth ciw na ffurfweddu dim. Caiff swyddi eu ciwio yn yr un trafodiad â’r newid a’u hachosodd, felly ni all damwain golli un na’i hanfon ddwywaith. QUIRE_QUEUE_DRIVER yw pgboss yma, ei ragosodiad; mae vercel a cloudflare yn symud hysbysiadau ysgafn a dosbarthiadau webhook yn unig i giw y platfform ei hun; mae canllawiau Vercel a Cloudflare yn eu disgrifio a sut mae eu haenau gwe’n eu ciwio.

E-bost

Gosodwch un o’r rhain:

  • QUIRE_EMAIL_PROVIDER_CONFIG: gwrthrych JSON sy’n enwi darparwr HTTP a’i fanylion mewngofnodi, megis {"provider":"postmark","token":"..."}. Cefnogir Postmark, Amazon SES, Mailgun, SendGrid a Resend.
  • QUIRE_SMTP_URL: smtp://user:password@host:587. Ar y targed hwn yn unig; mae targedau heb weinydd yn rhwystro SMTP.

QUIRE_MAIL_FROM yw’r anfonwr. I roi cynnig ar Quire, dechreuwch broffil devmail, gosodwch QUIRE_SMTP_URL=smtp://mailpit:1025, a darllenwch bost yn http://localhost:8025.

Gwasanaethau dewisol

Gosodiad Gyda phroffil
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 neu QUIRE_MEILISEARCH_URL Chwilio allanol; fel arall chwilio testun llawn Postgres
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Gwirio cyfrineiriau a ddatgelwyd. Ymlaen yn ddiofyn drwy api.pwnedpasswords.com (dim ond rhagddodiad hash pum nod a anfonir); mae off yn ei ddiffodd, ac mae’r URL yn pwyntio at API ystod rydych yn ei gynnal

Arsylwadwyedd

Mae OTEL_EXPORTER_OTLP_ENDPOINT yn enwi’r casglwr y mae pob proses yn anfon olion a metrigau ato; gyda phroffil observability mae’n http://otelcol:4318, ac docker/otel-collector.yaml yw lle i ychwanegu’r allforiwr ar gyfer eich ôl-wyneb. Mae prosesau web, worker, scheduler, content a collab yn allforio bylchau dros OTLP/HTTP (ceisiadau web, trafodion cronfeydd data tenant, swyddi worker a galwadau allan) pan fydd wedi’i osod, a metrigau i’r un endpoint bob munud (OTEL_METRICS_EXPORTER=none sy’n eu diffodd). Mae OTEL_TRACES_SAMPLER_ARG yn gosod cyfran yr olion a gedwir. Mae logiau’n mynd i allbwn safonol ar LOG_LEVEL, ac mae Compose yn eu cylchdroi. Nid yw olion byth yn cario data personol.

Egress rhanbarthol (preswyliaeth data’r UE)

Mae QUIRE_REGION=eu yn datgan bod y stack yn gwasanaethu sefydliadau’r Undeb Ewropeaidd. Mae’r worker wedyn yn dal pob cais allanol a wneir ar ran sefydliad wedi’i binio i’r UE at restr ganiatáu (adran 8.1 yn 21-compliance.md). Y rhestr ganiatáu yw’r hostiaid y mae gwasanaethau wedi’u ffurfweddu’n eu datgan ar gyfer y rhanbarth (endpoint y storfa, darparwr e-bost, darparwr fideo lletyol, targedau storio’r sefydliad ei hun, darparwyr AI a chyfrif e-bost), hostiaid unrhyw wasanaeth sydd dan eithriad gweithredol, a’r hostiaid rydych yn eu rhestru yn QUIRE_EGRESS_ALLOW_HOSTS. Gwrthodir cais at unrhyw host cyhoeddus arall cyn ei anfon, ysgrifennir y gwrthodiad yng nghofnod archwilio’r sefydliad fel privacy/egress_refused, ac fe’i rhestrir o dan Cydymffurfiaeth, Preswyliaeth data.

Gosodiad Gwerthoedd Effaith
QUIRE_EGRESS_ALLOW_HOSTS Rhestr o enwau host wedi’u gwahanu gan goma, neu *.example.org ar gyfer pob is-barth Hostiaid ychwanegol y gall sefydliad UE eu cyrraedd. Mae endpointau webhook, xAPI a SIEM, ffrydiau blog a hostiaid Amazon SES yn perthyn yma, oherwydd dewis y sefydliad ei hun ydynt ac nid oes gwasanaeth yn eu datgan. Eich rhwydwaith eich hun yw loopback, cyfeiriadau preifat ac enwau un label megis web neu clamav, ac ni chânt eu gwirio byth

Nid yw sefydliadau’r DU a’r Unol Daleithiau wedi’u cyfyngu i restr host; maent yn cadw gwiriadau rhanbarth gwasanaeth. Gosodwch y rhestr ar y worker; mae’r dudalen weinyddol yn ei darllen ar yr haen we i ddangos y rhestr ganiatáu, felly rhowch hi yn docker/.env, a ddarllenir gan bob gwasanaeth.

Mae gwiriad y rhaglen yn rhoi gwall clir a chofnod archwilio, ond nid dyma’r warant: gall cod fod yn anghywir. Y rhwydwaith yw’r warant. Nid yw Compose yn ei gorfodi drosoch. Ar gyfer stack rhanbarthol, rhowch wasanaethau worker a web ar rwydwaith internal: true a’i unig lwybr allan yw proxy egress (er enghraifft cynhwysydd Squid neu tinyproxy) sy’n caniatáu’r un hostiaid â QUIRE_EGRESS_ALLOW_HOSTS ynghyd â hostiaid eich gwasanaethau ffurfweddu, a gosodwch HTTPS_PROXY ar gyfer y gwasanaethau hynny. Mae’r dudalen preswyliaeth yn rhestru’r hostiaid union y mae’r rhaglen yn eu caniatáu, felly gellir cymharu’r ddwy restr.

Iechyd

Endpoint Ystyr
/healthz Bywiogrwydd: mae’r broses yn ateb. Mae gwiriadau iechyd Compose yn defnyddio hwn
/readyz Parodrwydd: dibyniaethau ar gael, a phob gwasanaeth dewisol wedi’i adrodd fel wedi’i ffurfweddu neu beidio. Pwyntiwch eich cydbwysydd llwyth yma

Mae docker compose -f docker/compose.yaml ps yn dangos iechyd pob gwasanaeth.

TLS

Mae gwasanaeth proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile) yn rhan o’r stack diofyn. Mae’n ateb ar borthladdoedd 80 a 443 ac yn llwybro:

Host neu lwybr Yn mynd at
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, pob is-barth tenant a pharth personol web
/_collab/ ar y hostiaid hynny collab (websocket, QUIRE_COLLAB_URL)
/_realtime/connection/ ar y hostiaid hynny Websocket cleient centrifugo; ni ddatgelir ei API gweinydd
/_images/ ar y hostiaid hynny imgproxy, gyda phroffil images (IMGPROXY_URL)

Mae init-env.sh yn deillio QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL ac IMGPROXY_URL o’r ddau darddiad, felly ni allant wyro oddi wrth ei gilydd. Golygwch nhw gyda’i gilydd os newidiwch darddiad â llaw.

Mae tystysgrifau’n dilyn QUIRE_PROXY_TLS:

  • internal (diofyn): awdurdod tystysgrif Caddy ei hun, ar gyfer localhost, *.localhost a lvh.me. Ymddiriedwch yn ei wraidd unwaith, yna porwch:

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

    Ychwanegwch quire-local-ca.crt at storfa ymddiriedaeth y system neu’r porwr. Mae curl yn ei dderbyn drwy --cacert.

  • Cyfeiriad e-bost: tystysgrifau ACME awtomatig (Let’s Encrypt, yna ZeroSSL) ar gyfer enwau host go iawn. Rhaid i DNS y ddau darddiad a phob host tenant bwyntio yma, a rhaid bod modd cyrraedd porthladdoedd 80 a 443 o’r rhyngrwyd.

Rhoddir hostiaid tenant ar alw, ar yr ymweliad cyntaf, a dim ond pan fydd web yn cadarnhau bod yr enw’n perthyn i’r gosodiad hwn (/tls-allowed, a ofynnir ar rwydwaith Compose). Nid oes angen tystysgrif wildcard nac ategyn darparwr DNS, ac ni all dieithryn sy’n pwyntio enw at y host beri iddo ofyn am dystysgrifau. Mae tystysgrifau a’r awdurdod lleol yng nghyfrol caddy-data; gwnewch gopi wrth gefn gyda’r gweddill os defnyddiwch internal.

Mae Web yn ymddiried yn X-Forwarded-For o’r proxy yn unig: mae gan y proxy gyfeiriad sefydlog (QUIRE_PROXY_ADDRESS, diofyn 172.29.64.10) ar is-rwydwaith sefydlog (QUIRE_COMPOSE_SUBNET), ac mae QUIRE_TRUSTED_PROXY_CIDRS yn enwi’r cyfeiriad hwnnw. Os bydd yr is-rwydwaith yn gwrthdaro â rhwydwaith ar y host, newidiwch y ddau a rhedwch docker compose down cyn up.

Y tu ôl i’ch proxy gwrthdro eich hun

I ddefnyddio cydbwysydd llwyth neu proxy rydych eisoes yn ei redeg yn lle hynny, peidiwch â chynnwys proxy (docker compose up -d --scale proxy=0) a therfynwch TLS o flaen web (8080), content (8081), collab (1234, websocket) a centrifugo (8000, websocket). Gosodwch y cyfeiriadau cyhoeddus yn QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN a QUIRE_COLLAB_URL (wss://), ac ystod cyfeiriadau eich proxy yn QUIRE_TRUSTED_PROXY_CIDRS.

Datrys problemau

  • Mae init yn gadael gyda “QUIRE_DATABASE_ID is not a UUID”: gosodwch ef gyda uuidgen.
  • Mae web yn ailgychwyn gyda “did not start on compose”: mae’r log yn rhestru pob gosodiad na all ei barchu a beth i’w ddefnyddio yn ei le.
  • Nid yw newid cyfrinair rôl yn .env ar ôl y cychwyn cyntaf yn gwneud dim: dim ond unwaith mae’r sgript cychwyn yn rhedeg. Defnyddiwch ALTER ROLE.
  • Mae llwythiadau’n methu â gwall sgan tra bo CLAMAV_URL wedi’i osod: mae ClamAV yn lawrlwytho ei lofnodion ar y cychwyn cyntaf, sy’n cymryd ychydig funudau.
Llywio

Teipiwch i chwilio…

↑↓ llywio↵ dewisEsc cau