Mine sisu juurde

Quire'i paigaldamine Docker Compose'iga

Paigalda Quire Docker Compose'i abil enda taristusse.

Vaata Markdownina

See on täisfunktsionaalne toode ühes hostis: õppehaldussüsteem, selle taustatööd, reaalaja- ja ühise muutmise teenused ning kõik profiili taga olevad valikulised teenused. Arhitektuur on dokumendi docs/architecture/23-ops.md jaotises 2.

Muud sihtkohad: Vercel ja Cloudflare Workers käitavad ainult veebikihti. Uuendused on juhendis upgrade.md, varundamine ja taastamise proov aga juhendis backup-restore.md.

Vajalikud eeldused

  • Docker Engine 27 või uuem koos Compose’i pistikprogrammiga 2.30 või uuem.
  • Vaikimisi virna jaoks 4 protsessorituuma ja 8 GB mälu; --profile full korral 8 tuuma ja 16 GB (ainuüksi ClamAV hoiab umbes 1,5 GB signatuure).
  • Veebikihile DNS-nimi ja usaldamatu sisu jaoks teine nimi. Need peavad olema eri hostid: SCORM-paketid ja üleslaaditud HTML töötavad sisu päritolus, et nad ei saaks kunagi lugeda õppehaldussüsteemi küpsiseid.
  • Kohalikuks katseks lahenduvad lvh.me ja *.localhost aadressiks 127.0.0.1, mida kasutab docker/.env.example. Virna proxy-teenus serveerib mõlemat HTTPS-i kaudu kohaliku sertimiskeskusega, nii et midagi muud pole vaja paigaldada (vt „TLS”).
  • Hostis peavad olema vabad pordid 80 ja 443; neid saab muuta seadetega QUIRE_PROXY_HTTP_PORT ja QUIRE_PROXY_HTTPS_PORT.

Esmakäivitus

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 loob faili docker/.env failist docker/.env.example, genereerides kõik saladused (andmebaasi paroolid, allkirjastamis- ja peavõtmed ning sisu käivitamise võtmed) ning auditi kontrollpunkti allkirjastamisvõtme failis docker/secrets/audit-signing-key.pem. Compose ühendab selle töötlejatele saladusena. Skript vajab ainult sh, awk ja openssl-i ning keeldub olemasolevat docker/.env-i üle kirjutamast. Kopeeri mõlemad failid hostist välja: QUIRE_MASTER_KEY-ta taastatud andmebaas ei saa salvestatud mandaate dekrüptida. Faili võib täita ka käsitsi, kopeerides cp docker/.env.example docker/.env; mall kirjeldab iga saladuse genereerimist.

Mõlemad päritolud peavad olema https: tootmiskeskkonnas keeldub sisuteenus lihtsast HTTP-st ning neil ei tohi olla sama registreeritavat domeeni. proxy teenus lõpetab mõlema TLS-i (vt „TLS”); init-env.sh keeldub http:// aadressist.

Virn käivitub kindlas järjekorras ning iga samm ootab eelmist:

  1. postgres muutub terveks. Esmakäivitusel määrab selle algskript (docker/postgres/init/90-passwords.sh) nelja rolli paroolid.
  2. migrate rakendab kõik migratsioonid ja algseadistab tööjärjekorra juhtandmebaasis ning igas eriandmebaasiga rentniku andmebaasis; see kontrollib, et need ühtivad, ja väljub (docs/ops/upgrade.md). Migratsioonid käivituvad igal korral ning on korduskindlad, seega on uuendus uus kujutis ja taaskäivitus.
  3. init (apps/web/src/first-run.ts) registreerib rakenduse andmebaasi QUIRE_DATABASE_ID all ning loob muutuja QUIRE_SETUP_ADMIN_EMAIL määramisel esimese organisatsiooni ja selle halduri. Sisselogimisaadress ja genereeritud parool trükitakse ühe korra docker compose logs init väljundisse.
  4. Käivituvad web, content, worker, scheduler, collab ja centrifugo.
  5. proxy käivitub pärast seda, kui web ja content on terved.

Ava https://demo. koos rakenduse domeeniga (täpse sisselogimisaadressi leiab init-logist) ja logi sisse. Kohalikus paigaldises usalda esmalt puhverserveri sertimiskeskust (vt „TLS”). Muuda genereeritud parool aadressil /account/security.

Nõutava saladuseta protsess keeldub käivitumast ja nimetab logis puuduva seade. Miski ei käivitu pooliku seadistusega.

