Ugrás a tartalomhoz

A Quire telepítése Docker Compose használatával

A Quire telepítése saját infrastruktúrára Docker Compose segítségével.

Ez a teljes termék egyetlen hoston: az LMS, a háttérben végzett munka, a realtime és közös szerkesztési szolgáltatások, valamint a profilok mögött működő opcionális szolgáltatások. A kialakítást a docs/architecture/23-ops.md 2. szakasza ismerteti.

További célkörnyezetek: a Vercel és a Cloudflare Workers csak a webes réteget futtatják. A frissítéseket az upgrade.md, a mentéseket és a visszaállítási próbát a backup-restore.md ismerteti.

Amire szüksége lesz

  • Docker Engine 27 vagy újabb, legalább 2.30-as Compose pluginnel.
  • 4 CPU-mag és 8 GB memória az alapértelmezett stackhez; 8 mag és 16 GB a --profile full profilhoz (a ClamAV aláírásai önmagukban körülbelül 1,5 GB memóriát foglalnak).
  • DNS-név a webes réteghez, és egy második a nem megbízható tartalomhoz. Külön hostnévnek kell lenniük: a SCORM-csomagok és feltöltött HTML-fájlok a tartalomoriginen futnak, hogy soha ne olvashassák az LMS sütijeit.
  • Helyi teszthez az lvh.me és *.localhost név feloldása 127.0.0.1 címre; a docker/.env.example ezeket használja. A stack saját proxy szolgáltatása helyi hitelesítésszolgáltatóval, HTTPS-en szolgálja ki mindkettőt, ezért mást nem kell telepíteni (lásd a „TLS” részt).
  • A hoston a 80-as és 443-as port legyen szabad (QUIRE_PROXY_HTTP_PORT és QUIRE_PROXY_HTTPS_PORT módosítja őket).

Első indítás

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

A docker/scripts/init-env.sh a docker/.env fájlt a docker/.env.example sablonból készíti el, és minden titkot létrehoz (adatbázisjelszavak, aláíró- és master kulcsok, tartalomindítási kulcspár), valamint az audit-ellenőrzőpont aláírókulcsát a docker/secrets/audit-signing-key.pem fájlba, amelyet a Compose titokként csatol a workerekhez. Csak sh, awk és openssl szükséges hozzá, és nem ír felül meglévő docker/.env fájlt. Mindkét fájlról készítsen másolatot a hoston kívül: QUIRE_MASTER_KEY nélkül a visszaállított adatbázis nem tudja visszafejteni a tárolt hitelesítő adatokat. Ha kézzel szeretné kitölteni a fájlt, futtassa a cp docker/.env.example docker/.env parancsot; a fájl leírja, hogyan kell előállítani az egyes titkokat.

Mindkét originnak https-nek kell lennie: éles környezetben a tartalomszolgáltatás nem fogad sima http-t, és nem osztozhatnak ugyanazon regisztrálható tartományon. A proxy szolgáltatás fejezi be a TLS-kapcsolatot mindkettőhöz (lásd a „TLS” részt); az init-env.sh elutasítja a http:// origint.

A stack kötött sorrendben indul, és minden lépés megvárja az előzőt:

  1. A postgres egészséges állapotba kerül. Első indításkor az init szkript (docker/postgres/init/90-passwords.sh) beállítja a négy szerepkör jelszavát.
  2. A migrate alkalmazza az összes migrációt, és előkészíti a feladatsort a vezérlőadatbázisban és minden dedikált tenant-adatbázisban, ellenőrzi, hogy megegyeznek-e, majd kilép (lásd docs/ops/upgrade.md). A migrációk minden indításkor lefutnak és idempotensek, ezért frissítéshez új lemezkép és újraindítás kell.
  3. Az init (apps/web/src/first-run.ts) bejegyzi az alkalmazás adatbázisát a QUIRE_DATABASE_ID alatt; ha a QUIRE_SETUP_ADMIN_EMAIL be van állítva, létrehozza az első szervezetet és rendszergazdáját is. A bejelentkezési címet és a létrehozott jelszót egyszer írja ki a docker compose logs init naplóba.
  4. Elindul a web, content, worker, scheduler, collab és centrifugo.
  5. A proxy akkor indul, amikor a web és content egészséges.

