ʻO kēia ka huahana piha ma hoʻokahi host: ka LMS, kāna mau hana hope, nā lawelawe manawa maoli a hoʻoponopono hui, a me kēlā me kēia lawelawe koho ma lalo o profile. Aia ka hoʻolālā ma ka māhele 2 o docs/architecture/23-ops.md.
Nā pahuhopu ʻē aʻe: holo wale ʻo Vercel a me Cloudflare Workers i ka papa pūnaewele. Aia nā hōʻano hou ma upgrade.md, a me nā papaʻa a me ka hoʻāʻo hoʻihoʻi ma backup-restore.md.
Nā mea e pono ai
- Docker Engine 27 a ʻoi aku me ka plugin Compose 2.30 a ʻoi aku.
- 4 mau kumu CPU a me 8 GB hoʻomanaʻo no ka stack paʻamau; 8 kumu a me 16 GB me
--profile full(paʻa ʻo ClamAV hoʻokahi i kahi o 1.5 GB o nā pūlima). - He inoa DNS no ka papa pūnaewele a he inoa lua no ka ʻike hilinaʻi ʻole. Pono lākou he host ʻokoʻa: holo nā pūʻolo SCORM a me ka HTML i hoʻouka ʻia ma ka origin ʻike, no laila ʻaʻole loa lākou e heluhelu i nā kuki LMS.
- No ka hoʻāʻo kūloko, hoʻonā ʻia ʻo
lvh.mea me*.localhosti 127.0.0.1, e like me ka hoʻonohonoho adocker/.env.example. Lawelawe kaproxyponoʻī o ka stack iā lāua ma https me ka mana hōʻoia kūloko, no laila ʻaʻohe mea ʻē aʻe e hoʻouka ai (e nānā iā «TLS»). - E hoʻokuʻu i nā awa 80 a me 443 ma ka host (
QUIRE_PROXY_HTTP_PORTa meQUIRE_PROXY_HTTPS_PORTe hoʻoneʻe iā lākou).
Hoʻomaka mua
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 initKākau ʻo docker/scripts/init-env.sh iā docker/.env mai docker/.env.example me ka hana ʻana i nā ʻōlelo huna malu a pau (nā ʻōlelo huna waihona ʻikepili, nā kī pūlima a haku, nā kī pālua hoʻomaka ʻike) a me ke kī pūlima māka hōʻoia ma docker/secrets/audit-signing-key.pem, a kau ʻo Compose ia i loko o nā worker ma ke ʻano he ʻōlelo huna malu. Pono wale iā sh, awk, a me openssl, ʻaʻole hoʻi e kākau ma luna o docker/.env e kū nei. E kope i nā faila ʻelua ma waho o ka host: me ka ʻole o QUIRE_MASTER_KEY, ʻaʻole hiki i ka waihona ʻikepili i hoʻihoʻi ʻia ke wehe i nā palapala hōʻoia i mālama ʻia. No ka hoʻopiha lima ʻana i ka faila, e hoʻohana iā cp docker/.env.example docker/.env; hōʻike ka faila i ka hana ʻana i kēlā me kēia ʻōlelo huna malu.
Pono nā origin ʻelua he https: hōʻole ka lawelawe ʻike i ka http maʻalahi i ka hana, ʻaʻole hoʻi e kaʻana i ka domain registrable hoʻokahi. Hoʻopau ka lawelawe proxy i ka TLS no lāua (e nānā iā «TLS»); hōʻole ʻo init-env.sh i origin http://.
Hoʻomaka ka stack ma ke kaʻina paʻa, a kali kēlā me kēia ʻanuʻu i ka mea ma mua:
- Ola ʻo
postgres. Ma ka hoʻomaka mua loa, hoʻonoho kāna script hoʻomaka (docker/postgres/init/90-passwords.sh) i nā ʻōlelo huna kuleana ʻehā. - Hoʻohana ʻo
migratei kēlā me kēia neʻe a hoʻomaka i ka queue hana ma ka waihona ʻikepili hoʻomalu a me kēlā me kēia waihona tenant hoʻolaʻa; nānā i ko lākou kūlike, a puka (docs/ops/upgrade.md). Holo nā neʻe i kēlā me kēia hoʻomaka a hana hoʻokahi wale nō, no laila he kiʻi hou a hoʻomaka hou ka hōʻano hou. - Hoʻopaʻa ʻo
init(apps/web/src/first-run.ts) i ka waihona ʻikepili polokalamu ma lalo oQUIRE_DATABASE_ID; a ke hoʻonoho ʻia ʻoQUIRE_SETUP_ADMIN_EMAIL, hana i hui mua a me kona luna hoʻomalu. Paʻi ʻia hoʻokahi manawa ka helu wahi komo a me ka ʻōlelo huna i hana ʻia, madocker compose logs init. - Hoʻomaka ʻo
web,content,worker,scheduler,collab, a mecentrifugo. - Hoʻomaka ʻo
proxyke ola ʻoweba mecontent.
E wehe iā https://demo. a ukali ʻia e kāu domain polokalamu (paʻi ka moʻolelo init i ka helu wahi komo pololei), a komo. Ma kahi hoʻouka kūloko, hilinaʻi mua i ka mana hōʻoia a ka proxy (e nānā iā «TLS»). E hoʻololi i ka ʻōlelo huna i hana ʻia ma /account/security.
Hōʻole kekahi kaʻina i hoʻomaka me ka ʻōlelo huna malu pono ʻole e hoʻomaka, a kapa i ka hoʻonohonoho i nele ma kāna moʻolelo. ʻAʻohe mea e hoʻomaka me ka hoʻonohonoho hapa.
Nā lawelawe a me nā profile
| Lawelawe | Profile | Hana |
|---|---|---|
| postgres | mau | Ka waihona ʻikepili (PostgreSQL 18 me pgvector, i kūkulu ʻia mai docker/postgres.Dockerfile), me ka waihona WAL mai ka hoʻomaka mua |
| migrate, init | mau | Hana hoʻokahi: neʻe ʻikepili, a laila hoʻomaka mua |
| web | mau | LMS, ma QUIRE_HTTP_PORT (8080) |
| content | mau | Origin ʻike hilinaʻi ʻole, ma QUIRE_CONTENT_PORT (8081) |
| worker | mau | Nā hana hope: leka uila, hōʻike, hoʻoponopono faila, a me nā webhook |
| scheduler | mau | Nā hana hoʻihoʻi: hoʻopaʻa i nā papa manawa holo 64 a hāʻawi i nā worker; hoʻokahi alakaʻi i ka manawa |
| collab | mau | Websocket hoʻoponopono hui, ma QUIRE_COLLAB_HTTP_PORT (1234) |
| centrifugo | mau | Hoʻolaha manawa maoli, ma QUIRE_REALTIME_PORT (8000) |
| proxy | mau | Caddy, ka puka mua TLS ma nā awa 80 a me 443 (e nānā iā «TLS») |
| valkey | cache |
Cache a me nā palena kāhea |
| clamav | scan |
Nānā malware i nā mea hoʻouka |
| gotenberg | preview |
Nānā mua Office ma PDF, unuhi palapala hōʻoia |
| imgproxy | images |
Hoʻololi nui a ʻano kiʻi |
| transcoder | video |
Kiʻi worker me ffmpeg LGPL wale nō no nā ʻano wikiō |
| seaweedfs | storage |
Waihona mea kūlike S3 ma kēia host |
| otelcol | observability |
Mea hōʻiliʻili OpenTelemetry |
| mailpit | devmail |
Hopu i nā leka puka a pau no ka hoʻāʻo iā Quire |
| backup | backup |
Papaʻa kumu hana hoʻokahi; e nānā iā backup-restore.md |
| backup-scheduler, backup-offsite | backup |
Papaʻa kumu i kēlā me kēia QUIRE_BACKUP_INTERVAL_HOURS, a me nā kope hoʻopāʻālua waho me ka hoʻāʻo hōʻoia pule |
| h5p | h5p |
Kiʻi lako H5P LTI 1.3 āu e hoʻolako ai ma QUIRE_H5P_IMAGE, ma QUIRE_H5P_PORT (8090); e nānā iā «Hoʻohui i mea hoʻolako H5P» |
Hoʻomaka ʻo --profile full i kēlā me kēia lawelawe koho koe ʻo backup a me h5p.
Hoʻomaka i hoʻokahi me docker compose -f docker/compose.yaml --profile scan up -d.
Holo nō ʻo Quire me ka ʻole o kekahi lawelawe koho a hōʻike i ka mea e nele ana: me ka
scanner ʻole, mālama ʻia nā hoʻouka me ka nānā ʻole a hoʻomaopopo ʻia ka luna
hoʻomalu; me ka ʻole o Gotenberg, hāʻawi ʻia ka hoʻoiho faila ma kahi o ka
nānā mua; me ka ʻole o ka transcoder, pāʻani ʻia ka wikiō e like me ka faila kumu.
Papa inoa ʻo docker/third-party-containers.yaml i kēlā me kēia kiʻi ʻaoʻao ʻekolu a me kona mau kuleana laikini.
Hoʻohui i mea hoʻolako H5P
ʻAʻole hoʻokomo a hoʻouna ʻo Quire i ʻenekini holo H5P a i ʻole sidecar (ADR 0019). Inā hoʻohana ʻoe iā H5P, hoʻolako i kāu kau inoa hoʻokipa ponoʻī a mālama paha i kāu laʻana H5P ponoʻī i hoʻokaʻawale ʻia mai Quire. E hoʻopaʻa inoa i ia mea hoʻolako ma ke ʻano he lako waho LTI 1.3 a hoʻohui i kona ʻike i nā papa ma ke ʻano he hana lako. Hoʻololi ʻo Quire i nā māka a me ka holomua hana/helu ma o LTI Assignment and Grade Services (AGS). Inā hoʻouna pū ka mea hoʻolako i nā ʻōlelo xAPI, hoʻonohonoho kaʻawale i ia mea no ka waihona ʻōlelo xAPI a Quire; ʻaʻole hoʻouna ka hoʻololi māka/holomua AGS i nā ʻōlelo xAPI. Hōʻike nā hoʻokomo Moodle i nā hana H5P e pono ai ka pilina lako LTI. Na ka mea hoʻolako e mālama i kāna ʻenekini H5P, kākau ʻike, waihona ʻikepili, a me ka mōʻaukala hoʻāʻo.
No ka holo ʻana i kāu laʻana mālama ponoʻī ma kēia host, hoʻonoho iā QUIRE_H5P_IMAGE i kona kiʻi a hoʻomaka i ka profile h5p. Hoʻolaha ʻo Compose iā ia ma QUIRE_H5P_PORT (8090) a mālama i kona ʻikepili ma ka volume h5p-data; nou ke kiʻi a me nā kuleana e pili ana iā ia.
Nā hoʻonohonoho
Heluhelu kēlā me kēia kaʻina iā docker/.env. Papa inoa ka ʻōkuhi docker/.env.example i nā hoʻonohonoho a pau me kā lākou paʻamau. Eia nā pūʻulu:
Nā helu wahi
| Hoʻonohonoho | Manaʻo |
|---|---|
QUIRE_APP_ORIGIN |
Helu wahi lehulehu o ka LMS, e like me https://learn.example.com |
QUIRE_CONTENT_ORIGIN |
Origin ʻike, he host ʻokoʻa |
QUIRE_PLATFORM_DOMAINS |
Nā domain e noho ai nā hui, i hoʻokaʻawale ʻia me nā koma |
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 ma ʻaneʻi. E nānā i nā alakaʻi ʻē aʻe no vercel a me cloudflare |
QUIRE_TRUSTED_PROXY_CIDRS |
Nā proxy i hilinaʻi ʻia ai ko lākou X-Forwarded-For |
Nā ʻōlelo huna malu
| Hoʻonohonoho | Manaʻo |
|---|---|
QUIRE_SECRET_KEY |
Pūlima i nā kau komo a me nā token. 64 huapalapala hex |
QUIRE_MASTER_KEY |
Hoʻopili i nā palapala hōʻoia mālama ʻia e like me SSO a me nā ʻōlelo huna webhook. 32 byte, base64. Pono ka waiwai like i ka papa pūnaewele a me ka worker. Hoʻololi: key-rotation.md |
QUIRE_MASTER_KEY_VERSION |
Lepili mana o ke kī haku, v1 ke ʻole i hoʻonohonoho ʻia. Hoʻonui i ka hoʻololi ʻana |
QUIRE_MASTER_KEY_RETIRED |
Nā kī haku ma mua e pono mau ana e heluhelu i nā mea a lākou i hoʻopaʻa ai, ma ke ʻano v1=<base64>. Wehe ma hope o ka pau ʻana o ka hoʻololi me ka ʻole o kekahi mea i koe |
QUIRE_COLLAB_SIGNING_KEY |
Kaʻana ʻia e web a me collab e pūlima i nā token hoʻoponopono |
QUIRE_BACKUP_SIGNING_KEY |
Pūlima i nā papaʻa papa (koho) |
E mālama i kope o QUIRE_MASTER_KEY ma kahi ʻē aʻe, ʻaʻole ma kēia host. ʻAʻole hiki i ka waihona ʻikepili i hoʻihoʻi ʻia me ka ʻole ona ke wehe i nā palapala hōʻoia.
Waihona ʻikepili
| Hoʻonohonoho | Manaʻo |
|---|---|
POSTGRES_PASSWORD |
Superuser, hoʻohana ʻia e ke ipu a me nā papaʻa |
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD |
Nā ʻōlelo huna kuleana, hoʻonoho ʻia i ka hoʻomaka mua |
DATABASE_URL |
Kuleana polokalamu. Pili ka palekana pae-lālani i kēlā me kēia nīnau āna e hana ai |
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL |
Kuleana neʻe ʻikepili no migrate a me init |
QUIRE_SUPERUSER_URL |
Hoʻohana wale ʻia i ka hoʻomaka mua |
QUIRE_REPORT_DATABASE_URL |
Kuleana hōʻike heluhelu wale nō no nā hōʻike a me ka mea kūkulu hōʻike |
QUIRE_AUDIT_DATABASE_URL |
Kuleana hōʻoia no ka console hōʻoia a me ka hoʻokuʻu SIEM |
QUIRE_DATABASE_ID |
Kekahi UUID, paʻa no ke ola holoʻokoʻa o ka hoʻouka ʻana |
Hoʻohana ʻia nā ʻōlelo huna kuleana i ka wā i hana mua ʻia ai ka volume waihona ʻikepili wale nō. No ka hoʻololi ʻana ma hope, hoʻohana iā ALTER ROLE a hōʻano hou i ka URL kūlike.
Hoʻohana ʻia QUIRE_REPORT_DATABASE_URL no ka waihona ʻikepili kino i hoʻonohonoho ʻia e DATABASE_URL. No kekahi waihona ʻikepili kino i hoʻopaʻa inoa ʻia, hoʻonoho i kona URL pilina quire_report ponoʻī ma nā kaiapuni web a worker, a laila hoʻokomo i ka inoa loli i ke kahua Loli kaiapuni hōʻike o ia waihona ma ke ʻano he env:NAME. Pono ke kuhikuhi e kuhikuhi i ka waihona ʻikepili like me ka pilina polokalamu, ʻoi aku ka maikaʻi i kāna replica heluhelu. Hahai nā wahi hōʻike a pau i ka tenant a i ka pilina hōʻike o kona waihona ponoʻī: ka mea kūkulu hōʻike a me nā hōʻike i mālama ʻia, nā hoʻouna manawa, nā hoʻokuʻu hōʻike, ka helu ʻikepili, ka moʻolelo hōʻoia, nā kumuwaiwai hōʻoia REST, a me ka huli hōʻoia a ke kōkua. ʻAʻole loa kekahi o lākou e ʻaiʻē i ka URL hōʻike o kekahi waihona ʻē aʻe. Inā ʻaʻohe pilina hōʻike o kahi waihona, holo nā hōʻike maʻamau ma kona pilina polokalamu ponoʻī; hōʻole ka helu ʻikepili a me kēlā me kēia heluhelu hōʻoia a wehewehe i ke kumu, no ka mea ʻaʻole hiki i ke kuleana polokalamu ke heluhelu i ka moʻolelo hōʻoia.
Nā mea hoʻokele
| Hoʻonohonoho | Nā koho o kēia mana | Nā memo |
|---|---|---|
QUIRE_STORAGE_DRIVER |
local (paʻamau), s3, a i ʻole azure |
Mālama ʻo local i nā faila ma ka volume files. Uhi ʻo s3 iā AWS S3, kūlike R2 a me GCS, a me nā waihona ʻē aʻe kūlike S3, me nā hoʻouka multipart hiki ke hoʻomau |
QUIRE_REALTIME_DRIVER |
inprocess (paʻamau), sse, centrifugo, a i ʻole durable_objects |
Kūpono ʻo inprocess no hoʻokahi ipu web; hoʻohana iā centrifugo a i ʻole sse ke nui nā ipu |
QUIRE_CACHE_DRIVER |
memory (paʻamau), postgres, a i ʻole valkey |
No kēlā me kēia kaʻina ʻo memory; hoʻohana iā valkey a i ʻole postgres i paʻa nā palena kāhea ma waena o nā ipu |
QUIRE_VIDEO_DRIVER |
ffmpeg (paʻamau) a i ʻole progressive_mp4 |
A i ʻole mea hoʻolako hoʻokipa: Cloudflare Stream, Mux, a i ʻole Bunny ma o kā lākou mau kī |
QUIRE_IMAGE_DRIVER |
noop (paʻamau), imgproxy, a i ʻole cloudflare |
Hāʻawi ʻo noop i kēlā me kēia kiʻi ma kona nui kumu. Pono ʻo imgproxy i ka profile images a me nā hoʻonohonoho ma lalo; hoʻohana ʻo cloudflare iā Cloudflare Images |
QUIRE_MEETING_PROVIDER |
bbb, zoom, teams, meet, jitsi, a i ʻole in_process |
Mea hoʻolako paʻamau paepae no nā hālāwai ola. Inā waiho hakahaka ʻia, hōʻike nā hālāwai ola ʻaʻole i hoʻonohonoho ʻia a hoʻohui ka hui i kona moʻokāki ma Nā hoʻohui, Mea hoʻolako hālāwai ola. Lanakila mau ka moʻokāki ponoʻī o ka hui ma luna o kēia waiwai. Heluhelu ʻia nā hoʻonohonoho ponoʻī o ka mea hoʻolako (BBB_URL a me BBB_SECRET, nā loli ZOOM_*, TEAMS_*, GOOGLE_MEET_*, a me JITSI_*) no ka mea hoʻolako i kapa ʻia ma ʻaneʻi wale nō |
QUIRE_MEETING_REGIONS |
Papa koma o eu, uk, us |
Nā wahi e hana ai ka mea hoʻolako paʻamau paepae i nā hālāwai. Inā waiho hakahaka ʻia, ʻaʻole nānā ʻia e kūʻē i ka hui i hoʻopaʻa ʻia i ʻāpana, e like me ma mua. Hōʻike ka ʻaoʻao o ka moʻokāki ponoʻī i nā wahi o ka hui |
Hōʻole ʻia kekahi waiwai mea hoʻokele i loaʻa ʻole ma kēia mana i ka hoʻomaka ʻana o ka papa pūnaewele me ka inoa o ka hoʻonohonoho, ʻaʻole pani mālie ʻia e ka paʻamau.
Nā kiʻi
Noi nā ʻaoʻao i nā kiʻi ma nā nui paʻa ʻehā ma o /api/files/{id}/image/{size}, nānā kēia i ka ʻae like me ka faila ponoʻī, a laila hoʻohuli i ka lawelawe kiʻi. Hiki i kēlā me kēia hui ke noi i QUIRE_IMAGE_SPECS_PER_HOUR (2000 ma ke ʻano paʻamau) pālua kiʻi a nui hou i kēlā me kēia hola; ʻaʻole helu ʻia nā nui i hana mua ʻia i ia hola. E hoʻohana iā valkey a i ʻole postgres no QUIRE_CACHE_DRIVER me nā ipu web he nui, i pili ai ka palena iā lākou a pau.
| Hoʻonohonoho | Mea hoʻokele | Nā memo |
|---|---|---|
IMGPROXY_URL |
imgproxy |
Helu wahi e hiki ai nā polokalamu kele pūnaewele iā imgproxy, e laʻa me https://images.example.org. Hoʻolaha ka profile images iā ia ma QUIRE_IMAGES_PORT (8082) |
IMGPROXY_KEY, IMGPROXY_SALT |
imgproxy |
Nā kaula hex, nā waiwai like a imgproxy i hoʻomaka ai. Hana i kēlā me kēia me openssl rand -hex 32. Pūlima ʻo Quire i kēlā me kēia helu wahi kiʻi me lāua, no laila ʻaʻole hāʻawi ʻo imgproxy i kiʻi a Quire i noi ʻole ai |
QUIRE_IMAGE_SOURCE_ORIGIN |
imgproxy me ka waihona kūloko |
Kahi e kiʻi ai ʻo imgproxy i nā kumu kiʻi. Hoʻonoho ʻo Compose iā http://web:3000. Me ka waihona s3 a i ʻole azure, kiʻi ʻo imgproxy mai ka bucket a ʻaʻole hoʻohana ʻia kēia |
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH |
cloudflare |
Token API me ka ʻae hoʻoponopono Images, a me ka hash moʻokāki mai Images, Developer resources. E hoʻā i nā ʻano loli maʻalahi no ka moʻokāki |
CLOUDFLARE_IMAGES_SIGNING_KEY |
cloudflare |
Koho. Ke hoʻonoho ʻia, pilikino nā kiʻi a pūlima ʻia a pau nā helu wahi. Me ka ʻole ona, lehulehu nā kiʻi ma nā helu wahi i loaʻa mai QUIRE_SECRET_KEY ʻaʻole hiki i kekahi ke kuhi |
Mālama ʻo Cloudflare Images i kope ponoʻī o kēlā me kēia kiʻi kumu āna e hāʻawi ai. Ke holoi ʻia kekahi faila, holoi ka worker i kēlā kope ma mua o ke kumu.
Queue
Hoʻohana nā hana hope iā pg-boss ma ka waihona Postgres like, no laila ʻaʻohe lawelawe queue e holo a hoʻonohonoho ai. Hoʻokomo ʻia nā hana ma ka hana ʻikepili like me ka hoʻololi nāna lākou i hoʻomaka, no laila ʻaʻole hiki i ka hāʻule ke nalowale a hoʻouna pālua paha. Paʻamau ʻo QUIRE_QUEUE_DRIVER ma kēia pahuhopu i pgboss; hoʻoneʻe ʻo vercel a me cloudflare i nā hoʻomaopopo māmā a me nā hoʻouna webhook wale nō i ka queue ponoʻī o ka paepae, a wehewehe nā alakaʻi Vercel a Cloudflare iā lākou a me ka hoʻokomo ʻana a kā lākou mau papa pūnaewele.
Leka uila
E hoʻonoho i kekahi o kēia:
QUIRE_EMAIL_PROVIDER_CONFIG: mea JSON e kapa ana i mea hoʻolako HTTP a me kona mau palapala hōʻoia, e like me{"provider":"postmark","token":"..."}. Kākoʻo ʻia ʻo Postmark, Amazon SES, Mailgun, SendGrid, a me Resend.QUIRE_SMTP_URL:smtp://user:password@host:587. No kēia pahuhopu wale nō; pāpā nā pahuhopu serverless iā SMTP.
ʻO QUIRE_MAIL_FROM ka mea hoʻouna. No ka hoʻāʻo ʻana iā Quire, hoʻomaka i ka profile devmail, hoʻonoho iā QUIRE_SMTP_URL=smtp://mailpit:1025, a heluhelu i ka leka ma http://localhost:8025.
Nā lawelawe koho
| Hoʻonohonoho | Me ka profile |
|---|---|
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 a i ʻole QUIRE_MEILISEARCH_URL |
Huli waho; i ʻole, kikokikona piha Postgres |
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL |
Nānā ʻōlelo huna haki. Hoʻā paʻamau ʻia ma api.pwnedpasswords.com (hoʻouna ʻia ka prefix hash ʻelima huapalapala wale nō); hoʻopau ʻo off iā ia, a kuhikuhi ka URL i API range āu e mālama ai |
Nānā ʻōnaehana
Kapa ʻo OTEL_EXPORTER_OTLP_ENDPOINT i ka mea hōʻiliʻili a nā kaʻina a pau e hoʻouna ai i nā kaha a me nā ana; me ka profile observability, ʻo ia ʻo http://otelcol:4318, a ma docker/otel-collector.yaml ʻoe e hoʻohui ai i ka exporter backend. Hoʻouna nā kaʻina web, worker, scheduler, content, a me collab i nā spans ma OTLP/HTTP (nā noi pūnaewele, nā hana waihona ʻikepili tenant, nā hana worker, a me nā kāhea puka) ke hoʻonoho ʻia, a me nā ana i kēlā me kēia minuke i ka endpoint like (OTEL_METRICS_EXPORTER=none e hoʻopau iā lākou). Hoʻonoho ʻo OTEL_TRACES_SAMPLER_ARG i ka mahele o nā kaha e mālama ʻia. Hele nā moʻolelo i ka puka maʻamau ma ka pae LOG_LEVEL, a hoʻololi ʻo Compose iā lākou. ʻAʻohe ʻike pilikino i loko o nā kaha.
Puka ʻāpana (noho ʻikepili EU)
Hōʻike ʻo QUIRE_REGION=eu i ka lawelawe ʻana o ka stack i nā hui ʻEulopa. Hoʻopaʻa ka worker i kēlā me kēia noi puka no kahi hui i hoʻopaʻa ʻia i ka EU i papa inoa ʻae ʻia (māhele 8.1 o 21-compliance.md). ʻO nā host ma ka papa inoa nā mea a nā lawelawe i hoʻonohonoho ʻia e hoʻolaha ai no ka ʻāpana (endpoint waihona, mea hoʻolako leka uila, mea hoʻolako wikiō hoʻokipa, nā pahuhopu waihona ponoʻī o ka hui, nā mea hoʻolako AI a me ka moʻokāki leka uila), nā host o nā lawelawe ma lalo o ʻae kūikawā hana, a me nā host āu e papa inoa ai ma QUIRE_EGRESS_ALLOW_HOSTS. Hōʻole ʻia kekahi noi i host lehulehu ʻē aʻe ma mua o ka hoʻouna ʻana; kākau ʻia ka hōʻole ma ke kaulahao hōʻoia hui ma ke ʻano he privacy/egress_refused, a helu ʻia ma Ka mālama ʻana, Noho ʻikepili.
| Hoʻonohonoho | Waiwai | Hopena |
|---|---|---|
QUIRE_EGRESS_ALLOW_HOSTS |
Papa koma inoa host, a i ʻole *.example.org no kēlā me kēia subdomain |
Nā host hou hiki i hui EU ke kiʻi. Aia nā endpoint webhook, xAPI, a SIEM, nā hānai blog, a me nā host Amazon SES ma ʻaneʻi, no ka mea na ka hui lākou i koho ai a ʻaʻole i hoʻolaha ʻia e kekahi lawelawe. ʻAʻole nānā ʻia ka loopback, nā helu kūloko pilikino, a me nā inoa lepili hoʻokahi e like me web a i ʻole clamav, no ka mea no kāu pūnaewele ponoʻī lākou |
ʻAʻole hoʻopaʻa ʻia nā hui UK a me US i ka papa inoa host; mālama lākou i nā nānā ʻāpana lawelawe. E hoʻonoho i ka papa inoa ma ka worker; heluhelu ka ʻaoʻao admin iā ia ma ka papa pūnaewele e hōʻike i ka papa inoa ʻae ʻia, no laila e hoʻokomo i docker/.env i heluhelu ʻia e kēlā me kēia lawelawe.
Hāʻawi ka nānā polokalamu i hewa maopopo a me komo hōʻoia, akā ʻaʻole ia ka palekana paʻa: hiki ke hewa ke code. ʻO ka pūnaewele ka palekana. ʻAʻole hoʻokō ʻo Compose iā ia no ʻoe. No ka stack ʻāpana, e kau i nā lawelawe worker a me web ma kahi pūnaewele internal: true nona ke ala puka hoʻokahi ma o proxy puka (e laʻa me Squid a i ʻole ipu tinyproxy) e ʻae ana i nā host like me QUIRE_EGRESS_ALLOW_HOSTS a me nā host o kāu mau lawelawe i hoʻonohonoho ʻia; hoʻonoho iā HTTPS_PROXY no ia mau lawelawe. Papa inoa ka ʻaoʻao noho i nā host pololei a ka polokalamu e ʻae ai, i hiki ke hoʻohālikelike i nā papa inoa ʻelua.
Ola
| Endpoint | Manaʻo |
|---|---|
/healthz |
Ola: pane ke kaʻina. Hoʻohana nā nānā ola Compose iā ia |
/readyz |
Mākaukau: hiki ke kiʻi i nā hilinaʻi a hōʻike kēlā me kēia lawelawe koho inā ua hoʻonohonoho ʻia. Kuhikuhi i kāu mea kaulike ukana iā ia |
Hōʻike ʻo docker compose -f docker/compose.yaml ps i ke kūlana olakino o kēlā me kēia lawelawe.
TLS
He māhele ka lawelawe proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile) o ka stack paʻamau. Pane ia ma nā awa 80 a me 443 a hoʻouna:
| Host a ala paha | Hoʻouna i |
|---|---|
QUIRE_PROXY_CONTENT_HOST |
content |
QUIRE_PROXY_APP_HOST, kēlā me kēia subdomain tenant a me domain maʻamau |
web |
/_collab/ ma ia mau host |
collab (websocket, QUIRE_COLLAB_URL) |
/_realtime/connection/ ma ia mau host |
websocket client a centrifugo; ʻaʻole loa e hōʻike ʻia kona API kikowaena |
/_images/ ma ia mau host |
imgproxy, me ka profile images (IMGPROXY_URL) |
Loaʻa iā init-env.sh nā waiwai QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST,
QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL, a me IMGPROXY_URL mai nā origin
ʻelua, no laila ʻaʻole hiki ke kaʻawale ko lākou mau waiwai. Hoʻoponopono pū iā lākou
ke hoʻololi lima ʻoe i origin.
Pili nā palapala hōʻoia iā QUIRE_PROXY_TLS:
-
internal(paʻamau): ka mana hōʻoia ponoʻī a Caddy, nolocalhost,*.localhost, a melvh.me. Hilinaʻi i kona kumu hoʻokahi manawa, a laila wehe:docker compose -f docker/compose.yaml cp \ proxy:/data/caddy/pki/authorities/local/root.crt ./quire-local-ca.crtHoʻohui iā
quire-local-ca.crti ka waihona hilinaʻi ʻōnaehana a i ʻole polokalamu kele pūnaewele. Lawe ʻocurliā ia ma o--cacert. -
He helu leka uila: palapala hōʻoia ACME ʻakomi (Let’s Encrypt, a laila ZeroSSL) no nā inoa host maoli. Pono e kuhikuhi nā DNS o nā origin ʻelua a me kēlā me kēia host tenant i ʻaneʻi; pono nā awa 80 a me 443 e hiki ke kiʻi mai ka pūnaewele puni honua.
Hāʻawi ʻia nā host tenant ma ke koi i ka kipa mua wale nō ke hōʻoia ka web no kēia hoʻouka ʻana ka inoa (/tls-allowed, i nīnau ʻia ma ka pūnaewele Compose). ʻAʻole pono palapala hōʻoia wildcard a plugin mea hoʻolako DNS paha; ʻaʻole hiki i kekahi malihini ke kuhikuhi i inoa i ka host a koi i nā palapala hōʻoia. Noho nā palapala hōʻoia a me ka mana kūloko ma ka volume caddy-data; e hana i papaʻa pū me ke koena inā hoʻohana ʻoe iā internal.
Hilinaʻi ka web i X-Forwarded-For mai ka proxy wale nō: he helu paʻa ko ka proxy (QUIRE_PROXY_ADDRESS, paʻamau 172.29.64.10) ma kahi subnet paʻa (QUIRE_COMPOSE_SUBNET), a kapa ʻo QUIRE_TRUSTED_PROXY_CIDRS i kēlā helu. Inā kūʻē ka subnet i kekahi pūnaewele host, hoʻololi i nā mea ʻelua a holo iā docker compose down ma mua o up.
Ma hope o kāu proxy hoʻohuli ponoʻī
No ka hoʻohana ʻana i kāu mea kaulike ukana a proxy paha, waiho i proxy ma waho (docker compose up -d --scale proxy=0) a hoʻopau TLS ma mua o web (8080), content (8081), collab (1234, websocket), a me centrifugo (8000, websocket). E hoʻonoho i nā helu lehulehu ma QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, a me QUIRE_COLLAB_URL (wss://); a me ka pae helu wahi proxy ma QUIRE_TRUSTED_PROXY_CIDRS.
Hoʻoponopono pilikia
- Puka ʻo
initme «QUIRE_DATABASE_ID is not a UUID»: hoʻonoho meuuidgen. - Hoʻomaka hou ʻo
webme «did not start on compose»: papa inoa ka moʻolelo i kēlā me kēia hoʻonohonoho hiki ʻole ke hoʻokō a me ka mea e hoʻohana ai. - ʻAʻohe hopena o ka hoʻololi ʻōlelo huna kuleana ma
.envma hope o ka hoʻomaka mua: holo hoʻokahi wale nō ka script hoʻomaka. E hoʻohana iāALTER ROLE. - Hāʻule nā hoʻouka me ka hewa nānā ke hoʻonoho ʻia ʻo
CLAMAV_URL: hoʻoiho ʻo ClamAV i nā pūlima i ka hoʻomaka mua, he mau minuke paha kēlā.