Teenused ja profiilid

Teenus Profiil Mida teeb
postgres alati Andmebaas (PostgreSQL 18 koos pgvectoriga, ehitatud failist docker/postgres.Dockerfile), WAL arhiveeritakse esimesest käivitusest
migrate, init alati Ühekordne käivitus: migratsioonid, seejärel algseadistus
web alati Õppehaldussüsteem pordil QUIRE_HTTP_PORT (8080)
content alati Usaldamatu sisu päritolu pordil QUIRE_CONTENT_PORT (8081)
worker alati Taustatööd: e-post, aruanded, failitöötlus, veebikonksud
scheduler alati Korduvad tööd: registreerib 64 käitusajagraafikut ja annab need töötlejale; korraga juhib üks ajastaja
collab alati Ühise muutmise veebipesa pordil QUIRE_COLLAB_HTTP_PORT (1234)
centrifugo alati Reaalajasõnumite levitamine pordil QUIRE_REALTIME_PORT (8000)
proxy alati Caddy, TLS-i sissepääs pordidel 80 ja 443 (vt „TLS”)
valkey cache Vahemälu ja päringupiirangud
clamav scan Üleslaadimiste pahavarakontroll
gotenberg preview Office’i failide PDF-eelvaated ja tunnistuste renderdamine
imgproxy images Piltide suuruse muutmine ja vormingu teisendamine
transcoder video Töötleja kujutis LGPL-litsentsiga ffmpegiga, videoversioonide loomiseks
seaweedfs storage S3-ühilduv objektisalvestus selles hostis
otelcol observability OpenTelemetry koguja
mailpit devmail Kogub Quire’i proovimiseks kõik väljaminevad kirjad
backup backup Ühekordne põhi-varukoopia; vt backup-restore.md
backup-scheduler, backup-offsite backup Põhi-varukoopia iga QUIRE_BACKUP_INTERVAL_HOURS järel ning krüptitud välised koopiad koos iganädalase kontrollkatsega
h5p h5p Sinu antud H5P LTI 1.3 tööriista kujutis muutujas QUIRE_H5P_IMAGE, pordil QUIRE_H5P_PORT (8090); vt „H5P pakkuja ühendamine”

--profile full käivitab kõik valikulised teenused peale backupi ja h5p. Käivita üks profiil näiteks käsuga docker compose -f docker/compose.yaml --profile scan up -d. Ilma valikulise teenuseta töötab Quire edasi ja selgitab, mis puudu: skannerita salvestatakse üleslaadimised kontrollimata ning haldurit teavitatakse; Gotenbergita pakutakse eelvaate asemel allalaadimist; videokodeerijata esitatakse algne fail.

Kolmanda osapoole kujutised ja nendega seotud litsentsikohustused on loetletud failis docker/third-party-containers.yaml.

H5P pakkuja ühendamine

Quire ei lisa ega tarni H5P käituskeskkonda ega kõrvalprotsessi (ADR 0019). H5P kasutamiseks hangi majutatud tellimus või käita enda H5P eksemplari Quire’ist eraldi. Registreeri pakkuja välise LTI 1.3 tööriistana ja lisa selle sisu kursusele tööriistategevusena. Quire vahetab hindeid ning tegevuse ja hindamise edenemist LTI Assignment and Grade Servicesi (AGS) kaudu. Kui pakkuja saadab ka xAPI-lauseid, seadista need Quire’i xAPI lausete salvesti jaoks eraldi; AGS-i hinde- ja edenemisvahetus xAPI-lauseid ei saada. Moodle’i impordiaruanded märgivad H5P-tegevused LTI-tööriista ühendust vajavaks. Pakkuja vastutab enda H5P käituskeskkonna, sisu loomise, sisupanga ja katsete ajaloo eest.

Oma hostis paikneva eksemplari käivitamiseks määra QUIRE_H5P_IMAGE selle kujutiseks ja käivita h5p-profiil. Compose avaldab selle pordil QUIRE_H5P_PORT (8090) ja säilitab andmeid köites h5p-data; kujutis ning sellega kaasnevad kohustused jäävad sinu vastutusele.

Seaded

Iga protsess loeb faili docker/.env. Mall docker/.env.example loetleb iga seade koos vaikeväärtusega. Rühmad:

Aadressid