Nyissa meg az alkalmazás domainjéhez hozzáfűzött https://demo. címet (az init napló kiírja a pontos bejelentkezési címet), majd jelentkezzen be. Helyi telepítésnél előbb bízzon meg a proxy hitelesítésszolgáltatójában (lásd „TLS”). Módosítsa a létrehozott jelszót a /account/security oldalon.

A szükséges titok nélkül induló folyamat nem indul el, és a naplóban megnevezi a hiányzó beállítást. A rendszer nem indul el félig konfigurált állapotban.

Szolgáltatások és profilok

Szolgáltatás Profil Feladat
postgres mindig Adatbázis (PostgreSQL 18 pgvectorral, a docker/postgres.Dockerfile alapján), WAL-archiválással az első indítástól
migrate, init mindig Egyszeri: migrációk, majd első indítás
web mindig LMS a QUIRE_HTTP_PORT porton (8080)
content mindig Nem megbízható tartalom originen a QUIRE_CONTENT_PORT porton (8081)
worker mindig Háttérfeladatok: e-mail, jelentések, fájlfeldolgozás, webhookok
scheduler mindig Ismétlődő feladatok: regisztrálja a 64 futásidejű ütemezést és átadja a workernek; egyszerre egy vezető
collab mindig Közös szerkesztési websocket a QUIRE_COLLAB_HTTP_PORT porton (1234)
centrifugo mindig Realtime továbbítás a QUIRE_REALTIME_PORT porton (8000)
proxy mindig Caddy, TLS belépési pont a 80-as és 443-as porton (lásd „TLS”)
valkey cache Gyorsítótár és sebességkorlátok
clamav scan Feltöltések kártevő-ellenőrzése
gotenberg preview Office-fájlok előnézete PDF-ként, tanúsítványok renderelése
imgproxy images Képek átméretezése és átalakítása
transcoder video Worker-lemezkép LGPL-licencű ffmpeg-gel videóváltozatok készítéséhez
seaweedfs storage S3-kompatibilis objektumtároló ezen a hoston
otelcol observability OpenTelemetry-gyűjtő
mailpit devmail A Quire kipróbálásához fogadja a kimenő leveleket
backup backup Egyszeri alapmentés; lásd: backup-restore.md
backup-scheduler, backup-offsite backup Alapmentés minden QUIRE_BACKUP_INTERVAL_HOURS időközönként, valamint titkosított külső másolatok heti ellenőrzési próbával
h5p h5p Az Ön által a QUIRE_H5P_IMAGE változóban megadott H5P LTI 1.3-eszköz lemezképe a QUIRE_H5P_PORT porton (8090); lásd: „H5P-szolgáltató csatlakoztatása”

A --profile full minden opcionális szolgáltatást elindít, kivéve a backup és h5p profilokat. Egy profil indítása: docker compose -f docker/compose.yaml --profile scan up -d. Opcionális szolgáltatások nélkül is működik a Quire, és jelzi, mi hiányzik: scanner nélkül a feltöltések ellenőrzés nélkül kerülnek tárolásra, és erről értesíti a rendszergazdát; Gotenberg nélkül a fájlok előnézet helyett letölthetők; transcoder nélkül a videó az eredeti fájlként játszódik le.

A külső lemezképek és licenckötelezettségeik a docker/third-party-containers.yaml fájlban szerepelnek.

H5P-szolgáltató csatlakoztatása

