Šis ir pilns produkts uz viena servera: LMS, tā fona darbi, reāllaika un kopīgās
rediģēšanas pakalpojumi un katrs izvēles pakalpojums aiz profila. Konstrukcija
ir docs/architecture/23-ops.md 2. sadaļa.
Citi mērķi: Vercel un Cloudflare Workers darbina tikai tīmekļa slāni. Jauninājumi ir upgrade.md, bet dublējumi un atjaunošanas mācība — backup-restore.md.
Kas jums nepieciešams
- Docker Engine 27 vai jaunāks ar Compose spraudni 2.30 vai jaunāku.
- 4 CPU kodoli un 8 GB atmiņas noklusētajai kopklasei; 8 kodoli un 16 GB
ar
--profile full(tikai ClamAV tur aptuveni 1,5 GB parakstu). - DNS vārds tīmekļa slānim un otrs neuzticamajam saturam. Tiem jābūt atšķirīgiem saimniekiem: SCORM pakotnes un augšupielādētais HTML darbojas uz satura izcelsmes, lai tie nekad nevarētu lasīt LMS sīkdatnes.
- Vietējam testam
lvh.meun*.localhostatrisinās uz 127.0.0.1, ko izmantodocker/.env.example. Pašas kopklasesproxypakalpojums apkalpo abus ar https, izmantojot vietējo sertifikācijas iestādi, tāpēc nekas cits netiek uzstādīts (skat. “TLS”). - Porti 80 un 443 brīvi uz servera (
QUIRE_PROXY_HTTP_PORTunQUIRE_PROXY_HTTPS_PORTtos pārvieto).
Pirmais starts
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 initdocker/scripts/init-env.sh uzraksta docker/.env no docker/.env.example ar
izģenerētiem katru noslēpumu (datubāzes paroles, paraksta un galvenās atslēgas,
satura palaišanas atslēgu pāri) un audita kontrolpunkta paraksta atslēgu vietnē
docker/secrets/audit-signing-key.pem, ko Compose montē darbinīkos kā
slepenību. Tam vajag tikai sh, awk un openssl, un tas atsakās
pārrakstīt jau esošu docker/.env. Nokopējiet abus failus no servera: bez
QUIRE_MASTER_KEY atjaunota datubāze nevar atsifrēt savus saglabātos
akreditācijas datus. Lai failu aizpildītu ar roku, cp docker/.env.example docker/.env; fails pasaka, kā izģenerēt katru noslēpumu.
Abām izcelsmēm jābūt https: satura pakalpojums ražotnē atsaka parastu http, un
tām nedrīkst būt kopīgs reģistrējams domēns. proxy pakalpojums abām pārtrauc
TLS (skat. “TLS”); init-env.sh atsaka http:// izcelsmi.
Kopklase sākas fiksētā secībā, un katrs solis gaida iepriekšējo:
postgreskļūst veselīgs. Pirmajā startēšanā tās init skripts (docker/postgres/init/90-passwords.sh) iestata četru lomu paroles.migratepiemēro katru migrāciju un sagatavo darbu rindu kontroldatubāzē un katrā atsevišķajā nomnieku datubāzē, pārbauda, ka tās visas piekrīt, pēc tam iziet (docs/ops/upgrade.md). Migrācijas tiek palaistas katrā startēšanā un ir idempotas, tāpēc jauninājums ir jauns attēls un restarts.init(apps/web/src/first-run.ts) reģistrē lietojumprogrammas datubāzi zemQUIRE_DATABASE_IDun, jaQUIRE_SETUP_ADMIN_EMAILir iestatīts, izveido pirmo organizāciju un tās administratoru. Pierakstīšanās adrese un ģenerētā parole tiek izdrukātas vienu reizidocker compose logs init.web,content,worker,scheduler,collabuncentrifugosākas.proxysākas, tiklīdzwebuncontentir veselīgi.
Atveriet https://demo. un savu lietojumprogrammas domēnu (init žurnāls
izdrukā precīzo pierakstīšanās adresi) un pierakstieties. Vietējā uzstādīšanā
vispirms uzticieties proxy sertifikācijas iestādei (skat. “TLS”). Nomainiet
ģenerēto paroli vietnē /account/security.
Process, kas palaists bez vajadzīgās slepenības, atsakās startēt un savā žurnālā nosaka trūkstošo iestatījumu. Nekas nepuskonfigurēts nesākas.
Pakalpojumi un profili
| Pakalpojums | Profils | Ko tas dara |
|---|---|---|
| postgres | vienmēr | Datubāze (PostgreSQL 18 ar pgvector, uzbūvēta no docker/postgres.Dockerfile), ar WAL arhivēšanu no pirmās ielādes |
| migrate, init | vienmēr | Vienreizējs: migrācijas, pēc tam pirmais starts |
| web | vienmēr | LMS uz QUIRE_HTTP_PORT (8080) |
| content | vienmēr | Neuzticamā satura izcelsme uz QUIRE_CONTENT_PORT (8081) |
| worker | vienmēr | Fona darbi: e-pasts, atskaites, failu apstrāde, tīmekļa āķi |
| scheduler | vienmēr | Atkārtotie darbi: reģistrē 64 izpildlaika grafikus un nodod tos darbinīkam; viens vadonis vienlaikus |
| collab | vienmēr | Kopīgās rediģēšanas websocket uz QUIRE_COLLAB_HTTP_PORT (1234) |
| centrifugo | vienmēr | Reāllaika izplatīšana uz QUIRE_REALTIME_PORT (8000) |
| proxy | vienmēr | Caddy, TLS priekšējā durvis portos 80 un 443 (skat. “TLS”) |
| valkey | cache |
Kešs un ātruma ierobežojumi |
| clamav | scan |
Ļaunprātīgas programmatūras skenēšana augšupielādēm |
| gotenberg | preview |
Office uz PDF priekšskatījumiem, sertifikātu renderēšana |
| imgproxy | images |
Mainīta izmēra un konvertēti attēli |
| transcoder | video |
Darbinīka attēls ar tikai LGPL ffmpeg video renderējumiem |
| seaweedfs | storage |
Saderīga objektu glabātuve uz šī servera |
| otelcol | observability |
OpenTelemetry vācējs |
| mailpit | devmail |
Ķer visu izejošo pastu, lai izmēģinātu Quire |
| backup | backup |
Vienu reizi bāzes dublējums; skat. backup-restore.md |
| backup-scheduler, backup-offsite | backup |
Bāzes dublējums ik pēc QUIRE_BACKUP_INTERVAL_HOURS, un šifrētas kopijas ārpus servera ar nedēļas pārbaudes mācību |
| h5p | h5p |
H5P LTI 1.3 rīka attēls, ko piegādājat QUIRE_H5P_IMAGE, uz QUIRE_H5P_PORT (8090); skat. “H5P pakalpojuma sniedzēja pievienošana” |
--profile full sāk katru izvēles pakalpojumu, izņemot backup un h5p. Vienu
palaist var ar docker compose -f docker/compose.yaml --profile scan up -d.
Bez izvēles pakalpojuma Quire joprojām darbojas un saka, kā trūkst: bez
skenētāja augšupielādes tiek glabātas neskenētas, un administrators tiek
informēts; bez Gotenberg faili piedāvā lejupielādi nevis priekšskatījumu; bez
pārveidotāja video atskaņojas kā oriģinālais fails.
Katrs trešās puses attēls un tā licences saistības ir uzskaitītas failā
docker/third-party-containers.yaml.
H5P pakalpojuma sniedzēja pievienošana
Quire neievieto un neizplata H5P izpildlaiku vai sānu procesu (ADR 0019). Ja izmantojat H5P, nodrošiniet savu mitināto abonementu vai darbiniet savu pašmitināto H5P instanci atsevišķi no Quire. Reģistrējiet to pakalpojumu sniedzēju kā ārējo LTI 1.3 rīku un pievienojiet tā saturu kursiem kā rīka nodarbības. Quire apmainās ar atzīmēm un nodarbību/vērtēšanas progresu caur LTI Assignment and Grade Services (AGS). Ja pakalpojums sniedzējs arī sūta xAPI paziņojumus, konfigurējiet to atsevišķi Quire xAPI paziņojumu glabātuvei; AGS atzīmju/progresu apmaiņa nesūta xAPI paziņojumus. Moodle importi ziņo, ka H5P nodarbībām vajag LTI rīka savienojumu. Pakalpojuma sniedzējs joprojām ir atbildīgs par savu H5P izpildlaiku, autorēšanu, satura banku un mēģinājumu vēsturi.
Lai uz šī servera palaistu savu pašmitināto instanci, iestatiet
QUIRE_H5P_IMAGE uz tās attēlu un ieslēdziet profilu h5p. Compose to publicē
uz QUIRE_H5P_PORT (8090) un glabā tā datus h5p-data sējumā; attēls un tā
saistības paliek jūsu.
Iestatījumi
Katrs process lasa docker/.env. Veidne docker/.env.example uzskaita katru
iestatījumu ar tā noklusējumu. Grupas:
Adreses
| Iestatījums | Nozīme |
|---|---|
QUIRE_APP_ORIGIN |
LMS publiskā adrese, piemēram, https://learn.example.com |
QUIRE_CONTENT_ORIGIN |
Satura izcelsme, cits saimnieks |
QUIRE_PLATFORM_DOMAINS |
Domēni, zem kuriem dzīvo organizācijas, atdalīti ar komatiem |
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 |
Šeit compose. Par vercel un cloudflare skat. citos ceļvežos |
QUIRE_TRUSTED_PROXY_CIDRS |
Starpniekserverji, kuru X-Forwarded-For tic |
Noslēpumi
| Iestatījums | Nozīme |
|---|---|
QUIRE_SECRET_KEY |
Paraksta sesijas un žetonus. 64 heksadecimālas rakstzīmes |
QUIRE_MASTER_KEY |
Ietīj saglabātos akreditācijas datus, piemēram, SSO un tīmekļa āķu noslēpumus. 32 baiti, base64. Tīmekļa slānim un darbinīkam jābūt ar vienādu vērtību. Maiņa: key-rotation.md |
QUIRE_MASTER_KEY_VERSION |
Galvenās atslēgas versijas etiķete, v1, ja nav iestatīts. Palieliniet to, kad maināt |
QUIRE_MASTER_KEY_RETIRED |
Iepriekšējās galvenās atslēgas, kas vēl vajadzīgas, lai lasītu to noslēgto, kā v1=<base64>. Noņemiet pēc maiņas pabeigšanas bez nekā neatrisināta |
QUIRE_COLLAB_SIGNING_KEY |
Koplieto web un collab, lai parakstītu rediģēšanas žetonus |
QUIRE_BACKUP_SIGNING_KEY |
Paraksta kursu dublējumus (izvēles) |
Saglabājiet QUIRE_MASTER_KEY kopiju kaut kur citur ārpus šī servera. Datubāze, kas
atjaunota bez tā, nevar atsifrēt tajā esošos akreditācijas datus.
Datubāze
| Iestatījums | Nozīme |
|---|---|
POSTGRES_PASSWORD |
Superlietotājs, ko izmanto konteiners un dublējumi |
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD |
Lomu paroles, iestatītas pirmajā startēšanā |
DATABASE_URL |
Lietojumprogrammas loma. Rindu līmeņa drošība attiecas uz katru tās vaicājumu |
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL |
Migrētāja loma migrate un init |
QUIRE_SUPERUSER_URL |
Izmanto tikai pirmais starts |
QUIRE_REPORT_DATABASE_URL |
Tikai lasāmā atskaišu loma atskaitēm un atskaišu veidotājam |
QUIRE_AUDIT_DATABASE_URL |
Audita loma audita konsolei un SIEM eksportam |
QUIRE_DATABASE_ID |
Jebkurš UUID, fiksēts visas instalācijas mūžam |
Lomu paroles tiek piemērotas tikai tad, kad datubāzes sējums tiek izveidots
pirmo reizi. Lai vēlāk kādu mainītu, lietojiet ALTER ROLE un pēc tam
atjauniniet atbilstošo URL.
QUIRE_REPORT_DATABASE_URL tiek izmantots fiziskajai datubāzei, ko nosaka
DATABASE_URL. Jebkurai citai reģistrētai fiziskai datubāzei iestatiet tās pašas
quire_report savienojuma URL web un darbinīka vidē, pēc tam ielieciet
mainīgā nosaukumu tās datubāzes Atskaišu vides mainīgā laukā kā env:NAME.
Atsaucei jārāda uz to pašu datubāzi kā tās lietotnes savienojumam, vēlams, tās
lasīšanas replikai. Katra atskaišu virsma seko nomniekam uz tās pašas datubāzes
atskaišu savienojumu: atskaišu veidotājs un saglabātās atskaites, plānotās
piegādes, atskaišu eksporti, analītika, audita žurnāls, REST audita resursi un
palīga audita meklēšana. Neviena no tām nekad neaizņem citas datubāzes atskaišu
URL. Kad datubāzei nav atskaišu savienojuma, parastās atskaites darbojas uz tās
pašas datubāzes lietotnes savienojuma, bet analītika un katra audita lasīšana
atsakās un to saka, jo lietojumprogrammas loma nevar lasīt izsekojamības ķēdi.
Draiveri
| Iestatījums | Šī versija | Piezīmes |
|---|---|---|
QUIRE_STORAGE_DRIVER |
local (noklusējums), s3 vai azure |
local glabā failus files sējumā. s3 aptver AWS S3, R2, GCS savietojamību un citas S3 saderīgas glabātuves ar atsākjamām daļskaitļa augšupielādēm |
QUIRE_REALTIME_DRIVER |
inprocess (noklusējums), sse, centrifugo vai durable_objects |
inprocess der vienam web konteineram; izmantojiet centrifugo vai sse, kad to ir vairāki |
QUIRE_CACHE_DRIVER |
memory (noklusējums), postgres vai valkey |
memory ir katram procesam; izmantojiet valkey vai postgres, lai ātruma ierobežojumi turētos starp konteineriem |
QUIRE_VIDEO_DRIVER |
ffmpeg (noklusējums) vai progressive_mp4 |
Vai mitināts pakalpojums sniedzējs: Cloudflare Stream, Mux vai Bunny, ar to atslēgām |
QUIRE_IMAGE_DRIVER |
noop (noklusējums), imgproxy vai cloudflare |
noop apkalpo katru attēlu tā oriģinālajā izmērā. imgproxy vajag profilu images un zemākos iestatījumus; cloudflare izmanto Cloudflare Images |
QUIRE_MEETING_PROVIDER |
bbb, zoom, teams, meet, jitsi vai in_process |
Platformas noklusējums tiešraides sesijām. Ja nav iestatīts, tiešraides sesijas saka, ka nav konfigurētas, līdz organizācija pieslēdz savu kontu sadaļā Integrācijas, Tiešraides sesiju pakalpojuma sniedzējs. Organizācijas paša konts vienmēr uzvar šo vērtību. Katra pakalpojuma sniedzēja pašie iestatījumi (BBB_URL un BBB_SECRET, ZOOM_*, TEAMS_*, GOOGLE_MEET_* un JITSI_* mainīgie) tiek lasīti tikai šeit nosauktajam pakalpojumam |
QUIRE_MEETING_REGIONS |
Saraksts ar eu, uk, us, atdalīti ar komatiem |
Kur platformas noklusētā pakalpojuma sniedzējs apstrādā sapulces. Ja nav iestatīts, tas netiek pārbaudīts pret organizāciju, kas piesaistīta reģionam, tāpat kā iepriekš. Organizācijas paša konts savus reģionus norāda savā lapā |
Draivera vērtība, ko šī versija neietver, tiek noraidīta, kad tīmekļa slānis sākas, nosaucot iestatījumu, nevis klusībā aizstājot ar noklusējumu.
Attēli
Lapas pieprasa attēlus četros fiksētos izmēros caur
/api/files/{id}/image/{size}, kas pārbauda to pašu piekļuvi kā pats fails un
pēc tam novirza uz attēlu pakalpojumu. Katra organizācija stundā drīkst pieprasīt
QUIRE_IMAGE_SPECS_PER_HOUR (noklusējums 2000) jaunus attēlu un izmēra pārus;
tajā stundā jau izveidotie izmēri neskaitās. Izmantojiet valkey vai postgres
QUIRE_CACHE_DRIVER ar vairāk nekā vienu web konteineru, lai limits turētos
starp tiem.
| Iestatījums | Draivers | Piezīmes |
|---|---|---|
IMGPROXY_URL |
imgproxy |
Adrese, pa kuru pārlūki sasniedz imgproxy, piemēram, https://images.example.org. Profils images to publicē uz QUIRE_IMAGES_PORT (8082) |
IMGPROXY_KEY, IMGPROXY_SALT |
imgproxy |
Heksadecimālas virknes, tās pašas vērtības, ar kurām imgproxy tiek palaists. Katru ģenerējiet ar openssl rand -hex 32. Quire ar tām paraksta katru attēla adresi, tāpēc imgproxy nerenderē neko, ko Quire nav pieprasījis |
QUIRE_IMAGE_SOURCE_ORIGIN |
imgproxy ar vietējo krātuvi |
No kurienes imgproxy saņem oriģinālus. Compose iestata http://web:3000. Ar s3 vai azure krātuvi imgproxy saņem no spaiņa, un to neizmanto |
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH |
cloudflare |
API žetons ar Images rediģēšanas atļauju un konta maiņas kods no sadaļas Images, Izstrādātāja resursi. Ieslēdziet kontam elastīgos variantus |
CLOUDFLARE_IMAGES_SIGNING_KEY |
cloudflare |
Izvēles. Kad iestatīts, attēli ir privāti un katra adrese ir parakstīta un beidzas. Bez tā attēli ir publiski adresēs, kas izvestas no QUIRE_SECRET_KEY un kuras neviens nevar uzminēt |
Cloudflare Images glabā savu katru kopiju oriģinālam, ko tas apkalpo. Kad fails tiek izdzēsts, darbinīks vispirms izdzēš šo kopiju un pēc tam oriģinālu.
Rinda
Fona darbi izmanto pg-boss tai pašā Postgres datubāzē, tāpēc nav neviena
rindas pakalpojuma, kas jāpalaiž, un nekas, kas jākonfigurē. Darbi tiek likti
rindā tajā pašā darījumā, kas izraisīja izmaiņu, tāpēc avārija nevar zaudēt
vienu vai nosūtīt divreiz. QUIRE_QUEUE_DRIVER šeit ir pgboss, tā noklusējums;
vercel un cloudflare pārvieto tikai vieglos paziņojumu un tīmekļa āķu
piegādes uz platformas pašu rindu, un Vercel un Cloudflare ceļvedī tās ir
aprakstītas un to, kā to tīmekļa slāņi liek rindā.
E-pasts
Iestatiet vienu no:
QUIRE_EMAIL_PROVIDER_CONFIG: JSON objekts, kas nosauc HTTP pakalpojuma sniedzēju un tā akreditācijas datus, piemēram,{"provider":"postmark","token":"..."}. Atbalstīti Postmark, Amazon SES, Mailgun, SendGrid un Resend.QUIRE_SMTP_URL:smtp://user:password@host:587. Tikai šim mērķim; bezservera mērķi SMTP bloķē.
QUIRE_MAIL_FROM ir sūtītājs. Lai izmēģinātu Quire, ieslēdziet profilu
devmail, iestatiet QUIRE_SMTP_URL=smtp://mailpit:1025 un lasiet pastu
vietnē http://localhost:8025.
Izvēles pakalpojumi
| Iestatījums | Ar profilu |
|---|---|
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 vai QUIRE_MEILISEARCH_URL |
Ārējā meklēšana; citādi Postgres pilnteksta meklēšana |
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL |
Paroles noplūdes pārbaude. Pēc noklusējuma ieslēgta pret api.pwnedpasswords.com (tiek nosūtīts tikai piecu rakstzīmju hash prefikss); off to izslēdz, un URL norāda uz pašu mitinātu diapazona API |
Novērojamība
OTEL_EXPORTER_OTLP_ENDPOINT nosauc vācēju, kuram katrs process sūta izsekošanas
ierakstus un metrikas; ar profilu observability tas ir http://otelcol:4318,
un docker/otel-collector.yaml ir vieta, kur pievienot eksportētāju savam
aizmugurei. Tīmekļa slānis, darbinīks, plānotājs, satura un collab procesi, kad
tas ir iestatīts, eksportē posmus pār OTLP/HTTP (tīmekļa pieprasījumi, nomnieku
datubāžu darījumi, darbinīka darbi un izejošie izsaukumi) un metrikas uz to pašu
punktu ik pēc minūtes (OTEL_METRICS_EXPORTER=none tos izslēdz).
OTEL_TRACES_SAMPLER_ARG nosaka izsekojumu daļu, ko patur. Žurnāli iet uz
standarta izvadi ar LOG_LEVEL, un Compose tos apgriež. Izsekojumi nekad nes
personas datus.
Reģionālā izeja (ES datu atrašanās vieta)
QUIRE_REGION=eu norāda, ka kopklase apkalpo Eiropas Savienības organizācijas.
Darbinīks tad katrai organizācijai, kas piesaistīta ES, izejošo pieprasījumu
ierobežo ar atļauto sarakstu (21-compliance.md 8.1. sadaļa). Atļauto sarakstu
veido tie saimnieki, ko konfigurētie pakalpojumi paziņo šim reģionam (glabātuves
punkts, e-pasta pakalpojums, mitināts video pakalpojums, pašas organizācijas
glabātuves mērķi, mākslīgā intelekta pakalpojumi un e-pasta konts), jebkura
pakalpojuma saimnieki zem aktīvas atkāpes un tie saimnieki, ko uzskaitāt vietnē
QUIRE_EGRESS_ALLOW_HOSTS. Pieprasījums jebkuram citam publiskam saimniekam
tiek noraidīts pirms nosūtīšanas, noraidījums tiek ierakstītas organizācijas
izsekojamības ķēdī kā privacy/egress_refused, un tas ir uzskaitīts sadaļā
Atbilstība, Datu atrašanās vieta.
| Iestatījums | Vērtības | Efekts |
|---|---|---|
QUIRE_EGRESS_ALLOW_HOSTS |
Saraksts ar saimnieku nosaukumiem, atdalītiem ar komatiem, vai *.example.org katram apakšdomēnam |
Papildu saimnieki, kurus ES organizācija drīkst sasniegt. Tīmekļa āķu, xAPI un SIEM gala punkti, emuāru barotnes un Amazon SES saimnieki pieder šeit, jo tie ir pašas organizācijas izvēle un neviens pakalpojums tos nepaziņo. Apgrieztā adrese, privātās adreses un vienzīmju nosaukumi, piemēram, web vai clamav, ir jūsu pašu tīkls un nekad netiek pārbaudīti |
UK un ASV organizācijas nav ierobežotas ar saimnieku sarakstu; tās patur
pakalpojuma reģiona pārbaudes. Sarakstu iestatiet darbinīkā; admin lapa to lasa
tīmekļa slānī, lai parādītu atļauto sarakstu, tāpēc ielieciet to docker/.env,
ko lasa katrs pakalpojums.
Lietojumprogrammas pārbaude dod skaidru kļūdu un audita ierakstu, un tā nav
garantija: kods var būt nepareizs. Garantija ir tīkls. Compose to jūsu vietā
nespēj ieviest. Reģionālai kopklasei ielieciet worker un web pakalpojumus
uz internal: true tīkla, kura vienīgais izejas maršruts ir izejas
starpniekserveris (piemēram, Squid vai tinyproxy konteiners), kas ļauj tos pašus
saimniekus kā QUIRE_EGRESS_ALLOW_HOSTS plus jūsu konfigurēto pakalpojumu
saimniekus, un tiem pakalpojumiem iestatiet HTTPS_PROXY. Atrašanās vietas lapa
uzskaita precīzos saimniekus, kurus atļauj lietotne, lai abus sarakstus varētu
salīdzināt.
Veselība
| Gala punkts | Nozīme |
|---|---|
/healthz |
Dzīvotne: process atbild. Compose veselības pārbaudes izmanto šo |
/readyz |
Gatavība: atkarības ir sasniedzamas, un katrs izvēles pakalpojums ir ziņojis, vai tas ir konfigurēts. Norādiet šeit savu slodzes līdzsvarotāju |
docker compose -f docker/compose.yaml ps rāda katra pakalpojuma veselību.
TLS
proxy pakalpojums (Caddy, Apache-2.0, docker/caddy/Caddyfile) ir noklusētās
kopklases sastāvdaļa. Tas atbild portos 80 un 443 un maršrutē:
| Saimnieks vai ceļš | Kur ved |
|---|---|
QUIRE_PROXY_CONTENT_HOST |
content |
QUIRE_PROXY_APP_HOST, katrs nomnieka apakšdomēns un pielāgotais domēns |
web |
/_collab/ uz šiem saimniekiem |
collab (websocket, QUIRE_COLLAB_URL) |
/_realtime/connection/ uz šiem saimniekiem |
centrifugo klienta websocket; tā servera API nekad netiek atvērts |
/_images/ uz šiem saimniekiem |
imgproxy ar profilu images (IMGPROXY_URL) |
init-env.sh izved QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST,
QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL un IMGPROXY_URL no abām
izcelsmēm, lai tās nevarētu aiziet prom citā virzienā. Mainiet tās kopā, ja
kādu izcelsmi maināt ar roku.
Sertifikāti seko QUIRE_PROXY_TLS:
-
internal(noklusējums): Caddy paša sertifikācijas iestādelocalhost,*.localhostunlvh.me. Uzticieties tās saknei vienreiz un pēc tam pārlūkojiet:docker compose -f docker/compose.yaml cp \ proxy:/data/caddy/pki/authorities/local/root.crt ./quire-local-ca.crtPievienojiet
quire-local-ca.crtsistēmas vai pārlūka uzticamo sarakstu.curlto pieņem ar--cacert. -
E-pasta adrese: automātiski ACME sertifikāti (Let’s Encrypt, pēc tam ZeroSSL) īstiem saimnieku nosaukumiem. Abu izcelsmju un katra nomnieka saimnieka DNS jānorāda šeit, un portiem 80 un 443 jābūt sasniedzamiem no interneta.
Nomnieku saimnieki tiek izsniegi pēc pieprasījuma, pirmajā apmeklējumā, un tikai
tad, kad web apstiprina, ka vārds pieder šai instalācijai (/tls-allowed,
vaicāts Compose tīklā). Nav vajadzīgs nekāds aizstājējsertifikāts ne DNS
pakalpojuma sniedzēja spraudnis, un svešinieks, kas norāda vārdu uz serveri, nevar
panākt, lai tas pieprasītu sertifikātus. Sertifikāti un vietējā iestāde dzīvo
caddy-data sējumā; dublējiet to kopā ar pārējo, ja izmantojat internal.
Web tic tikai X-Forwarded-For no proxy: proxy ir fiksēta adrese
(QUIRE_PROXY_ADDRESS, noklusējums 172.29.64.10) uz fiksēta apakštīkla
(QUIRE_COMPOSE_SUBNET), un QUIRE_TRUSTED_PROXY_CIDRS nosauc šo adresi. Ja
apakštīkls saduras ar tīklu uz servera, mainiet abus un palaidiet
docker compose down pirms up.
Aiz sava apgrieztā starpniekservera
Lai izmantotu slodzes līdzsvarotāju vai starpniekserveri, ko jau darbināt, tā
vietā, izlaidiet proxy (docker compose up -d --scale proxy=0) un pārtrauciet
TLS priekšā web (8080), content (8081), collab (1234, websocket) un
centrifugo (8000, websocket). Iestatiet publiskās adreses QUIRE_APP_ORIGIN,
QUIRE_CONTENT_ORIGIN un QUIRE_COLLAB_URL (wss://) un sava starpniekservera
adresu diapazonu QUIRE_TRUSTED_PROXY_CIDRS.
Problēmu novēršana
initiziet ar “QUIRE_DATABASE_ID is not a UUID”: iestatiet to aruuidgen.webstartās no jauna ar “did not start on compose”: žurnāls uzskaita katru iestatījumu, ko tas nevar ievērot, un ko lietot tā vietā.- Lomu paroles maiņa
.envpēc pirmās startēšanās neko nedara: init skripts darbojas vienreiz. LietojietALTER ROLE. - Augšupielādes neizdodas ar skenēšanas kļūdu, kamēr
CLAMAV_URLir iestatīts: ClamAV lejupielādē savus parakstus pirmajā startēšanā, kas aizņem dažas minūtes.