Seade Tähendus
QUIRE_APP_ORIGIN Õppehaldussüsteemi avalik aadress, näiteks https://learn.example.com
QUIRE_CONTENT_ORIGIN Sisu päritolu, eraldi host
QUIRE_PLATFORM_DOMAINS Organisatsioonide domeenid komadega eraldatult
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 Siin compose; verceli ja cloudflare kohta vaata teisi juhendeid
QUIRE_TRUSTED_PROXY_CIDRS Puhverserverid, mille X-Forwarded-For väärtust usaldatakse

Saladused

Seade Tähendus
QUIRE_SECRET_KEY Allkirjastab seansse ja tokeneid; 64 kuueteistkümnendsüsteemi märki
QUIRE_MASTER_KEY Pakib salvestatud mandaate, nagu SSO ja veebikonksude saladused; 32 baiti base64-vormingus. Veebikiht ja töötleja vajavad sama väärtust. Vahetamine: key-rotation.md
QUIRE_MASTER_KEY_VERSION Peavõtme versioonimärgend, vaikimisi v1; tõsta vahetamisel
QUIRE_MASTER_KEY_RETIRED Varasemad võtmed, mida on vaja pakitud andmete lugemiseks, kujul v1=<base64>; eemalda pärast vahetuse lõppu, kui midagi pole lahendamata
QUIRE_COLLAB_SIGNING_KEY Veebirakenduse ja collab-teenuse ühine võti muutmismärkide allkirjastamiseks
QUIRE_BACKUP_SIGNING_KEY Allkirjastab kursuse varukoopiaid (valikuline)

Hoia QUIRE_MASTER_KEY-i koopiat hostist eemal. Ilma selleta taastatud andmebaas ei suuda selles hoitavaid mandaate dekrüptida.

Andmebaas

Seade Tähendus
POSTGRES_PASSWORD Superkasutaja parool, mida kasutavad konteiner ja varundamine
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Rollide paroolid, määratakse esmakäivitusel
DATABASE_URL Rakenduseroll; selle päringutele kehtib rea-taseme turve
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Migraatorroll teenustele migrate ja init
QUIRE_SUPERUSER_URL Kasutusel ainult esmakäivitusel
QUIRE_REPORT_DATABASE_URL Kirjutuskaitstud aruanderoll aruannete ja aruandelooja jaoks
QUIRE_AUDIT_DATABASE_URL Auditiroll auditi konsooli ja SIEM-ekspordi jaoks
QUIRE_DATABASE_ID Suvaline UUID, mis jääb paigalduse kasutusajaks samaks

Rollide paroolid rakendatakse ainult andmebaasiköite loomisel. Hiljem ühe muutmiseks kasuta ALTER ROLE-i ja uuenda vastavat URL-i.

QUIRE_REPORT_DATABASE_URL on füüsilise andmebaasi jaoks, mille määrab DATABASE_URL. Iga muu registreeritud füüsilise andmebaasi jaoks määra oma quire_report ühenduse URL nii veebirakenduse kui ka töötleja keskkonnas ning registreeri selle andmebaasi väljal Reporting environment variable muutuja nimi kujul env:NAME. Viide peab osutama samale andmebaasile kui rakenduse ühendus, soovitatavalt selle lugemiskoopiale. Iga aruandepind kasutab rentniku enda andmebaasi aruandeühendust: aruandelooja ja salvestatud aruanded, ajastatud edastused, aruannete eksport, analüütika, auditilogi, REST-i auditite ressursid ning assistendi auditiotsing. Ükski neist ei laena teise andmebaasi aruande-URL-i. Kui andmebaasil aruandeühendust pole, käitatakse tavapärased aruanded selle enda rakendusühenduses; analüütika ja auditi lugemine aga keelduvad, sest rakenduseroll ei saa auditijälge lugeda.

Draiverid