A Quire nem ágyaz be és nem szállít H5P-futtatókörnyezetet vagy sidecart (ADR 0019). H5P használatához biztosítson saját hosztolt előfizetést vagy külön üzemeltetett H5P-példányt. Regisztrálja a szolgáltatót külső LTI 1.3-eszközként, és adja hozzá a tartalmait a kurzusokhoz eszköztevékenységként. A Quire LTI Assignment and Grade Services (AGS) használatával cserél jegyeket és tevékenység-/értékelési haladást. Ha a szolgáltató xAPI-állításokat is küld, azt külön állítsa be a Quire xAPI állítástárához; az AGS jegy-/haladáscsere nem küld xAPI-állításokat. A H5P-tevékenységeket tartalmazó Moodle-importok jelzik, hogy LTI-eszközkapcsolat szükséges. A H5P-futtatókörnyezet, -szerkesztés, -tartalomtár és próbálkozási előzmények továbbra is a szolgáltató felelőssége.

Ha saját, önállóan üzemeltetett példányt futtat ezen a hoston, állítsa a QUIRE_H5P_IMAGE értékét annak lemezképére, majd indítsa el a h5p profilt. A Compose közzéteszi a QUIRE_H5P_PORT porton (8090), és a h5p-data kötetben tartja az adatokat; a lemezkép és a hozzá kapcsolódó kötelezettségek az Ön felelősségei maradnak.

Beállítások

Minden folyamat a docker/.env fájlt olvassa. A sablon, docker/.env.example, minden beállítást és alapértékét felsorol. A csoportok:

Címek

Beállítás Jelentés
QUIRE_APP_ORIGIN Az LMS nyilvános címe, például https://learn.example.com
QUIRE_CONTENT_ORIGIN A tartalomorigint külön hoston kell megadni
QUIRE_PLATFORM_DOMAINS A szervezetek tartományai, vesszővel elválasztva
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 Itt compose; a többi útmutatóban vercel és cloudflare
QUIRE_TRUSTED_PROXY_CIDRS Azok a proxyk, amelyek X-Forwarded-For fejlécében megbízunk

Titkok

Beállítás Jelentés
QUIRE_SECRET_KEY Munkamenetek és tokenek aláírása. 64 hexadecimális karakter
QUIRE_MASTER_KEY Tárolt hitelesítő adatok, például SSO- és webhooktitkok becsomagolása. 32 bájt, base64. A webes réteg és a worker ugyanazt az értéket használja. Csere: key-rotation.md
QUIRE_MASTER_KEY_VERSION A master kulcs verziócímkéje; beállítás nélkül v1. Cserekor növelje
QUIRE_MASTER_KEY_RETIRED A korábbi master kulcsok, amelyekkel a csomagolt adatok még olvashatók, például v1=<base64>. A megoldatlan elemek nélküli csere után távolítsa el
QUIRE_COLLAB_SIGNING_KEY A webes és collab szolgáltatás közösen írja alá a szerkesztési tokeneket
QUIRE_BACKUP_SIGNING_KEY Kurzusmentések aláírása (nem kötelező)

A QUIRE_MASTER_KEY másolatát a hoston kívül őrizze. Nélküle a visszaállított adatbázis nem tudja visszafejteni a benne lévő hitelesítő adatokat.

Adatbázis

Beállítás Jelentés
POSTGRES_PASSWORD Superuser, a konténer és a mentések használják
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Szerepkörjelszavak, az első indításkor kerülnek beállításra
DATABASE_URL Alkalmazásszerepkör. Minden lekérdezésére row-level security vonatkozik
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Migrátorszerepkör a migrate és init szolgáltatáshoz
QUIRE_SUPERUSER_URL Csak az első indítás használja
QUIRE_REPORT_DATABASE_URL Csak olvasható jelentési szerepkör a jelentésekhez és jelentéskészítőhöz
QUIRE_AUDIT_DATABASE_URL Audit-szerepkör az auditkonzolhoz és SIEM-exporthoz
QUIRE_DATABASE_ID Tetszőleges UUID, a telepítés teljes élettartamára rögzítve

A szerepkörjelszavakat csak az adatbáziskötet első létrehozásakor alkalmazzuk. Későbbi cseréjükhöz használja az ALTER ROLE utasítást, majd módosítsa a hozzá tartozó URL-t.

