Tämä asentaa koko tuotteen yhdelle isännälle: oppimisympäristön, taustatyöt, reaaliaikaisuus- ja yhteistyömuokkauspalvelut sekä profiileista valittavat lisäpalvelut. Rakenne kuvataan tiedoston docs/architecture/23-ops.md kohdassa 2.
Muut kohteet: Vercel ja Cloudflare Workers suorittavat vain verkkopalvelutason. Päivitykset käsitellään päivitysoppaassa, varmuuskopiot ja palautusharjoitus varmuuskopiointioppaassa.
Tarvittavat asiat
- Docker Engine 27 tai uudempi ja Compose-lisäosa 2.30 tai uudempi.
- Oletuspinolle 4 CPU-ydintä ja 8 Gt muistia;
--profile full-valinnalla 8 ydintä ja 16 Gt muistia. Pelkät ClamAV:n allekirjoitustiedot käyttävät noin 1,5 Gt. - Verkkotunnus verkkopalvelutasolle ja toinen epäluotettavalle sisällölle. Niiden on oltava eri palvelinnimiä: SCORM-paketit ja ladattu HTML suoritetaan sisältöalkuperässä, jotta ne eivät koskaan voi lukea oppimisympäristön evästeitä.
- Paikallista kokeilua varten
lvh.meja*.localhostosoittavat osoitteeseen 127.0.0.1, kutendocker/.env.exampleolettaa. Pinon omaproxy-palvelu palvelee molempia HTTPS-yhteydellä paikallisen varmenneviranomaisen avulla, joten muuta ei tarvitse asentaa (katso “TLS”). - Isännän vapaat portit 80 ja 443 (
QUIRE_PROXY_HTTP_PORTjaQUIRE_PROXY_HTTPS_PORTvaihtavat niitä).
Ensimmäinen käynnistys
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 luo tiedoston docker/.env mallista docker/.env.example ja muodostaa kaikki salaisuudet (tietokannan salasanat, allekirjoitus- ja pääavaimet sekä sisällön käynnistysavaimen parin). Se luo myös auditointitarkistuspisteen allekirjoitusavaimen tiedostoon docker/secrets/audit-signing-key.pem, jonka Compose liittää työntekijöille salaisuutena. Se tarvitsee vain komennot sh, awk ja openssl, eikä suostu korvaamaan olemassa olevaa docker/.env-tiedostoa. Kopioi molemmat tiedostot pois isännältä: ilman QUIRE_MASTER_KEY-avainta palautetussa tietokannassa olevia tunnistetietoja ei voi purkaa. Jos täytät tiedoston käsin, kopioi ensin komennolla cp docker/.env.example docker/.env; tiedostossa kerrotaan, miten kukin salaisuus luodaan.
Molempien alkuperäosoitteiden on käytettävä https-yhteyttä. Sisältöpalvelu ei hyväksy tuotannossa pelkkää HTTP:tä eivätkä osoitteet saa kuulua samaan rekisteröitävään verkkotunnukseen. proxy-palvelu päättää TLS-yhteyden kummallekin (katso “TLS”). init-env.sh hylkää http://-alkuiset osoitteet.
Pino käynnistyy kiinteässä järjestyksessä. Kukin vaihe odottaa edellisen valmistumista:
postgresmuuttuu terveeksi. Ensimmäisellä käynnistyskerralla sen alustuskomentosarja (docker/postgres/init/90-passwords.sh) asettaa neljän roolin salasanat.migratesuorittaa kaikki migraatiot ja alustaa työjonon ohjaustietokannassa sekä jokaisessa omistetussa vuokraajatietokannassa. Se varmistaa tietokantojen yhteneväisyyden ja päättyy sitten (katso docs/ops/upgrade.md). Migraatiot suoritetaan jokaisella käynnistyskerralla. Ne ovat idempotentteja, joten päivitykseen riittää uusi levykuva ja uudelleenkäynnistys.init(apps/web/src/first-run.ts) kirjaa sovellustietokannan tunnisteenQUIRE_DATABASE_ID-arvolla. JosQUIRE_SETUP_ADMIN_EMAILon asetettu, se luo ensimmäisen organisaation ja sen ylläpitäjän. Kirjautumisosoite ja luotu salasana tulostetaan kerran komennondocker compose logs initlokiin.- Käynnistetään
web,content,worker,scheduler,collabjacentrifugo. proxykäynnistyy, kunwebjacontentovat terveitä.
Avaa osoite https://demo. ja lisää sen perään sovelluksen verkkotunnus (tarkka kirjautumisosoite näkyy init-lokissa). Kirjaudu sisään. Luota paikallisen asennuksen tapauksessa ensin välityspalvelimen varmenneviranomaiseen (katso “TLS”). Vaihda luotu salasana osoitteessa /account/security.
Vaadittavan salaisuuden puuttuessa prosessi kieltäytyy käynnistymästä ja nimeää puuttuvan asetuksen lokissa. Osittain määritettyä kokoonpanoa ei käynnistetä.
Palvelut ja profiilit
| Palvelu | Profiili | Tehtävä |
|---|---|---|
| postgres | aina | Tietokanta (PostgreSQL 18 ja pgvector, luodaan tiedostosta docker/postgres.Dockerfile); WAL arkistoidaan ensimmäisestä käynnistyksestä alkaen |
| migrate, init | aina | Kertaluonteisesti: migraatiot ja ensimmäinen käynnistys |
| web | aina | Oppimisympäristö portissa QUIRE_HTTP_PORT (8080) |
| content | aina | Epäluotettavan sisällön alkuperä portissa QUIRE_CONTENT_PORT (8081) |
| worker | aina | Taustatyöt: sähköposti, raportit, tiedostojen käsittely ja webhookit |
| scheduler | aina | Toistuvat työt: rekisteröi 64 ajastusta ja välittää ne työntekijälle; vain yksi johtaja kerrallaan |
| collab | aina | Yhteistyömuokkauksen WebSocket portissa QUIRE_COLLAB_HTTP_PORT (1234) |
| centrifugo | aina | Reaaliaikaisten tapahtumien jakelu portissa QUIRE_REALTIME_PORT (8000) |
| proxy | aina | Caddy, TLS-etuovi porteissa 80 ja 443 (katso “TLS”) |
| valkey | cache |
Välimuisti ja kutsurajat |
| clamav | scan |
Ladattujen tiedostojen haittaohjelmatarkistus |
| gotenberg | preview |
Office-tiedostojen PDF-esikatselut ja todistusten muodostaminen |
| imgproxy | images |
Kuvien koon muuttaminen ja muuntaminen |
| transcoder | video |
Työntekijäkuva, jossa on vain LGPL-lisensoitu ffmpeg videoversioita varten |
| seaweedfs | storage |
Tämän isännän S3-yhteensopiva objektitallennus |
| otelcol | observability |
OpenTelemetry-kerääjä |
| mailpit | devmail |
Sieppaa kaikki lähtevät sähköpostit Quiren kokeilemista varten |
| backup | backup |
Kertaluonteinen perusvarmuuskopio; katso backup-restore.md |
| backup-scheduler, backup-offsite | backup |
Perusvarmuuskopio QUIRE_BACKUP_INTERVAL_HOURS-asetuksen välein ja salatut kopiot toiseen sijaintiin viikoittaisella varmennusharjoituksella |
| h5p | h5p |
Antamasi H5P LTI 1.3 -välinekuva muuttujassa QUIRE_H5P_IMAGE, portissa QUIRE_H5P_PORT (8090); katso “H5P-palveluntarjoajan yhdistäminen” |
--profile full käynnistää kaikki valinnaiset palvelut paitsi backup ja h5p. Käynnistä yksittäinen profiili komennolla docker compose -f docker/compose.yaml --profile scan up -d. Quire toimii ilman valinnaisia palveluja ja ilmoittaa, mitä puuttuu: ilman tarkistinta lataukset tallennetaan ilman haittaohjelmatarkistusta ja ylläpitäjälle kerrotaan siitä; ilman Gotenbergia tiedostot voi ladata mutta niitä ei esikatsella; ilman muunninta videot toistetaan alkuperäisinä.
Kaikki kolmannen osapuolen kuvat ja niiden lisenssivelvoitteet luetellaan tiedostossa docker/third-party-containers.yaml.
H5P-palveluntarjoajan yhdistäminen
Quire ei sisällä eikä toimita H5P-suoritusympäristöä tai apupalvelua (ADR 0019). Jos käytät H5P:tä, hanki oma isännöity tilaus tai ylläpidä H5P-asennusta erillään Quiresta. Rekisteröi tarjoaja ulkoisena LTI 1.3 -välineenä ja lisää sen sisältö kursseille välinetoimintoina. Quire vaihtaa arvosanat ja toiminnon tai arvioinnin edistymistiedot LTI Assignment and Grade Services (AGS) -palvelun kautta. Jos tarjoaja lähettää myös xAPI-tietueita, määritä erikseen yhteys Quiren xAPI-tietuevarastoon. AGS:n arvosana- ja edistymistietojen vaihto ei lähetä xAPI-tietueita. Moodle-tuonti ilmoittaa H5P-toiminnoista, jotka vaativat LTI-välineen. Tarjoaja vastaa edelleen H5P-suoritusympäristöstä, sisällön luomisesta, sisältöpankista ja yrityshistoriasta.
Jos haluat käyttää tällä isännällä omaa H5P-asennusta, aseta QUIRE_H5P_IMAGE sen levykuvaksi ja käynnistä h5p-profiili. Compose julkaisee sen portissa QUIRE_H5P_PORT (8090) ja säilyttää sen tiedot h5p-data-taltiolla. Levykuva ja siihen liittyvät velvoitteet pysyvät sinun vastuullasi.
Asetukset
Jokainen prosessi lukee tiedoston docker/.env. Malli docker/.env.example luettelee asetukset ja niiden oletukset. Ryhmät:
Osoitteet
| Asetus | Merkitys |
|---|---|
QUIRE_APP_ORIGIN |
Oppimisympäristön julkinen osoite, esimerkiksi https://learn.example.com |
QUIRE_CONTENT_ORIGIN |
Eri palvelimessa oleva sisällön alkuperä |
QUIRE_PLATFORM_DOMAINS |
Organisaatioiden verkkotunnukset pilkuilla erotettuina |
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 |
Tässä compose. Muiden kohteiden oppaat: vercel ja cloudflare |
QUIRE_TRUSTED_PROXY_CIDRS |
Välityspalvelimet, joiden X-Forwarded-For-otsakkeeseen luotetaan |
Salaisuudet
| Asetus | Merkitys |
|---|---|
QUIRE_SECRET_KEY |
Istuntojen ja tokenien allekirjoittamiseen; 64 heksadesimaalimerkkiä |
QUIRE_MASTER_KEY |
Säilytettyjen tunnistetietojen, kuten SSO- ja webhook-salaisuuksien, suojaamiseen; 32 tavua base64-muodossa. Verkkopalvelu ja työntekijä tarvitsevat saman arvon. Katso kierrätys: key-rotation.md |
QUIRE_MASTER_KEY_VERSION |
Pääavaimen versiotunniste; oletus on v1. Kasvata sitä kierrättäessä. |
QUIRE_MASTER_KEY_RETIRED |
Aiemmat pääavaimet, joita tarvitaan niiden suojaamien tietojen lukemiseen, muodossa v1=<base64>. Poista vasta kun kierrätys on valmis eikä mitään ole jäänyt selvittämättä. |
QUIRE_COLLAB_SIGNING_KEY |
Verkkopalvelun ja collab-palvelun yhteinen avain muokkaustokenien allekirjoitukseen |
QUIRE_BACKUP_SIGNING_KEY |
Kurssivarmuuskopioiden allekirjoittamiseen (valinnainen) |
Säilytä QUIRE_MASTER_KEY-avaimen kopio muualla kuin tällä isännällä. Ilman sitä palautettu tietokanta ei voi purkaa tallennettuja tunnistetietoja.
Tietokanta
| Asetus | Merkitys |
|---|---|
POSTGRES_PASSWORD |
Säilön ja varmuuskopioiden käyttämän pääkäyttäjän salasana |
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD |
Roolien salasanat, asetetaan ensimmäisellä käynnistyskerralla |
DATABASE_URL |
Sovellusrooli. Riviin kohdistuva tietoturva koskee jokaista sen tekemää kyselyä. |
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL |
Migraattorirooli migrate- ja init-palveluille |
QUIRE_SUPERUSER_URL |
Käytetään vain ensikäynnistyksessä |
QUIRE_REPORT_DATABASE_URL |
Vain luku -muotoinen raporttirooli raportteja ja raporttien rakentajaa varten |
QUIRE_AUDIT_DATABASE_URL |
Auditointirooli auditointikonsolia ja SIEM-vientiä varten |
QUIRE_DATABASE_ID |
Mikä tahansa UUID, joka pysyy samana koko asennuksen ajan |
Roolien salasanat asetetaan vain, kun tietokantataltio luodaan ensimmäisen kerran. Vaihda salasana myöhemmin komennolla ALTER ROLE ja päivitä vastaava yhteysosoite.
QUIRE_REPORT_DATABASE_URL koskee fyysistä tietokantaa, jonka DATABASE_URL määrittää. Aseta jokaiselle muulle rekisteröidylle fyysiselle tietokannalle sen oma quire_report-yhteysosoite verkkopalvelun ja työntekijän ympäristöön. Aseta sen jälkeen tietokannan Raportoinnin ympäristömuuttuja -kenttään muuttujan nimi muodossa env:NAME. Viitteen on osoitettava samaan tietokantaan kuin sovellusyhteyden, mieluiten sen lukureplikaan. Jokainen raporttinäkymä käyttää vuokraajan oman tietokannan raporttiyhteyttä: raporttien rakentaja ja tallennetut raportit, ajastetut toimitukset, raporttien viennit, analytiikka, auditointiloki, REST-auditointiresurssit ja avustajan auditointihaku. Mikään niistä ei käytä toisen tietokannan raporttiosoitetta. Jos tietokannalla ei ole raporttiyhteyttä, tavalliset raportit suoritetaan sen omalla sovellusyhteydellä. Analytiikka ja kaikki auditointiluvut hylätään ilmoituksella, sillä sovellusrooli ei voi lukea auditointiketjua.
Ajurit
| Asetus | Tämän julkaisun arvot | Huomioita |
|---|---|---|
QUIRE_STORAGE_DRIVER |
local (oletus), s3 tai azure |
local säilyttää tiedostot files-taltiolla. s3 tukee AWS S3:a, R2:ta, GCS-yhteensopivuutta ja muita S3-yhteensopivia tallennuspalveluja sekä jatkettavia osalähetyksiä. |
QUIRE_REALTIME_DRIVER |
inprocess (oletus), sse, centrifugo tai durable_objects |
inprocess sopii yhdelle verkkosäiliölle. Käytä useammalla säiliöllä centrifugo- tai sse-ajuria. |
QUIRE_CACHE_DRIVER |
memory (oletus), postgres tai valkey |
memory on prosessikohtainen. Käytä valkey- tai postgres-ajuria, jotta kutsurajat jaetaan säiliöiden kesken. |
QUIRE_VIDEO_DRIVER |
ffmpeg (oletus) tai progressive_mp4 |
Tai avaimilla määritetty isännöity palvelu: Cloudflare Stream, Mux tai Bunny. |
QUIRE_IMAGE_DRIVER |
noop (oletus), imgproxy tai cloudflare |
noop tarjoaa kuvat alkuperäisessä koossa. imgproxy tarvitsee images-profiilin ja alla olevat asetukset; cloudflare käyttää Cloudflare Imagesia. |
QUIRE_MEETING_PROVIDER |
bbb, zoom, teams, meet, jitsi tai in_process |
Alustan oletuspalvelu live-istunnoille. Jos asetus puuttuu, live-istunnot ilmoittavat, ettei palvelua ole määritetty, kunnes organisaatio yhdistää oman tilin kohdassa Integrations, Live session provider. Organisaation oma tili ohittaa aina tämän arvon. Palveluntarjoajan omat asetukset (BBB_URL ja BBB_SECRET sekä ZOOM_*, TEAMS_*, GOOGLE_MEET_* ja JITSI_*) luetaan vain, jos tässä on vastaava palveluntarjoaja. |
QUIRE_MEETING_REGIONS |
Pilkuilla erotettu eu, uk, us-luettelo |
Alustan oletuspalveluntarjoajan kokoustenkäsittelyalueet. Jos arvo puuttuu, palveluntarjoajaa ei tarkisteta alueeseen sidotun organisaation varalta, kuten aiemminkin. Organisaatio määrittää oman tilinsä alueet sen asetussivulla. |
Jos tämän julkaisun ajurivalikoimaan kuulumatonta arvoa käytetään, verkkopalvelun käynnistys hylätään ja virheessä nimetään asetus. Oletusarvoa ei oteta käyttöön hiljaisesti.
Kuvat
Sivut pyytävät kuvia neljässä kiinteässä koossa osoitteesta /api/files/{id}/image/{size}. Palvelu tarkistaa samat käyttöoikeudet kuin itse tiedostolle ja uudelleenohjaa kuvapalveluun. Jokainen organisaatio voi pyytää tunnissa enintään QUIRE_IMAGE_SPECS_PER_HOUR uutta kuva- ja kokoparia (oletus 2000). Sillä tunnilla jo tuotettuja kokoja ei lasketa mukaan. Jos käytössä on useampi verkkosäiliö, aseta valkey tai postgres ajuriksi muuttujaan QUIRE_CACHE_DRIVER, jotta raja on yhteinen.
| Asetus | Ajuri | Huomioita |
|---|---|---|
IMGPROXY_URL |
imgproxy |
Osoite, josta selaimet tavoittavat imgproxyn, esimerkiksi https://images.example.org. images-profiili julkaisee sen portissa QUIRE_IMAGES_PORT (8082). |
IMGPROXY_KEY, IMGPROXY_SALT |
imgproxy |
Heksadesimaalimerkkijonot, joiden on vastattava imgproxyn käynnistysarvoja. Luo kumpikin komennolla openssl rand -hex 32. Quire allekirjoittaa jokaisen kuvaosoitteen näillä arvoilla, joten imgproxy ei muunna Quiren pyytämättömiä kuvia. |
QUIRE_IMAGE_SOURCE_ORIGIN |
imgproxy paikallisella tallennuksella |
Alkuperäiskuvien nouto-osoite; Compose asettaa arvoksi http://web:3000. s3- tai azure-tallennuksella imgproxy noutaa kuvat säilöstä eikä käytä asetusta. |
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH |
cloudflare |
Images-muokkausoikeudella varustettu API-token ja tilin tiiviste kohdasta Images, Developer resources. Ota tilillä käyttöön joustavat versiot. |
CLOUDFLARE_IMAGES_SIGNING_KEY |
cloudflare |
Valinnainen. Kun asetus on määritetty, kuvat ovat yksityisiä ja jokainen osoite allekirjoitetaan sekä vanhenee. Ilman sitä kuvat ovat julkisia QUIRE_SECRET_KEY-arvosta johdettujen arvaamattomien osoitteiden kautta. |
Cloudflare Images säilyttää itse kopion jokaisesta tarjoamastaan alkuperäiskuvasta. Kun tiedosto poistetaan, työntekijä poistaa ensin tämän kopion ja sitten alkuperäisen.
Työjono
Taustatyöt käyttävät pg-bossia samassa Postgres-tietokannassa. Erillistä jonopalvelua ei tarvitse suorittaa eikä määrittää. Työt lisätään jonoon samassa tapahtumassa kuin ne käynnistävä muutos, joten kaatuminen ei voi kadottaa työtä tai lähettää sitä kahdesti. QUIRE_QUEUE_DRIVER on tässä oletusarvoinen pgboss. Ajurit vercel ja cloudflare siirtävät vain kevyet ilmoitus- ja webhook-toimitukset alustan omaan jonoon. Vercel- ja Cloudflare-oppaissa kuvataan niiden toiminta ja verkkopalvelutason jonoon lisäämät työt.
Sähköposti
Aseta jompikumpi seuraavista:
QUIRE_EMAIL_PROVIDER_CONFIG: HTTP-palveluntarjoajan ja sen tunnistetiedot nimeävä JSON-objekti, esimerkiksi{"provider":"postmark","token":"..."}. Tuettuja ovat Postmark, Amazon SES, Mailgun, SendGrid ja Resend.QUIRE_SMTP_URL:smtp://user:password@host:587. Tämä kohde tukee asetusta; palvelimettomat kohteet estävät SMTP:n.
QUIRE_MAIL_FROM määrittää lähettäjän. Kokeillaksesi Quirea käynnistä devmail-profiili, aseta QUIRE_SMTP_URL=smtp://mailpit:1025 ja lue viestit osoitteesta http://localhost:8025.
Valinnaiset palvelut
| Asetus | Profiili |
|---|---|
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 tai QUIRE_MEILISEARCH_URL |
Ulkoinen haku; muussa tapauksessa Postgresin kokotekstihaku |
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL |
Salasanan vuototarkistus. Oletuksena päällä osoitteeseen api.pwnedpasswords.com (lähetetään vain viiden merkin tiiviste-alku); off poistaa sen käytöstä. URL-osoitteella määritetään oma rajapintapalvelusi. |
Havainnoitavuus
OTEL_EXPORTER_OTLP_ENDPOINT määrittää kerääjän, jolle kaikki prosessit lähettävät jäljet ja mittarit. observability-profiilissa sen arvo on http://otelcol:4318. Lisää taustajärjestelmän vientipalvelu tiedostoon docker/otel-collector.yaml. Jos asetus on määritetty, verkkopalvelu, työntekijä, ajastin, sisältöpalvelu ja collab-prosessit vievät pyynnöistä, vuokraajien tietokantatapahtumista, työntekijätöistä ja lähtevistä kutsuista muodostetut jäljet OTLP/HTTP:llä sekä mittarit samaan osoitteeseen minuutin välein. OTEL_METRICS_EXPORTER=none poistaa mittarit käytöstä. OTEL_TRACES_SAMPLER_ARG määrittää säilytettävien jälkien osuuden. Lokit kirjoitetaan vakiotulosteeseen muuttujalla LOG_LEVEL määritetyllä tasolla, ja Compose kierrättää ne. Jäljissä ei ole henkilötietoja.
Alueellinen ulosmenevä liikenne (EU:n tietojen sijainti)
QUIRE_REGION=eu kertoo pinon palvelevan Euroopan unionin organisaatioita. Työntekijä rajaa tämän jälkeen EU-alueeseen kiinnitetyn organisaation kaikki lähtevät pyynnöt sallittujen listaan (21-compliance.md, kohta 8.1). Lista sisältää niiden määritettyjen palvelujen isännät, jotka ilmoittavat toimivansa alueella (tallennuspäätepiste, sähköpostipalvelu, isännöity videopalvelu, organisaation omat tallennuskohteet, tekoälypalvelut ja sähköpostitili), aktiivisen poikkeusluvan alaisten palvelujen isännät sekä muuttujassa QUIRE_EGRESS_ALLOW_HOSTS luettelemasi isännät. Pyyntö muihin julkisiin osoitteisiin estetään ennen lähetystä. Esto kirjataan organisaation auditointiketjuun tunnisteella privacy/egress_refused sekä kohdassa Compliance, Data residency.
| Asetus | Arvot | Vaikutus |
|---|---|---|
QUIRE_EGRESS_ALLOW_HOSTS |
Pilkuilla erotettu isäntänimiluettelo tai *.example.org kaikille aliverkkotunnuksille |
EU-organisaation lisäsallitut osoitteet. Webhook-, xAPI- ja SIEM-päätepisteet, blogisyötteet ja Amazon SES -isännät kuuluvat tähän, sillä organisaatio valitsee ne itse eikä mikään palvelu ilmoita niitä. Loopback- ja yksityisosoitteita sekä yksiosaisia nimiä, kuten web tai clamav, ei tarkisteta, sillä ne kuuluvat omaan verkkoosi. |
Isäntänimilista ei koske Ison-Britannian eikä Yhdysvaltojen organisaatioita. Niille tehdään edelleen palvelun alueen tarkistukset. Aseta lista työntekijälle. Ylläpitosivu lukee sen verkkopalvelutasolta ja näyttää sallitut isännät. Lisää muuttuja siis tiedostoon docker/.env, jota kaikki palvelut lukevat.
Sovelluksen tarkistus antaa selkeän virheen ja auditointimerkinnän, mutta se ei ole varsinainen takuu, sillä koodi voi olla virheellistä. Takuun muodostaa verkko. Compose ei valvo sitä puolestasi. Alueellisessa pinossa aseta worker- ja web-palvelut verkkoon internal: true, jonka ainoa ulospääsy on ulosmenevää liikennettä välittävä palvelin (esimerkiksi Squid tai tinyproxy-säiliö). Rajaa se samoihin osoitteisiin kuin QUIRE_EGRESS_ALLOW_HOSTS sekä määrittämiesi palvelujen isäntiin. Aseta palveluille myös HTTPS_PROXY. Alueellisen sijainnin sivu näyttää sovelluksen sallimat osoitteet, jotta voit verrata luetteloita.
Terveys
| Päätepiste | Merkitys |
|---|---|
/healthz |
Elossaolo: prosessi vastaa. Compose-kuntotarkistukset käyttävät tätä. |
/readyz |
Valmius: riippuvuuksiin saadaan yhteys ja jokainen valinnainen palvelu ilmoittaa, onko se määritetty. Käytä tätä kuormantasaajassa. |
docker compose -f docker/compose.yaml ps näyttää jokaisen palvelun terveystilan.
TLS
Oletuspino sisältää proxy-palvelun (Caddy, Apache-2.0, docker/caddy/Caddyfile). Se kuuntelee portteja 80 ja 443 ja reitittää pyynnöt näin:
| Isäntä tai polku | Kohde |
|---|---|
QUIRE_PROXY_CONTENT_HOST |
content |
QUIRE_PROXY_APP_HOST, kaikki vuokraajien aliverkkotunnukset ja mukautetut verkkotunnukset |
web |
/_collab/ näissä isännissä |
collab (WebSocket, QUIRE_COLLAB_URL) |
/_realtime/connection/ näissä isännissä |
centrifugo-asiakkaan WebSocket; sen palvelin-API:a ei koskaan tuoda julki |
/_images/ näissä isännissä |
imgproxy, kun images-profiili on käytössä (IMGPROXY_URL) |
init-env.sh johtaa kahdesta alkuperäosoitteesta asetukset QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL ja IMGPROXY_URL, jotta ne eivät voi ajautua eri arvoihin. Muuta ne yhdessä, jos vaihdat alkuperäosoitetta käsin.
Varmenteet määräytyvät asetuksen QUIRE_PROXY_TLS mukaan:
-
internal(oletus): Caddyn oma varmenneviranomainen osoitteillelocalhost,*.localhostjalvh.me. Luota sen juurivarmenteeseen kerran ja avaa sitten sivusto:docker compose -f docker/compose.yaml cp \ proxy:/data/caddy/pki/authorities/local/root.crt ./quire-local-ca.crtLisää
quire-local-ca.crtjärjestelmän tai selaimen luotettujen varmenteiden joukkoon.curl-komennossa käytetään valintaa--cacert. -
Sähköpostiosoite: automaattiset ACME-varmenteet (Let’s Encrypt, sitten ZeroSSL) oikeille verkkotunnuksille. Molempien alkuperäosoitteiden ja jokaisen vuokraajan isännän DNS-tietojen on osoitettava tänne, ja porttien 80 ja 443 on oltava saavutettavissa internetistä.
Vuokraajien isännille myönnetään varmenne tarpeen mukaan ensimmäisen käynnin yhteydessä, ja vain jos web-palvelu varmistaa, että nimi kuuluu asennukseen (kysely /tls-allowed Compose-verkossa). Wildcard-varmennetta tai DNS-palveluntarjoajan liitännäistä ei tarvita. Väärän verkkotunnuksen tähän isäntään osoittava ulkopuolinen ei voi pakottaa varmenteen pyytämistä. Varmenteet ja paikallinen varmenneviranomainen säilyvät caddy-data-taltiolla. Jos käytät internal-asetusta, varmuuskopioi taltio muiden mukana.
Web-palvelu luottaa välityspalvelimen X-Forwarded-For-otsakkeeseen. Välityspalvelimen osoite on kiinteä (QUIRE_PROXY_ADDRESS, oletus 172.29.64.10) ja se on kiinteässä aliverkossa (QUIRE_COMPOSE_SUBNET). QUIRE_TRUSTED_PROXY_CIDRS nimeää kyseisen osoitteen. Jos aliverkko on ristiriidassa isäntäkoneen verkon kanssa, vaihda molemmat asetukset ja suorita docker compose down ennen up-komentoa.
Oman käänteisvälityspalvelimen takana
Jos käytät nykyistä kuormantasaajaa tai välityspalvelinta, älä sisällytä proxy-palvelua (docker compose up -d --scale proxy=0). Päätä TLS-yhteys niiden palvelujen edessä: web (8080), content (8081), collab (1234, WebSocket) ja centrifugo (8000, WebSocket). Aseta julkiset osoitteet muuttujiin QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN ja QUIRE_COLLAB_URL (wss://) sekä välityspalvelimen osoitealue muuttujaan QUIRE_TRUSTED_PROXY_CIDRS.
Vianmääritys
initpysähtyy viestiin “QUIRE_DATABASE_ID is not a UUID”: aseta tunniste komennollauuidgen.webkäynnistyy uudelleen ja ilmoittaa “did not start on compose”: lokissa luetellaan asetukset, joita ei voida käyttää, ja niiden korvaamiseen tarvittavat arvot.- Roolin salasanan vaihtaminen
.env-tiedostossa ensimmäisen käynnistyksen jälkeen ei vaikuta: alustusskripti ajetaan vain kerran. KäytäALTER ROLE-komentoa. - Lataus epäonnistuu tarkistusvirheeseen, kun
CLAMAV_URLon asetettu: ClamAV lataa allekirjoitustietonsa ensimmäisellä käynnistyskerralla, mikä kestää muutaman minuutin.