Seade Selles väljalaskes Märkused
QUIRE_STORAGE_DRIVER Vaikimisi local, või s3 või azure local hoiab failid files-köites. s3 toetab AWS S3, R2, GCS-i koostalitlust ja muid S3-ühilduvaid hoidlaid koos jätkatava mitmeosalise üleslaadimisega
QUIRE_REALTIME_DRIVER Vaikimisi inprocess, või sse, centrifugo või durable_objects inprocess sobib ühele veebikonteinerile; mitme puhul kasuta centrifugo või sse
QUIRE_CACHE_DRIVER Vaikimisi memory, või postgres või valkey memory kehtib ühe protsessi kohta; konteinerite vaheliseks päringupiiranguks kasuta valkey või postgres
QUIRE_VIDEO_DRIVER Vaikimisi ffmpeg või progressive_mp4 Või majutatud pakkuja Cloudflare Stream, Mux või Bunny oma võtmetega
QUIRE_IMAGE_DRIVER Vaikimisi noop, või imgproxy või cloudflare noop esitab iga pildi algses mõõdus. imgproxy vajab images-profiili ja alltoodud seadeid; cloudflare kasutab Cloudflare Imagesi
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi või in_process Reaalajasessioonide platvormi vaikepakkuja. Kui väärtust pole, kuvatakse sessioonides seadistuse puudumise teade, kuni organisatsioon ühendab jaotises Integrations oma konto. Organisatsiooni konto on alati tähtsam. Pakkuja seaded (BBB_URL, BBB_SECRET, ZOOM_*, TEAMS_*, GOOGLE_MEET_*, JITSI_*) loetakse vaid siis, kui siin on see pakkuja valitud
QUIRE_MEETING_REGIONS Komadega eraldatud loend eu, uk, us Platvormi vaikepakkuja koosolekute töötlemispiirkonnad. Määramata korral ei kontrollita neid varasema tava järgi kindla piirkonnaga seotud organisatsiooni suhtes. Oma konto piirkonnad määratakse organisatsiooni lehel

Selles väljalaskes mittesisalduv draiver lükatakse veebikihi käivitamisel tagasi ning seade nimetatakse, mitte ei asendata vaikimisi väärtusega.

Pildid

Lehed küsivad pilte neljas kindlas suuruses marsruudi kaudu /api/files/{id}/image/{size}, mis kontrollib faili ligipääsu ning suunab seejärel pildivõrku. Iga organisatsioon võib küsida QUIRE_IMAGE_SPECS_PER_HOUR (vaikimisi 2000) uut pildi ja suuruse paari tunnis; samal tunnil juba loodud suuruseid selle hulka ei loeta. Kui veebikonteinereid on mitu, kasuta Kasuta valkey või postgres väärtust muutujas QUIRE_CACHE_DRIVER, et limiit kehtiks nende kõigi peale.

Seade Draiver Märkused
IMGPROXY_URL imgproxy Aadress, mille kaudu brauserid imgproxyga ühenduvad, näiteks https://images.example.org. images-profiil avaldab selle pordil QUIRE_IMAGES_PORT (8082)
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Kuueteistkümnendväärtused, samad, millega imgproxy käivitub. Loo kumbki käsuga openssl rand -hex 32. Quire allkirjastab iga pildiaadressi nendega, nii et imgproxy renderdab ainult Quire’i soovitud pildi
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy koos kohaliku salvestusega Päritolu, kust imgproxy algpildi hangib. Compose määrab http://web:3000. s3 või azure kasutamisel hangib imgproxy pildi ämbrist ja seda seadet ei kasutata
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Imagesi muutmisõigusega API tunnus ja Imagesi jaotise Developer resources kontoräsi. Lülita kontol sisse paindlikud variandid
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare Valikuline. Määramisel on pildid privaatsed ning iga aadress allkirjastatakse ja aegub. Määramata jätmisel on pildid avalikud ning aadressid tuletatakse QUIRE_SECRET_KEY-st nii, et neid ei saa ära arvata

Cloudflare Images salvestab iga esitatud algpildi enda koopiana. Faili kustutamisel kustutab töötleja koopia enne algfaili.

Tööjärjekord

Taustatööd kasutavad sama Postgresi andmebaasi pg-bossi, seega eraldi järjekorrateenust käivitada ega seadistada pole vaja. Tööd lisatakse järjekorda muudatuse tekitava andmebaasitehingu sees, nii et krahh ei saa tööd kaotada ega seda kaks korda saata. Siin on QUIRE_QUEUE_DRIVER vaikeväärtus pgboss; vercel ja cloudflare suunavad ainult kerged teavituste ning veebikonksude edastused platvormi järjekorda. Nende järjekordade ja veebikihtide kaudu lisamise kohta leiad juhised Verceli ja Cloudflare’i juhenditest.

E-post

Määra üks järgmistest:

  • QUIRE_EMAIL_PROVIDER_CONFIG: HTTP-pakkujat ja selle mandaate nimetav JSON-objekt, näiteks {"provider":"postmark","token":"..."}. Toetatud on Postmark, Amazon SES, Mailgun, SendGrid ja Resend.
  • QUIRE_SMTP_URL: smtp://user:password@host:587. Ainult see sihtkoht; serverita keskkondades blokeeritakse SMTP.