Ha egy fizikai adatbázishoz másik, regisztrált fizikai adatbázist használ, állítsa be annak saját QUIRE_REPORT_DATABASE_URL és DATABASE_URL-hez tartozó quire_report URL-jét a webes és worker-környezetben, majd az adatbázis Jelentési környezeti változó mezőjében adja meg a környezeti változó nevét env:NAME alakban. Ennek ugyanarra az adatbázisra kell mutatnia, mint az alkalmazáskapcsolatnak; lehetőleg olvasási replikára. Minden jelentési felület a tenant saját adatbázisának jelentési URL-jét használja: a jelentéskészítő és a mentett jelentések, az ütemezett kézbesítések, a jelentések exportjai, az analitika, az auditnapló, a REST audit-erőforrásai és az asszisztens auditkeresése. Egyik sem használja egy másik adatbázis URL-jét. Ha nincs jelentési URL, a szokásos jelentések az adott adatbázis alkalmazás-URL-jét használják; az analitika és az auditolvasás megtagadja a hozzáférést, mert az alkalmazásszerepkör nem olvashatja az auditnaplót.

Illesztőprogramok

Beállítás Értékek Jelentés
QUIRE_STORAGE_DRIVER local (alapértelmezett), s3 vagy azure A local files fájlokat helyez a kötetre; az s3 támogatja az AWS S3-at, az R2-t, a GCS-kompatibilitást és más S3-kompatibilis tárolókat, valamint a megszakítható többrészes feltöltéseket.
QUIRE_REALTIME_DRIVER inprocess (alapértelmezett), sse, centrifugo vagy durable_objects Az inprocess egy webkonténerhez való; több példányhoz a centrifugo vagy az sse használható.
QUIRE_CACHE_DRIVER memory (alapértelmezett), postgres vagy valkey A memory folyamatonkénti; a sebességkorlátok megosztásához használja a valkey vagy postgres lehetőséget.
QUIRE_VIDEO_DRIVER ffmpeg (alapértelmezett) vagy progressive_mp4 Vagy használja a Cloudflare Stream, Mux vagy Bunny hosztolt szolgáltatását a kulcsaival.
QUIRE_IMAGE_DRIVER noop (alapértelmezett), imgproxy vagy cloudflare A noop eredeti méretű kimenetet ad; az imgproxy szolgáltatáshoz az images profil és beállításai szükségesek; a cloudflare a Cloudflare Imagest használja.
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi vagy in_process Az alapértelmezett élő alkalom szolgáltatója; ha nincs beállítva, konfigurálatlanként jelenik meg, amíg a szervezet nem csatlakoztatja saját fiókját az Integrációk, Élő alkalom szolgáltató részben. A szervezet fiókja élvez elsőbbséget. A hozzá tartozó beállításokat (BBB_URL, BBB_SECRET, ZOOM_*, TEAMS_*, GOOGLE_MEET_*, JITSI_*) csak a kiválasztott szolgáltató olvassa.
QUIRE_MEETING_REGIONS vesszővel elválasztott eu, uk, us lista Az a régió, ahol a platform alapértelmezett szolgáltatója feldolgozza az alkalmakat; ha nincs beállítva, a rendszer nem ellenőrzi a rögzített régiót, a korábbi működésnek megfelelően. A szervezet saját fiókjánál a régió az adott oldalon jelenik meg.

Az ebben a kiadásban nem szereplő illesztőprogram-érték esetén a webes szolgáltatás induláskor elutasítja a beállítást, és megnevezi azt ahelyett, hogy alapértelmezettet választana.

Képek

A képeket rögzített méretben kérheti a /api/files/{id}/image/{size} útvonalon. A rendszer ugyanazt a hozzáférést ellenőrzi, majd átirányít. A szervezet óránként legfeljebb QUIRE_IMAGE_SPECS_PER_HOUR (alapértelmezés szerint 2000) új kép/méret pár feldolgozását kérheti; a már elkészültek nem számítanak bele. Egynél több webkonténer esetén használja a valkey vagy postgres lehetőséget, és állítsa be ennek megfelelően a QUIRE_CACHE_DRIVER értékét a gyorsítótár megosztásához.

