Celý produkt běží na jednom hostiteli: LMS, úlohy na pozadí, služby realtime a společných úprav i všechny volitelné služby za profily. Architektura je popsána v části 2 dokumentu docs/architecture/23-ops.md.
Další cíle: Vercel a Cloudflare Workers provozují pouze webovou vrstvu. Aktualizace popisuje upgrade.md; zálohy a zkoušku obnovy najdete v backup-restore.md.
Co budete potřebovat
- Docker Engine 27 nebo novější a plugin Compose 2.30 nebo novější.
- 4 jádra CPU a 8 GB paměti pro výchozí stack; s
--profile full8 jader a 16 GB (jen podpisy ClamAV zabírají přibližně 1,5 GB). - DNS název pro webovou vrstvu a druhý pro nedůvěryhodný obsah. Musí jít o různé hostitele: balíčky SCORM a nahrané HTML běží z originu obsahu, takže nikdy nemohou číst soubory cookie LMS.
- Pro místní test se
lvh.mea*.localhostpřekládají na 127.0.0.1; používá jedocker/.env.example. Vlastní službaproxyve stacku poskytuje obě adresy přes https s místní certifikační autoritou, takže není třeba nic dalšího instalovat (viz „TLS“). - Na hostiteli musí být volné porty 80 a 443; změní je nastavení
QUIRE_PROXY_HTTP_PORTaQUIRE_PROXY_HTTPS_PORT.
První spuště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 initSkript docker/scripts/init-env.sh vytvoří soubor docker/.env podle šablony docker/.env.example s vygenerovanými tajnými údaji (hesly databáze, podpisovým a hlavním klíčem, párem klíčů pro spuštění obsahu) i podpisovým klíčem kontrolního bodu auditu v docker/secrets/audit-signing-key.pem; Compose ho připojí do workerů jako tajný údaj. Potřebuje pouze sh, awk a openssl a odmítne přepsat existující docker/.env. Oba soubory zkopírujte mimo hostitele: bez QUIRE_MASTER_KEY obnovená databáze nedokáže rozšifrovat uložené přihlašovací údaje. Chcete-li soubor vyplnit ručně, použijte cp docker/.env.example docker/.env; soubor popisuje vytvoření každého tajného údaje.
Oba originy musí používat https: služba content v produkčním prostředí odmítá prosté http a originy nesmějí sdílet registrovatelnou doménu. Služba proxy ukončuje TLS pro oba (viz „TLS“); init-env.sh odmítne origin začínající na http://.
Stack se spouští v pevně daném pořadí a každý krok počká na předchozí:
postgrespřejde do zdravého stavu. Při úplně prvním spuštění nastaví jeho inicializační skript (docker/postgres/init/90-passwords.sh) čtyři hesla rolí.migratepoužije všechny migrace a připraví frontu úloh v řídicí databázi i ve všech vyhrazených databázích tenantů, ověří, že jsou ve shodě, a potom skončí (docs/ops/upgrade.md). Migrace se spouštějí při každém startu a jsou idempotentní, takže aktualizace vyžaduje nový image a restart.init(apps/web/src/first-run.ts) zaznamená aplikační databázi podQUIRE_DATABASE_IDa při nastaveníQUIRE_SETUP_ADMIN_EMAILvytvoří první organizaci a jejího administrátora. Přihlašovací adresa a vygenerované heslo se jednou vypíší vdocker compose logs init.- Spustí se
web,content,worker,scheduler,collabacentrifugo. proxyzačne běžet poté, co budouwebacontentve zdravém stavu.
Otevřete https://demo. následované doménou aplikace (protokol init vypíše přesnou přihlašovací adresu) a přihlaste se. Při místní instalaci nejprve důvěřujte certifikační autoritě proxy (viz „TLS“). Vygenerované heslo změňte na /account/security.
Proces spuštěný bez povinného tajného údaje odmítne běžet a v protokolu pojmenuje chybějící nastavení. Nic se nespustí s neúplnou konfigurací.
Služby a profily
| Služba | Profil | Co dělá |
|---|---|---|
| postgres | always | Databáze (PostgreSQL 18 s pgvector, sestavený z docker/postgres.Dockerfile); WAL se archivuje od prvního spuštění |
| migrate, init | always | Jednorázové úlohy: migrace a potom první spuštění |
| web | always | LMS na QUIRE_HTTP_PORT (8080) |
| content | always | Origin nedůvěryhodného obsahu na QUIRE_CONTENT_PORT (8081) |
| worker | always | Úlohy na pozadí: e-mail, reporty, zpracování souborů a webhooky |
| scheduler | always | Opakované úlohy: zaregistruje 64 běhových plánů a předává je workeru; vždy je aktivní jen jeden vedoucí |
| collab | always | Websocket společných úprav na QUIRE_COLLAB_HTTP_PORT (1234) |
| centrifugo | always | Realtime fan-out na QUIRE_REALTIME_PORT (8000) |
| proxy | always | Caddy, vstupní bod TLS na portech 80 a 443 (viz „TLS“) |
| valkey | cache |
Cache a limity četnosti požadavků |
| clamav | scan |
Kontrola nahraných souborů na malware |
| gotenberg | preview |
Náhledy dokumentů Office v PDF a vykreslování certifikátů |
| imgproxy | images |
Změna rozměrů a převod obrázků |
| transcoder | video |
Image workeru s ffmpeg pouze pod licencí LGPL pro převod videí |
| seaweedfs | storage |
Objektové úložiště kompatibilní se S3 na tomto hostiteli |
| otelcol | observability |
Collector OpenTelemetry |
| mailpit | devmail |
Zachytí veškerou odchozí poštu při zkoušení Quire |
| backup | backup |
Jednorázová základní záloha; viz backup-restore.md |
| backup-scheduler, backup-offsite | backup |
Základní záloha každých QUIRE_BACKUP_INTERVAL_HOURS a šifrované kopie mimo hostitele s týdenním ověřovacím drillem |
| h5p | h5p |
Image nástroje H5P LTI 1.3, kterou dodáte v QUIRE_H5P_IMAGE, na QUIRE_H5P_PORT (8090); viz „Připojení poskytovatele H5P“ |
Profil --profile full spustí všechny volitelné služby kromě backup a h5p. Jednu službu spustíte příkazem docker compose -f docker/compose.yaml --profile scan up -d. Quire funguje i bez volitelné služby a oznámí, co chybí: bez skeneru se soubory ukládají nezkontrolované a administrátor dostane upozornění; bez Gotenbergu se soubory nabízejí ke stažení místo náhledu; bez transcoderu se video přehrává jako původní soubor.
Všechny image třetích stran a související licenční povinnosti uvádí docker/third-party-containers.yaml.
Připojení poskytovatele H5P
Quire nevkládá ani nedodává běhové prostředí H5P nebo sidecar (ADR 0019). Pokud používáte H5P, pořiďte si vlastní hostované předplatné nebo provozujte samostatně vlastní self-hosted instanci H5P. Zaregistrujte poskytovatele jako externí nástroj LTI 1.3 a přidejte jeho obsah do kurzů jako aktivity nástroje. Quire si přes LTI Assignment and Grade Services (AGS) vyměňuje známky a průběh aktivit a hodnocení. Pokud poskytovatel odesílá také xAPI statements, nakonfigurujte to samostatně pro úložiště xAPI statements v Quire; výměna známek a průběhu přes AGS xAPI statements neodesílá. Importy z Moodle označují aktivity H5P jako vyžadující připojení nástroje LTI. Za běhové prostředí H5P, tvorbu obsahu, banku obsahu a historii pokusů nadále odpovídá poskytovatel.
Chcete-li na tomto hostiteli provozovat vlastní self-hosted instanci, nastavte QUIRE_H5P_IMAGE na její image a spusťte profil h5p. Compose ji zveřejní na QUIRE_H5P_PORT (8090) a její data uchová ve svazku h5p-data; image i veškeré související povinnosti zůstávají na vás.
Nastavení
Každý proces načítá docker/.env. Šablona docker/.env.example uvádí všechna nastavení a jejich výchozí hodnoty. Skupiny:
Adresy
| Nastavení | Význam |
|---|---|
QUIRE_APP_ORIGIN |
Veřejná adresa LMS, například https://learn.example.com |
QUIRE_CONTENT_ORIGIN |
Origin obsahu na jiném hostiteli |
QUIRE_PLATFORM_DOMAINS |
Domény organizací, oddělené čárkami |
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 |
Zde compose. Další cíle popisují příručky pro vercel a cloudflare |
QUIRE_TRUSTED_PROXY_CIDRS |
Proxy, jejichž hlavičce X-Forwarded-For se důvěřuje |
Tajné údaje
| Nastavení | Význam |
|---|---|
QUIRE_SECRET_KEY |
Podepisuje relace a tokeny. 64 hexadecimálních znaků |
QUIRE_MASTER_KEY |
Obaluje uložené přihlašovací údaje, například tajné údaje SSO a webhooků. 32 bajtů, base64. Webová vrstva i worker potřebují stejnou hodnotu. Obměna: key-rotation.md |
QUIRE_MASTER_KEY_VERSION |
Označení verze hlavního klíče; pokud není nastavené, použije se v1. Při obměně ho zvyšte |
QUIRE_MASTER_KEY_RETIRED |
Starší hlavní klíče potřebné ke čtení dat, která obalily, ve tvaru v1=<base64>. Po skončení obměny bez nevyřešených hodnot je odstraňte |
QUIRE_COLLAB_SIGNING_KEY |
Web a collab jej sdílejí k podpisu tokenů pro úpravy |
QUIRE_BACKUP_SIGNING_KEY |
Volitelně podepisuje zálohy kurzů |
Kopii QUIRE_MASTER_KEY uchovávejte mimo tohoto hostitele. Databáze obnovená bez něj nedokáže rozšifrovat své přihlašovací údaje.
Databáze
| Nastavení | Význam |
|---|---|
POSTGRES_PASSWORD |
Superuživatel, kterého používá kontejner a zálohování |
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD |
Hesla rolí nastavená při prvním spuštění |
DATABASE_URL |
Aplikační role; row-level security se uplatňuje na každý její dotaz |
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL |
Role migrátoru pro služby migrate a init |
QUIRE_SUPERUSER_URL |
Používá se pouze při prvním spuštění |
QUIRE_REPORT_DATABASE_URL |
Reportovací role pouze pro čtení, pro reporty a jejich tvorbu |
QUIRE_AUDIT_DATABASE_URL |
Auditní role pro auditní konzoli a export SIEM |
QUIRE_DATABASE_ID |
Libovolné UUID, nemění se po celou dobu instalace |
Hesla rolí se použijí pouze při prvním vytvoření databázového svazku. Chcete-li je později změnit, použijte ALTER ROLE a aktualizujte odpovídající URL.
QUIRE_REPORT_DATABASE_URL se používá pro fyzickou databázi nastavenou v DATABASE_URL. U každé další registrované fyzické databáze nastavte její vlastní připojovací URL quire_report v prostředí webu i workeru a název proměnné zadejte v poli Reporting environment variable dané databáze jako env:NAME. Reference musí ukazovat na stejnou databázi jako její aplikační připojení, ideálně na její repliku pro čtení. Každý reportovací povrch přejde spolu s tenantem k reportovacímu připojení vlastní databáze: tvůrce reportů a uložené reporty, plánované doručování, exporty reportů, analytika, auditní protokol, auditní prostředky REST i auditní vyhledávání asistenta. Žádný z nich nikdy nepoužije reportovací URL jiné databáze. Pokud databáze nemá reportovací připojení, běžné reporty používají její vlastní aplikační připojení; analytika a čtení auditu se odmítnou a vysvětlí proč, protože aplikační role nemůže číst auditní stopu.
Ovladače
| Nastavení | V této verzi | Poznámky |
|---|---|---|
QUIRE_STORAGE_DRIVER |
local (výchozí), s3 nebo azure |
local ukládá soubory do svazku files. s3 zahrnuje AWS S3, R2, interoperabilitu s GCS a další úložiště kompatibilní se S3 včetně obnovitelných vícedílných nahrávání |
QUIRE_REALTIME_DRIVER |
inprocess (výchozí), sse, centrifugo nebo durable_objects |
inprocess se hodí pro jeden webový kontejner; při více kontejnerech použijte centrifugo nebo sse |
QUIRE_CACHE_DRIVER |
memory (výchozí), postgres nebo valkey |
memory je pro každý proces zvlášť; aby limity požadavků platily napříč kontejnery, použijte valkey nebo postgres |
QUIRE_VIDEO_DRIVER |
ffmpeg (výchozí) nebo progressive_mp4 |
Alternativou je hostovaný poskytovatel Cloudflare Stream, Mux nebo Bunny a jeho klíče |
QUIRE_IMAGE_DRIVER |
noop (výchozí), imgproxy nebo cloudflare |
noop poskytuje všechny obrázky v původní velikosti. imgproxy vyžaduje profil images a níže uvedená nastavení; cloudflare používá Cloudflare Images |
QUIRE_MEETING_PROVIDER |
bbb, zoom, teams, meet, jitsi nebo in_process |
Výchozí poskytovatel platformy pro živá setkání. Pokud není nastavený, živá setkání hlásí, že nejsou nakonfigurovaná, dokud organizace nepřipojí vlastní účet v části Integrace, Poskytovatel živých setkání. Vlastní účet organizace má vždy přednost. Nastavení konkrétního poskytovatele (BBB_URL a BBB_SECRET, proměnné ZOOM_*, TEAMS_*, GOOGLE_MEET_* a JITSI_*) se načítají pouze pro poskytovatele uvedeného zde |
QUIRE_MEETING_REGIONS |
Seznam hodnot eu, uk, us oddělených čárkami |
Určuje, kde výchozí poskytovatel platformy zpracovává schůzky. Pokud není nastavený, jako dříve se nekontroluje vůči organizaci připnuté k oblasti. Vlastní účet organizace uvádí oblasti na své stránce |
Pokud tato verze ovladač neobsahuje, webová vrstva ho při spuštění odmítne a pojmenuje příslušné nastavení, místo aby ho potichu nahradila výchozí hodnotou.
Obrázky
Stránky požadují obrázky ve čtyřech pevně daných velikostech přes /api/files/{id}/image/{size}. Endpoint ověří stejný přístup jako k samotnému souboru a přesměruje na obrazovou službu. Každá organizace může za hodinu požadovat QUIRE_IMAGE_SPECS_PER_HOUR (výchozí hodnota 2000) nových kombinací obrázku a velikosti; velikosti vytvořené v danou hodinu se nezapočítávají. Při více webových kontejnerech použijte valkey nebo postgres pro QUIRE_CACHE_DRIVER, aby limit platil napříč nimi.
| Nastavení | Ovladač | Poznámky |
|---|---|---|
IMGPROXY_URL |
imgproxy |
Adresa, na které prohlížeče dosáhnou imgproxy, například https://images.example.org. Profil images ho zveřejní na QUIRE_IMAGES_PORT (8082) |
IMGPROXY_KEY, IMGPROXY_SALT |
imgproxy |
Hexadecimální řetězce, stejné jako hodnoty použité při spuštění imgproxy. Každý vygenerujte pomocí openssl rand -hex 32. Quire jimi podepisuje každou adresu obrázku, takže imgproxy nevykreslí nic, co Quire nepožádal |
QUIRE_IMAGE_SOURCE_ORIGIN |
imgproxy s místním úložištěm |
Odkud imgproxy načítá originály. Compose nastavuje http://web:3000. U úložiště s3 nebo azure načítá imgproxy soubory z bucketu, takže se tato hodnota nepoužije |
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH |
cloudflare |
Token API s oprávněním upravovat Images a hash účtu z části Images, Developer resources. Pro účet zapněte flexibilní varianty |
CLOUDFLARE_IMAGES_SIGNING_KEY |
cloudflare |
Volitelné. Po nastavení budou obrázky soukromé a každá adresa podepsaná s dobou platnosti. Bez něj jsou obrázky veřejné na adresách odvozených z QUIRE_SECRET_KEY, které nikdo nedokáže uhodnout |
Cloudflare Images uchovává vlastní kopii každého originálu, který poskytuje. Při smazání souboru worker nejprve odstraní tuto kopii a až potom originál.
Fronta
Úlohy na pozadí používají pg-boss ve stejné databázi Postgres, takže není potřeba provozovat ani konfigurovat samostatnou frontu. Úlohy se zařazují ve stejné transakci jako změna, která je vyvolala, takže je pád nemůže ztratit ani odeslat dvakrát. Výchozí ovladač QUIRE_QUEUE_DRIVER je zde pgboss; vercel a cloudflare přesunou pouze lehké doručování oznámení a webhooků do vlastní fronty platformy. Příručky pro Vercel a Cloudflare popisují, jak jejich webové vrstvy úlohy zařazují.
Nastavte jednu z možností:
QUIRE_EMAIL_PROVIDER_CONFIG: objekt JSON s názvem HTTP poskytovatele a jeho přístupovými údaji, například{"provider":"postmark","token":"..."}. Podporovány jsou Postmark, Amazon SES, Mailgun, SendGrid a Resend.QUIRE_SMTP_URL:smtp://user:password@host:587. Funguje pouze pro tento cíl; serverless cíle blokují SMTP.
Odesílatele určuje QUIRE_MAIL_FROM. Chcete-li Quire vyzkoušet, spusťte profil devmail, nastavte QUIRE_SMTP_URL=smtp://mailpit:1025 a poštu čtěte na http://localhost:8025.
Volitelné služby
| Nastavení | 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 nebo QUIRE_MEILISEARCH_URL |
Externí vyhledávání; jinak fulltext v Postgresu |
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL |
Kontrola kompromitovaných hesel. Ve výchozím nastavení je zapnutá a dotazuje se api.pwnedpasswords.com (odesílá se pouze prvních pět znaků hashe); hodnotou off ji vypnete, případně URL nasměrujte na vlastní range API |
Observabilita
OTEL_EXPORTER_OTLP_ENDPOINT určuje collector, kterému každý proces posílá trasování a metriky. S profilem observability je to http://otelcol:4318; exportér pro váš backend přidejte do docker/otel-collector.yaml. Webová vrstva, worker, scheduler, content a collab při nastavení exportují přes OTLP/HTTP rozsahy (webové požadavky, transakce databází tenantů, úlohy workeru a odchozí volání) a každou minutu metriky na stejný endpoint (OTEL_METRICS_EXPORTER=none je vypne). OTEL_TRACES_SAMPLER_ARG určuje podíl uchovávaných trasování. Protokoly se zapisují na standardní výstup s úrovní LOG_LEVEL; Compose je rotuje. Trasování nikdy neobsahuje osobní údaje.
Oblastní odchozí provoz (datová rezidence EU)
QUIRE_REGION=eu označuje, že stack obsluhuje organizace v Evropské unii. Worker pak veškerá odchozí volání pro organizaci připnutou k EU omezuje na seznam povolených hostitelů (21-compliance.md, část 8.1). Seznam tvoří hostitelé, které pro danou oblast deklarují nakonfigurované služby (endpoint úložiště, poskytovatel e-mailu a hostovaného videa, vlastní úložiště organizace, poskytovatelé AI a e-mailový účet), hostitelé služeb pod aktivní výjimkou a hostitelé uvedení v QUIRE_EGRESS_ALLOW_HOSTS. Požadavek na jakéhokoli jiného veřejného hostitele se před odesláním odmítne, odmítnutí se zapíše do auditní stopy organizace jako privacy/egress_refused a zobrazí se v části Soulad, Datová rezidence.
| Nastavení | Hodnoty | Účinek |
|---|---|---|
QUIRE_EGRESS_ALLOW_HOSTS |
Seznam názvů hostitelů oddělených čárkami nebo *.example.org pro všechny subdomény |
Další hostitelé, ke kterým může organizace z EU přistupovat. Patří sem webhooky, endpointy xAPI a SIEM, kanály blogů a hostitelé Amazon SES, protože si je volí organizace a žádná služba je nedeklaruje. Loopback, soukromé adresy a jednoslovné názvy jako web nebo clamav patří do vaší vlastní sítě a nikdy se nekontrolují |
Organizace ve Spojeném království a USA se neomezují seznamem hostitelů; nadále se u nich kontrolují oblasti služeb. Nastavte seznam na workeru. Stránka správce ho na webové vrstvě čte a zobrazuje jako seznam povolených, proto ho uložte do docker/.env, který načítá každá služba.
Kontrola aplikace poskytuje srozumitelnou chybu a auditní záznam, ale nepředstavuje záruku: kód se může mýlit. Záruku zajišťuje síť. Compose ji za vás nevynucuje. U oblastního stacku umístěte služby worker a web do sítě internal: true, jejíž jedinou cestou ven je odchozí proxy (například Squid nebo kontejner tinyproxy), která povoluje stejné hostitele jako QUIRE_EGRESS_ALLOW_HOSTS a hostitele nakonfigurovaných služeb. Těmto službám nastavte HTTPS_PROXY. Stránka datové rezidence uvádí přesné hostitele povolené aplikací, takže můžete oba seznamy porovnat.
Zdraví služby
| Endpoint | Význam |
|---|---|
/healthz |
Živost: proces odpovídá. Používají ho kontroly zdraví Compose |
/readyz |
Připravenost: závislosti jsou dostupné a každá volitelná služba je uvedena jako nakonfigurovaná či nenakonfigurovaná. Sem nasměrujte load balancer |
Příkaz docker compose -f docker/compose.yaml ps zobrazí stav každé služby.
TLS
Služba proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile) je součástí výchozího stacku. Odpovídá na portech 80 a 443 a směruje:
| Hostitel nebo cesta | Cíl |
|---|---|
QUIRE_PROXY_CONTENT_HOST |
content |
QUIRE_PROXY_APP_HOST, každá subdoména tenanta a vlastní doména |
web |
/_collab/ na těchto hostitelích |
collab (websocket, QUIRE_COLLAB_URL) |
/_realtime/connection/ na těchto hostitelích |
Klientský websocket služby centrifugo; její serverové API se nikdy nezveřejňuje |
/_images/ na těchto hostitelích |
imgproxy s profilem images (IMGPROXY_URL) |
Skript init-env.sh odvodí z obou originů hodnoty QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL a IMGPROXY_URL, aby se nemohly rozejít. Pokud origin měníte ručně, upravte odpovídající hodnoty společně.
Certifikáty se řídí nastavením QUIRE_PROXY_TLS:
-
internal(výchozí): vlastní certifikační autorita Caddy prolocalhost,*.localhostalvh.me. Jednou důvěřujte jejímu kořenovému certifikátu a potom přejděte na stránku:docker compose -f docker/compose.yaml cp \ proxy:/data/caddy/pki/authorities/local/root.crt ./quire-local-ca.crtPřidejte
quire-local-ca.crtdo úložiště důvěryhodných certifikátů systému nebo prohlížeče. Příkazcurlho použije s volbou--cacert. -
E-mailová adresa: automatické certifikáty ACME (Let’s Encrypt a potom ZeroSSL) pro skutečné názvy hostitelů. DNS pro oba originy a každý hostitel tenanta musí ukazovat sem a porty 80 a 443 musí být dostupné z internetu.
Certifikáty pro hostitele tenantů se vydávají na vyžádání při první návštěvě, pouze pokud webová vrstva potvrdí, že název patří této instalaci (/tls-allowed, dotazované v síti Compose). Není potřeba wildcard certifikát ani plugin poskytovatele DNS; cizí osoba nemůže nasměrováním názvu na hostitele vynutit žádost o certifikát. Certifikáty a místní autorita jsou ve svazku caddy-data; používáte-li internal, zálohujte ho společně s ostatními.
Webová vrstva důvěřuje hlavičce X-Forwarded-For pouze od proxy: proxy má pevnou adresu (QUIRE_PROXY_ADDRESS, výchozí 172.29.64.10) na pevném podsíťovém rozsahu (QUIRE_COMPOSE_SUBNET) a QUIRE_TRUSTED_PROXY_CIDRS tuto adresu určuje. Pokud se podsíť překrývá se sítí hostitele, změňte obě nastavení a spusťte docker compose down před dalším up.
Za vlastní reverzní proxy
Chcete-li použít load balancer nebo proxy, které už provozujete, vynechte službu proxy (docker compose up -d --scale proxy=0) a ukončete TLS před službami web (8080), content (8081), collab (1234, websocket) a centrifugo (8000, websocket). Nastavte veřejné adresy v QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN a QUIRE_COLLAB_URL (wss://) a rozsah adres vaší proxy v QUIRE_TRUSTED_PROXY_CIDRS.
Řešení potíží
initskončí s chybou „QUIRE_DATABASE_ID is not a UUID“: nastavte hodnotu příkazemuuidgen.webse restartuje s chybou „did not start on compose“: protokol vypíše každé nastavení, které nelze použít, a doporučenou náhradu.- Změna hesla role v
.envpo prvním spuštění nic neudělá: inicializační skript běží jen jednou. PoužijteALTER ROLE. - Nahrávání selhává kvůli skenování, přestože je nastaveno
CLAMAV_URL: ClamAV při prvním spuštění stahuje podpisy, což trvá několik minut.