QUIRE_MAIL_FROM on saatja aadress. Quire’i katsetamiseks käivita devmail profiil, määra QUIRE_SMTP_URL=smtp://mailpit:1025 ja vaata kirju aadressil http://localhost:8025.

Valikulised teenused

Seade Vajalik profiil
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 või QUIRE_MEILISEARCH_URL Väline otsing; muul juhul kasutatakse Postgresi täistekstiotsingut
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Parooli lekkekontroll. Vaikimisi küsitakse teenuselt api.pwnedpasswords.com (saadetakse ainult räsitunnuse viie märgi pikkune prefiks); off lülitab selle välja, URL osutab sinu majutatud vahemiku-API-le

Jälgitavus

OTEL_EXPORTER_OTLP_ENDPOINT määrab koguja, kuhu iga protsess saadab jäljed ja mõõdikud; profiiliga observability on väärtus http://otelcol:4318 ning failis docker/otel-collector.yaml saab lisada taustsüsteemi eksportija. Selle seadmisel ekspordivad veebikiht, töötleja, ajastaja, sisu- ja collab-protsessid vahemäluprotokolli HTTP kaudu lõigud (veebipäringud, rentniku andmebaasitehingud, töötleja tööd ja väljaminevad kutsed) ning saadavad iga minuti järel samasse kohta mõõdikud (OTEL_METRICS_EXPORTER=none lülitab need välja). Jälgede säilitatavat osa määrab OTEL_TRACES_SAMPLER_ARG. Logid lähevad tasemel LOG_LEVEL standardväljundisse ning Compose pöörab neid. Jäljed ei sisalda isikuandmeid.

Piirkondlik väljaminev liiklus (EL-i andmeresidentsus)

QUIRE_REGION=eu näitab, et virn teenindab Euroopa Liidu organisatsioone. Töötleja piirab seejärel kõigi EL-i piirkonnaga seotud organisatsioonide nimel tehtavad väljaminevad päringud lubatud loendiga (21-compliance.md jaotis 8.1). Loendis on piirkonnale seadistatud teenuste deklareeritud hostid (salvestuslõpp-punkt, e-posti pakkuja, majutatud videopakkuja, organisatsiooni enda salvestuskohad, tehisintellektipakkujad ja meilikonto), aktiivse erandi all oleva teenuse hostid ning QUIRE_EGRESS_ALLOW_HOSTS loetletud hostid. Iga muu avalikule hostile minev päring lükatakse enne saatmist tagasi, keeld kantakse organisatsiooni auditi jälge kirjena privacy/egress_refused ning see kuvatakse jaotises Compliance, Data residency.

Seade Väärtused Mõju
QUIRE_EGRESS_ALLOW_HOSTS Komadega eraldatud hostinimed või *.example.org kõigi alamdomeenide jaoks Täiendavad hostid, kuhu EL-i organisatsioonid võivad ühenduda. Siia kuuluvad veebikonksude, xAPI ja SIEM-i lõpp-punktid, blogivood ning Amazon SES-i hostid, sest need valib organisatsioon ise ja teenus neid ei deklareeri. Tagasiside-, privaatsed IP-aadressid ja üheosalised nimed nagu web või clamav kuuluvad sinu võrku ning neid ei kontrollita kunagi

Ühendkuningriigi ja USA organisatsioone hostiloend ei piira; nende puhul kontrollitakse endiselt ainult teenuse piirkonda. Määra loend töötlejal; haldusleht loeb seda veebikihis, et kuvada lubatud hostid, seega lisa see faili docker/.env, mida loevad kõik teenused.

Rakenduse kontroll annab selge vea ja auditisissekande, kuid see pole tagatis: kood võib eksida. Tagatise annab võrk. Compose ei rakenda seda sinu eest. Piirkondliku virna jaoks pane teenused worker ja web sisevõrku (internal: true), mille ainus väljamineku tee on liiklust filtreeriv puhverserver (näiteks Squid või pisike tinyproxy), mis lubab samu hoste kui QUIRE_EGRESS_ALLOW_HOSTS ja seadistatud teenuste hostid; määra nendele teenustele HTTPS_PROXY. Residentsusleht loetleb rakenduse lubatud hostid, et saaksid kahte loendit võrrelda.