Beállítás Szükséges ehhez Jelentés
IMGPROXY_URL imgproxy Az imgproxy böngészőből elérhető címe, például https://images.example.org; a images profil a QUIRE_IMAGES_PORT porton (8082) teszi közzé.
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Az imgproxy hexadecimális kulcsai; ugyanazok, mint az induláskor. Mindegyik előállítható az openssl rand -hex 32 paranccsal. A Quire aláírja a képcímet, az imgproxy pedig csak a kért képeket jeleníti meg.
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy és helyi tárolás Az a forrás, ahonnan az imgproxy lekéri az eredetit. A Compose http://web:3000 értéket állít be; s3 vagy azure esetén a rendszer a tárolóból kéri le, így ez a beállítás használaton kívül marad.
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Images szerkesztési token és fiókkivonat az Images, Developer resources részből; engedélyezze a rugalmas változatokat.
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare, nem kötelező Ha be van állítva, a rendszer aláírt, lejáró URL-eket használ. Enélkül a nyilvános URL-ek a QUIRE_SECRET_KEY értékéből származnak, amelyet senki sem tud kitalálni.

A Cloudflare Images saját másolatot tárol; a worker az eredeti törlése előtt ezt a másolatot is törli.

Feladatsor

A háttérfeladatok a pg-boss szolgáltatást használják ugyanazon a Postgres-adatbázison; nincs szükség külön feladatsor-szolgáltatásra vagy annak beállítására. A feladat ugyanabban a tranzakcióban kerül sorba, mint az azt kiváltó módosítás, így összeomláskor nem vész el és nem duplázódik meg. A QUIRE_QUEUE_DRIVER esetén a pgboss az alapértelmezett. A vercel és cloudflare értékek csak a könnyű értesítési és webhook-kézbesítéseket helyezik át a platform feladatsorába. A Vercelről és a Cloudflare-ről szóló útmutató ismerteti ezeket, illetve azt, hogyan kerülnek sorba a feladatok.

E-mail

Állítsa be az alábbiak egyikét:

  • QUIRE_EMAIL_PROVIDER_CONFIG: JSON-objektum, amely megadja a HTTP-szolgáltatót és a hitelesítő adatokat, például {"provider":"postmark","token":"..."}. Támogatott szolgáltatók: Postmark, Amazon SES, Mailgun, SendGrid és Resend.
  • QUIRE_SMTP_URL: például smtp://user:password@host:587; ez a célkörnyezet azonban SMTP-t blokkoló kiszolgáló nélküli platform.

A feladó címét a QUIRE_MAIL_FROM beállítással adja meg. Teszteléshez indítsa el a devmail profilt, állítsa be a QUIRE_SMTP_URL=smtp://mailpit:1025 értéket, és a leveleket a http://localhost:8025 címen olvassa el.

Nem kötelező szolgáltatások

Beállítás Jelentés
CLAMAV_URL=tcp://clamav:3310 scan, a feltöltések ellenőrzése
GOTENBERG_URL=http://gotenberg:3000 preview, előnézetek készítése
IMGPROXY_KEY, IMGPROXY_SALT images, képek feldolgozása
VALKEY_URL=redis://valkey:6379 cache, gyorsítótár
QUIRE_OPENSEARCH_URL vagy QUIRE_MEILISEARCH_URL Külső keresés; ezek nélkül a Postgres teljes szöveges keresése működik.
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Jelszószivárgás ellenőrzése. Alapértelmezés szerint be van kapcsolva az api.pwnedpasswords.com címen; csak az ötk karakteres hash-előtagot küldi el. Az off letiltja, az URL pedig egy Ön által üzemeltetett tartomány-API-ra mutathat.

Megfigyelhetőség

Az OTEL_EXPORTER_OTLP_ENDPOINT a nyomkövetéseket és metrikákat fogadó gyűjtőt nevezi meg. A observability profillal ez a http://otelcol:4318; a docker/otel-collector.yaml fájlban adjon hozzá háttérrendszer-exportert. Beállítása esetén a web, a worker, az ütemező, a tartalomszolgáltatás és a közös szerkesztés OTLP/HTTP-n küld szakaszokat (webes kérések, tenant-adatbázis tranzakciói, worker-feladatok és kimenő hívások), valamint percenként metrikákat. A metrikák letiltásához állítsa az OTEL_METRICS_EXPORTER=none értéket. Az OTEL_TRACES_SAMPLER_ARG adja meg a nyomkövetések mintavételezési arányát. A naplók a szabványos kimenetre kerülnek a LOG_LEVEL szinttel, a Compose pedig forgatja őket. A nyomkövetések nem tartalmaznak személyes adatokat.

Regionális kimenő forgalom (EU-adattárolás)

A QUIRE_REGION=eu azt jelzi, hogy a stack EU-s szervezeteket szolgál ki. Az EU-régióhoz rögzített szervezeteknél a worker a kimenő kéréseket az engedélyezőlistára korlátozza (21-compliance.md, 8.1. szakasz). Az engedélyezőlista a régióban konfigurált szolgáltatások által megadott hosztokat tartalmazza: tárolási végpontok, e-mail-szolgáltató, hosztolt videó, szervezeti tárolási célpontok, AI-szolgáltatók és e-mail-fiók, aktív eltéréssel működő szolgáltatások, valamint a QUIRE_EGRESS_ALLOW_HOSTS értékei. A többi nyilvános hosztra irányuló kérést küldés előtt elutasítja, és az elutasítást a privacy/egress_refused eseménynél naplózza; az engedélyezett hosztok a Megfelelőség, Adattárolás részen láthatók.

Beállítás Értékek Jelentés
QUIRE_EGRESS_ALLOW_HOSTS Hosztnevek vesszővel elválasztott listája vagy *.example.org az összes aldomainhez További hosztok, amelyeket az EU-s szervezetek elérhetnek. A webhook-, xAPI- és SIEM-végpontokat, a bloghírcsatornákat és az Amazon SES hosztjait is itt adja meg, mert ezeket a szervezet választja, és egyik szolgáltatás sem deklarálja. A saját hálózat loopback- és privát címei, illetve egyszerű nevei, például web vagy clamav, nem esnek ellenőrzés alá.

Az Egyesült Királyság és az Egyesült Államok régiói nem tartoznak a hosztlistás korlátozás alá, de a szolgáltatások régióellenőrzését ott is tartsa be. Állítsa be ezt a worker számára; a rendszergazdai felület a webes rétegtől olvassa az értéket. Helyezze a docker/.env fájlba, hogy minden szolgáltatás olvashassa.

Az alkalmazás ellenőrzése világos hibát és auditbejegyzést ad, de nem jelent garanciát: a kód hibás lehet. A hálózati korlátozás nyújt garanciát. A Compose ezt önmagában nem kényszeríti ki. Regionális stack esetén tegye a worker és web szolgáltatást internal: true hálózatra, amelynek egyetlen kifelé vezető útvonala az olyan hosztokat engedélyező kimenő proxy, amelyeket a QUIRE_EGRESS_ALLOW_HOSTS és a konfigurált szolgáltatások felsorolnak (például Squid vagy tinyproxy). Állítsa be a HTTPS_PROXY értékét. Az Adattárolás oldal felsorolja az engedélyezett hosztokat, így összevetheti őket.

Állapotellenőrzés

Útvonal Jelentés
/healthz Életbenlét: a folyamat válaszol; a Compose ezt ellenőrzi.
/readyz Függőségek elérhetők, és a nem kötelező szolgáltatások konfigurációs állapota megfelelő; a terheléselosztót erre irányítsa.