Tervis

Lõpp-punkt Tähendus
/healthz Elusolek: protsess vastab. Compose’i tervisekontrollid kasutavad seda
/readyz Valmidus: sõltuvused on kättesaadavad ning iga valikulise teenuse seadistusolek on teatatud. Suuna siia koormusjaotur

docker compose -f docker/compose.yaml ps näitab iga teenuse terviseolekut.

TLS

proxy-teenus (Caddy, Apache-2.0, docker/caddy/Caddyfile) kuulub vaikimisi virna. See vastab portidel 80 ja 443 ning suunab päringuid järgmiselt:

Host või tee Sihtkoht
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, kõik rentniku alamdomeenid ja kohandatud domeenid web
/_collab/ neil hostidel collab (veebipesa, QUIRE_COLLAB_URL)
/_realtime/connection/ neil hostidel centrifugo kliendi veebipesa; serveri API-d ei avaldata kunagi
/_images/ neil hostidel imgproxy, images-profiiliga (IMGPROXY_URL)

init-env.sh tuletab kahe päritolu põhjal väärtused QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL ja IMGPROXY_URL, et need lahku ei läheks. Kui muudad lähteaadressi käsitsi, tuleb neid muuta koos.

Sertifikaadid määrab QUIRE_PROXY_TLS:

  • internal (vaikimisi): Caddy enda sertimiskeskus hostidele localhost, *.localhost ja lvh.me. Usalda juursertifikaati üks kord ja ava seejärel järgmise käsuga:

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

    Lisa quire-local-ca.crt süsteemi või brauseri usaldatud sertifikaatide hoidlasse. curl-iga kasuta valikut --cacert.

  • E-posti aadressina antud väärtus: automaatsed ACME sertifikaadid (esmalt Let’s Encrypt, seejärel ZeroSSL) päris hostinimedele. Mõlema päritolu ja iga rentniku hosti DNS peab siia osutama ning pordid 80 ja 443 peavad internetist ligipääsetavad olema.

Rentniku hostide sertifikaadid väljastatakse vajaduse korral esmakülastusel ning ainult pärast seda, kui veebikiht kinnitab, et nimi kuulub sellele paigaldusele (/tls-allowed, päring tehakse Compose’i võrgus). Tärniga sertifikaati ega DNS-pakkuja pistikprogrammi pole vaja; võõras, hostile osutav nimi ei saa panna seda sertifikaati taotlema. Sertifikaadid ja kohalik sertimiskeskus asuvad caddy-data-köites; varunda see koos ülejäänuga, kui kasutad internal-režiimi.

Veebikiht usaldab X-Forwarded-For päist ainult puhverserverist: sellel on fikseeritud aadress QUIRE_PROXY_ADDRESS (vaikimisi 172.29.64.10) fikseeritud alamvõrgus QUIRE_COMPOSE_SUBNET ning QUIRE_TRUSTED_PROXY_CIDRS määrab selle aadressi. Kui alamvõrk kattub hosti võrguga, muuda mõlemat ning käivita käsk docker compose down enne up-i.

Oma vastupidise puhverserveri taga

Olemasoleva koormusjaoturi või puhverserveri kasutamiseks jäta proxy välja (docker compose up -d --scale proxy=0) ning lõpeta TLS nende ees: web (8080), content (8081), collab (1234, veebipesa) ja centrifugo (8000, veebipesa). Määra avalikud aadressid muutujates QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN ja QUIRE_COLLAB_URL (wss://) ning puhverserveri aadressivahemik muutujas QUIRE_TRUSTED_PROXY_CIDRS.

Tõrkeotsing

  • init väljub veaga “QUIRE_DATABASE_ID is not a UUID”: määra see käsuga uuidgen.
  • web taaskäivitub teatega “did not start on compose”: logi loetleb seaded, mida ei saa rakendada, ja soovitatud väärtused.
  • Rolli parooli muutmine failis .env pärast esmakäivitust ei mõju: algskript käivitub vaid ühe korra. Kasuta ALTER ROLE-i.
  • Üleslaadimine ebaõnnestub skannimise veaga, kuigi CLAMAV_URL on määratud: esmakäivitusel laadib ClamAV signatuurid alla, milleks kulub mõni minut. bun apps/docs-site/scripts/import-guide.ts et ops/install.md
Navigeerimine

Otsimiseks kirjuta…

↑↓ liikumine↵ valiEsc sulge