A docker compose -f docker/compose.yaml ps paranccsal megtekintheti az állapotot.

TLS

Az alapértelmezett stack proxy szolgáltatása a Caddy (docker/caddy/Caddyfile, Apache-2.0 licenc). A 80-as és 443-as porton figyel, és az alábbi útvonalakat irányítja:

Útvonal vagy gazdanév Cél
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, minden tenant-aldomain és egyéni domain web
/_collab/ Közös szerkesztési websocket (collab, QUIRE_COLLAB_URL)
/_realtime/connection/ centrifugo kliens-websocket; a szerver API-ja nincs kitéve.
/_images/ imgproxy (az images profillal; IMGPROXY_URL)

Az init-env.sh az originek alapján vezeti le a QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL és IMGPROXY_URL értékét, hogy azok ne térhessenek el egymástól. Módosításkor hangolja össze őket.

A tanúsítványokat a QUIRE_PROXY_TLS beállítás határozza meg:

  • internal (alapértelmezett): a Caddy helyi hitelesítésszolgáltatót használ a localhost, a *.localhost és az lvh.me esetében. Egyszer bízzon meg benne, majd futtassa ezt:

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

    Adja hozzá a quire-local-ca.crt tanúsítványt a rendszer vagy a böngésző megbízható tanúsítványaihoz; a curl esetében használja a --cacert kapcsolót.

  • E-mail-cím: automatikus ACME-tanúsítványok (először Let’s Encrypt, majd ZeroSSL) valódi hosztnevekhez. Az originek és a tenant-hosztok DNS-rekordjai erre a hostra mutassanak, a portok pedig legyenek elérhetők.

A tenant-hoszt tanúsítványát igény szerint, az első látogatáskor állítja ki a rendszer, de csak akkor, ha a webes szolgáltatás a Compose-hálózaton keresztüli /tls-allowed végponton engedélyezi. Nincs wildcard vagy DNS-bővítmény; véletlenszerű hosztra mutatással nem lehet tanúsítványt kérni. A tanúsítványok és a hitelesítésszolgáltató adatai a caddy-data kötetben vannak; internal használat esetén ezt is mentse a többi adattal együtt.

A webes szolgáltatás csak a proxytól bízik meg az X-Forwarded-For fejlécben: a rögzített QUIRE_PROXY_ADDRESS alapértéke 172.29.64.10, a rögzített QUIRE_COMPOSE_SUBNET hálózaton; a QUIRE_TRUSTED_PROXY_CIDRS ezt nevezi meg. Ha a hálózati tartomány ütközik, módosítsa mindkettőt, majd futtassa a docker compose down parancsot az up előtt.

Saját fordított proxy mögött

Saját terheléselosztó vagy proxy használatához hagyja ki a proxy szolgáltatást a docker compose up -d --scale proxy=0 paranccsal, és a TLS-t a web (8080), content (8081), collab (1234, websocket) és centrifugo (8000, websocket) előtt fejezze be. Állítsa be a QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN és QUIRE_COLLAB_URL (wss:// értékkel) nyilvános címeit, valamint a proxy címtartományát a QUIRE_TRUSTED_PROXY_CIDRS értékeként.

Hibaelhárítás

  • Az init ezzel lép ki: „QUIRE_DATABASE_ID is not a UUID”: állítsa be uuidgen segítségével.
  • A web újraindul, és ezt írja: „did not start on compose”: a napló felsorolja a nem kezelhető beállításokat és a helyettesítőiket.
  • A .env fájlban megváltoztatott szerepkörjelszó az első indítás után nem hat: az init csak egyszer fut le; használja az ALTER ROLE utasítást.
  • A feltöltés vizsgálata hibát jelez a CLAMAV_URL használatakor: a ClamAV az első induláskor tölti le az aláírásokat, ami több percig tarthat.
Navigáció

Írjon a kereséshez…

↑↓ navigálás↵ kiválasztásEsc bezárás