---
title: "Uppsetning Quire með Docker Compose"
description: "Settu upp Quire á eigin innviðum með Docker Compose."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/is/llms.txt
> Use this file to discover all available pages before exploring further.

# Uppsetning Quire með Docker Compose

<span id="installing-quire-with-docker-compose"></span>

Þetta er öll varan á einum hýsil: LMS-ið, bakgrunnsvinnan þess, rauntíma-
og samvinnuritþjónusturnar, og hver valkvæm þjónusta bak við snið. Hönnunin er í
`docs/architecture/23-ops.md` kafla 2.

Önnur markumhverfi: [Vercel](/is/ops/vercel/) og [Cloudflare Workers](/is/ops/cloudflare/) keyra
aðeins vefþrepið. Uppfærslur eru í [upgrade.md](/is/ops/upgrade/), og öryggisafrit og
endurheimtaræfingin í [backup-restore.md](/is/ops/backup-restore/).

## Hvað þú þarft <!--quire:what-you-need-->

- Docker Engine 27 eða nýrri með Compose-viðbótinni 2.30 eða nýrri.
- 4 örgjörvakjarna og 8 GB af minni fyrir sjálfgefinn stakk; 8 kjarna og 16 GB
  með `--profile full` (ClamAV einn heldur um 1,5 GB af undirskriftum).
- DNS-nafn fyrir vefþrepið og annað fyrir ótreytt efni. Þau
  verða að vera ólík hýsilnöfn: SCORM-pakkar og upphlaðið HTML keyra á efnis-
  upprunanum svo þau geti aldrei lesið kökur LMS-ins.
- Fyrir staðbundið próf leysast `lvh.me` og `*.localhost` í 127.0.0.1, sem
  er það sem `docker/.env.example` notar. Eigin `proxy`-þjónusta stakkans þjónar
  báðum yfir https með staðbundnu útgefendastofnuninni, svo ekkert annað er
  sett upp (sjá „TLS“).
- Gáttir 80 og 443 lausar á hýsilnum (`QUIRE_PROXY_HTTP_PORT` og
  `QUIRE_PROXY_HTTPS_PORT` færa þær).

## Fyrsta keyrsla <!--quire:first-run-->

```sh
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
```

`docker/scripts/init-env.sh` skrifar `docker/.env` frá `docker/.env.example`
með öll leyndarmál mynduð (lykilorð gagnagrunns, undirritunar- og aðallyklar,
efnisræsingarlyklaparið) og úttektareftirlits-undirritunarlykilinn í
`docker/secrets/audit-signing-key.pem`, sem Compose tengir inn í vinnsluvélarnar
sem leyndarmál. Það þarf aðeins `sh`, `awk` og `openssl`, og það neitar að
skrifa yfir núverandi `docker/.env`. Afritaðu báðar skrár af hýsilnum: án
`QUIRE_MASTER_KEY` getur endurheimtur gagnagrunnur ekki afdulritað geymd auðkenni sín.
Til að fylla skrána með hendi í staðinn, `cp docker/.env.example docker/.env`; skráin
segir hvernig á að mynda hvert leyndarmál.

Báðir upprunar verða að vera `https`: efnisþjónustan neitar látlausu http í
framleiðslu, og þeir mega ekki deila skráanlegu léni. `proxy`-
þjónustan endar TLS fyrir báða (sjá „TLS“); `init-env.sh` hafnar
`http://`-uppruna.

Stakkinn ræsir í fastri röð, og hvert skref bíður eftir því fyrra:

1. `postgres` verður heilbrigður. Við allra fyrstu ræsingu stillir frumstillingarskriftan hans
   (`docker/postgres/init/90-passwords.sh`) lykilorð fjögurra hlutverka.
2. `migrate` beitir hverjum flutningi og ræsir verkbiðröðina í
   stjórngagnagrunninum og í hverjum sérstökum leigjendagagrunni, athugar að þeir
   séu allir sammála, hættir síðan (docs/ops/upgrade.md).
   Flutningar keyra við hverja ræsingu og eru samtaka, svo uppfærsla er ný
   mynd og endurræsing.
3. `init` (`apps/web/src/first-run.ts`) skráir forritsgagnagrunninn undir
   `QUIRE_DATABASE_ID` og, þegar `QUIRE_SETUP_ADMIN_EMAIL` er stillt, býr til fyrstu
   stofnunina og stjórnanda hennar. Innskráningarfangið og
   myndað lykilorð er prentað einu sinni, í `docker compose logs init`.
4. `web`, `content`, `worker`, `scheduler`, `collab` og `centrifugo` ræsa.
5. `proxy` ræsir þegar `web` og `content` eru heilbrigð.

Opnaðu `https://demo.` fylgt eftir með forritsléninu þínu (`init`-annállinn
prentar nákvæmt innskráningarfang), og skráðu þig inn. Á staðbundinni uppsetningu skaltu fyrst treysta
útgefendastofnun milliþjónsins (sjá „TLS“). Skiptu um myndaða lykilorðið á `/account/security`.

Ferli ræst án krafins leyndarmáls neitar að ræsa og nefnir
vantarandi stillingu í annál sínum. Ekkert ræsir hálfstillt.

## Þjónustur og snið <!--quire:services-and-profiles-->

| Þjónusta | Snið | Hvað hún gerir |
| --- | --- | --- |
| postgres | alltaf | Gagnagrunnurinn (PostgreSQL 18 með pgvector, byggður frá `docker/postgres.Dockerfile`), með WAL skjalasafnað frá fyrstu ræsingu |
| migrate, init | alltaf | Einskiptis: flutningar, síðan fyrsta keyrsla |
| web | alltaf | LMS-ið, á `QUIRE_HTTP_PORT` (8080) |
| content | alltaf | Ótreytti efnisuppruninn, á `QUIRE_CONTENT_PORT` (8081) |
| worker | alltaf | Bakgrunnsverk: tölvupóstur, skýrslur, skráavinnsla, vefkrókar |
| scheduler | alltaf | Endurtekin verk: skráir 64 keyrslutímaáætlanir og afhendir þær vinnsluvélinni; einn leiðtogi í einu |
| collab | alltaf | Samvinnurit-vefstokkur, á `QUIRE_COLLAB_HTTP_PORT` (1234) |
| centrifugo | alltaf | Rauntímaútvarp, á `QUIRE_REALTIME_PORT` (8000) |
| proxy | alltaf | Caddy, TLS-framhurðin á gáttum 80 og 443 (sjá „TLS“) |
| valkey | `cache` | Skyndiminni og hraðatakmarkanir |
| clamav | `scan` | Skönnun upphlaðinna skráa fyrir spilliforritum |
| gotenberg | `preview` | Skrifstofuskjöl í PDF-forsýningu, skírteinisgerð |
| imgproxy | `images` | Myndir í breyttri stærð og ummyndaðar |
| transcoder | `video` | Vinnsluvélmyndin með LGPL-eingöngu ffmpeg, fyrir myndbandsútgáfur |
| seaweedfs | `storage` | S3-samhæfð hlutageymsla á þessum hýsil |
| otelcol | `observability` | OpenTelemetry-söfnunartæki |
| mailpit | `devmail` | Grípur allan útfara póst, til að prófa Quire |
| backup | `backup` | Einskiptis grunnöryggisafrit; sjá backup-restore.md |
| backup-scheduler, backup-offsite | `backup` | Grunnöryggisafrit á `QUIRE_BACKUP_INTERVAL_HOURS` fresti, og dulrituð afrit utan hýsils með vikulegri sannvottunaræfingu |
| h5p | `h5p` | H5P LTI 1.3 tækismyndin sem þú leggur til í `QUIRE_H5P_IMAGE`, á `QUIRE_H5P_PORT` (8090); sjá „Að tengja H5P-veitu“ |

`--profile full` ræsir hverja valkvæma þjónustu nema `backup` og `h5p`.
Ræstu eina með `docker compose -f docker/compose.yaml --profile scan up -d`.
Án valkvæmrar þjónustu virkar Quire samt og segir hvað vantar: enginn
skanni þýðir að upphlaðið er geymt óskannað og stjórnandanum er sagt; enginn
Gotenberg þýðir að skrár bjóða niðurhal í stað forsýningar; enginn umkóðari þýðir að
myndband spilast sem upprunalega skráin.

Hver þriðjaaðilamynd og leyfisskyldur hennar eru taldar í
`docker/third-party-containers.yaml`.

### Að tengja H5P-veitu <!--quire:connecting-an-h5p-provider-->

Quire fellir ekki inn né sendir H5P-keyrslutíma eða hliðarvagn (ADR 0019). Ef þú notar
H5P skaltu leggja til eigin hýsta áskrift eða reka eigin sjálfhýsta H5P-
tilvik aðskilið frá Quire. Skráðu þá veitu sem LTI 1.3 ytra
tæki og bættu efni hennar við námskeið sem tækjaverkefni. Quire skiptir einkunnum
og framvindu verkefna/einkunna í gegnum LTI Assignment and Grade Services (AGS).
Ef veitan sendir einnig xAPI-yfirlýsingar skaltu stilla það aðskilið fyrir
xAPI-yfirlýsingageymslu Quire; AGS einkunna-/framvinduskipti senda ekki xAPI-
yfirlýsingar. Moodle-innflutningar melda H5P-verkefni sem þarfnast LTI-tækis-
tengingar. Veitan ber áfram ábyrgð á H5P-keyrslutíma sínum, höfundun,
efnisbanka og tilraunasögu.

Til að keyra eigið sjálfhýst tilvik á þessum hýsil skaltu stilla `QUIRE_H5P_IMAGE` á mynd þess
og ræsa `h5p`-sniðið. Compose gefur það út á `QUIRE_H5P_PORT`
(8090) og heldur gögnum þess í `h5p-data` bindinu; myndin, og
skyldurnar sem fylgja henni, haldast þínar.

## Stillingar <!--quire:settings-->

Hvert ferli les `docker/.env`. Sniðmátið, `docker/.env.example`, telur
hverja stillingu með sjálfgefnu gildi. Hóparnir:

### Vistföng <!--quire:addresses-->

| Stilling | Merking |
| --- | --- |
| `QUIRE_APP_ORIGIN` | Opinbert fang LMS-ins, svo sem `https://learn.example.com` |
| `QUIRE_CONTENT_ORIGIN` | Efnisuppruninn, annar hýsill |
| `QUIRE_PLATFORM_DOMAINS` | Lén sem stofnanir lifa undir, kommuaðskilin |
| `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` hér. Sjá hinar leiðbeiningarnar fyrir `vercel` og `cloudflare` |
| `QUIRE_TRUSTED_PROXY_CIDRS` | Milliþjónar þar sem `X-Forwarded-For` er trúað |

### Leyndarmál <!--quire:secrets-->

| Stilling | Merking |
| --- | --- |
| `QUIRE_SECRET_KEY` | Undirritar setur og tákn. 64 hex-stafir |
| `QUIRE_MASTER_KEY` | Vefur geymd auðkenni svo sem SSO- og vefkróksleyndarmál. 32 bæti, base64. Vefþrepið og vinnsluvélin þurfa sama gildi. Snúningur: [key-rotation.md](/is/ops/key-rotation/) |
| `QUIRE_MASTER_KEY_VERSION` | Útgávumerki aðallykilsins, `v1` þegar óstillt. Hækkaðu það þegar þú snýrð |
| `QUIRE_MASTER_KEY_RETIRED` | Eldri aðallyklar sem enn þarf til að lesa það sem þeir innsigluðu, sem `v1=<base64>`. Fjarlægðu eftir að snúningur lýkur með engu óleystu |
| `QUIRE_COLLAB_SIGNING_KEY` | Deilt af vef og samvinnu til að undirrita ritunartákn |
| `QUIRE_BACKUP_SIGNING_KEY` | Undirritar námskeiðsöryggisafrit (valfrjálst) |

Haltu afriti af `QUIRE_MASTER_KEY` annars staðar en á þessum hýsil. Gagnagrunnur
endurheimtur án hans getur ekki afdulritað auðkennin sem hann heldur.

### Gagnagrunnur <!--quire:database-->

| Stilling | Merking |
| --- | --- |
| `POSTGRES_PASSWORD` | Ofurnotandinn, notaður af gámnum og öryggisafritum |
| `QUIRE_DB_APP_PASSWORD`, `QUIRE_DB_MIGRATOR_PASSWORD`, `QUIRE_DB_REPORT_PASSWORD`, `QUIRE_DB_AUDIT_PASSWORD` | Lykilorð hlutverka, stillt við fyrstu ræsingu |
| `DATABASE_URL` | Forritshlutverkið. Öryggi á raðarstigi gildir um hverja fyrirspurn sem það gerir |
| `DATABASE_MIGRATOR_URL`, `QUIRE_MIGRATION_URL` | Flutningshlutverkið, fyrir `migrate` og `init` |
| `QUIRE_SUPERUSER_URL` | Aðeins notað við fyrstu keyrslu |
| `QUIRE_REPORT_DATABASE_URL` | Skýrsluhlutverkið eingöngu til lestrar, fyrir skýrslur og skýrslusmiðinn |
| `QUIRE_AUDIT_DATABASE_URL` | Úttektarhlutverkið, fyrir úttektarborðið og SIEM-útflutning |
| `QUIRE_DATABASE_ID` | Hvaða UUID sem er, fast allan lífstíma uppsetningarinnar |

Lykilorð hlutverka eru aðeins beitt þegar gagnagrunnsbindið er fyrst stofnað.
Til að skipta um eitt síðar skaltu nota `ALTER ROLE` og uppfæra síðan samsvarandi slóð.

`QUIRE_REPORT_DATABASE_URL` er notað fyrir líkamlega gagnagrunninn sem stilltur er með
`DATABASE_URL`. Fyrir hvern annan skráðan líkamlegan gagnagrunn skaltu stilla hans eigin
`quire_report` tengislóð í vef- og vinnsluumhverfunum, settu síðan
breytunafnið í reit gagnagrunnsins **Skýrsluumhverfisbreyta**
sem `env:NAME`. Tilvísunin verður að benda á sama gagnagrunn og forrits-
tenging hans, helst lesafrit hans. Hvert skýrsluyfirborð fylgir
leigjandanum að skýrslutengingu eigin gagnagrunns: skýrslusmiðurinn og
vistaðar skýrslur, tímasettar afhendingar, skýrsluútflutningar, greiningar, úttektar-
annállinn, REST-úttektartilföngin og úttektarleit aðstoðarfulltrúans. Ekkert þeirra
lánar nokkurn tíma skýrsluslóð annars gagnagrunns. Þegar gagnagrunnur hefur enga
skýrslutengingu keyra venjulegar skýrslur á forritstengingu þess gagnagrunns,
meðan greiningar og hver úttektarlestur neita og segja það, því
forritshlutverkið getur ekki lesið úttektarslóðina.

### Reklar <!--quire:drivers-->

| Stilling | Þessi útgáfa | Athugasemdir |
| --- | --- | --- |
| `QUIRE_STORAGE_DRIVER` | `local` (sjálfgefið), `s3` eða `azure` | `local` heldur skrám í `files` bindinu. `s3` nær yfir AWS S3, R2, GCS-samhæfi og aðrar S3-samhæfðar geymslur, með endurhæfanlegum fjölhlutaupphlöðum |
| `QUIRE_REALTIME_DRIVER` | `inprocess` (sjálfgefið), `sse`, `centrifugo` eða `durable_objects` | `inprocess` á við um einn vefgám; notaðu `centrifugo` eða `sse` þegar þeir eru fleiri |
| `QUIRE_CACHE_DRIVER` | `memory` (sjálfgefið), `postgres` eða `valkey` | `memory` er á hvert ferli; notaðu `valkey` eða `postgres` svo hraðatakmarkanir haldi þvert á gáma |
| `QUIRE_VIDEO_DRIVER` | `ffmpeg` (sjálfgefið) eða `progressive_mp4` | Eða hýst veita: Cloudflare Stream, Mux eða Bunny, með lyklum þeirra |
| `QUIRE_IMAGE_DRIVER` | `noop` (sjálfgefið), `imgproxy` eða `cloudflare` | `noop` sendir hverja mynd í upprunalegri stærð. `imgproxy` þarf `images`-sniðið og stillingarnar hér að neðan; `cloudflare` notar Cloudflare Images |
| `QUIRE_MEETING_PROVIDER` | `bbb`, `zoom`, `teams`, `meet`, `jitsi` eða `in_process` | Sjálfgefin vettvangsveita fyrir lifandi setur. Óstillt segja lifandi setur að þau séu ekki stillt, þar til stofnun tengir eigin aðgang undir Samþættingar, Lifandi setuveita. Eigin aðgangur stofnunar vinnur alltaf yfir þetta gildi. Eigin stillingar hverrar veitu (`BBB_URL` og `BBB_SECRET`, `ZOOM_*`, `TEAMS_*`, `GOOGLE_MEET_*` og `JITSI_*` breyturnar) eru aðeins lesnar fyrir veituna sem nefnd er hér |
| `QUIRE_MEETING_REGIONS` | Kommulisti af `eu`, `uk`, `us` | Hvar sjálfgefin vettvangsveita vinnur fundi. Óstillt er það ekki athugað gagnvart stofnun festri við svæði, eins og áður. Eigin aðgangur stofnunar tilgreinir svæði sín á síðu sinni |

Rekilsgildi sem þessi útgáfa hefur ekki er hafnað þegar vefþrepið
ræsir, með stillinguna nefnda, frekar en að vera þegjandi skipt út fyrir
sjálfgefið.

### Myndir <!--quire:images-->

Síður biðja um myndir í fjórum föstum stærðum í gegnum
`/api/files/{id}/image/{size}`, sem athugar sama aðgang og skráin
sjálf og vísar síðan áfram á myndþjónustuna. Hver stofnun má biðja
um `QUIRE_IMAGE_SPECS_PER_HOUR` (sjálfgefið 2000) ný mynd- og stærðarpör á
klukkutíma; stærðir þegar framleiddar þann tíma telja ekki. Notaðu `valkey` eða
`postgres` fyrir `QUIRE_CACHE_DRIVER` með fleiri en einum vefgámi, svo
mörkin haldi þvert á þá.

| Stilling | Rekill | Athugasemdir |
| --- | --- | --- |
| `IMGPROXY_URL` | `imgproxy` | Fangið sem vafrar ná imgproxy á, til dæmis `https://images.example.org`. `images`-sniðið gefur það út á `QUIRE_IMAGES_PORT` (8082) |
| `IMGPROXY_KEY`, `IMGPROXY_SALT` | `imgproxy` | Hex-strengir, sömu gildi og imgproxy er ræst með. Myndaðu hvorn með `openssl rand -hex 32`. Quire undirritar hvert myndfang með þeim, svo imgproxy myndar ekkert sem Quire bað ekki um |
| `QUIRE_IMAGE_SOURCE_ORIGIN` | `imgproxy` með staðbundinni geymslu | Hvaðan imgproxy sækir frumrit. Compose stillir `http://web:3000`. Með `s3` eða `azure` geymslu sækir imgproxy úr fötunni og þetta er ekki notað |
| `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_IMAGES_TOKEN`, `CLOUDFLARE_IMAGES_ACCOUNT_HASH` | `cloudflare` | API-tákn með Images-ritheimild, og reikningskjötkassinn frá Images, Þróunartilföngum. Kveiktu á sveigjanlegum afbrigðum fyrir reikninginn |
| `CLOUDFLARE_IMAGES_SIGNING_KEY` | `cloudflare` | Valfrjálst. Þegar stillt eru myndir einkamál og hvert fang er undirritað og rennur út. Án þess eru myndir opinberar á föngum leiddum frá `QUIRE_SECRET_KEY` sem enginn getur giskað |

Cloudflare Images heldur eigin afriti af hverju frumriti sem það þjónar. Þegar
skrá er eytt eyðir vinnsluvélin því afriti á undan frumritinu.

### Biðröð <!--quire:queue-->

Bakgrunnsverk nota pg-boss í sama Postgres-gagnagrunni, svo engin
biðraðaþjónusta er til að keyra og ekkert til að stilla. Verk eru sett í biðröð í sama
viðskipti og breytingin sem olli þeim, svo hrun getur hvorki týnt einu né
sent eitt tvisvar. `QUIRE_QUEUE_DRIVER` er `pgboss` hér, sjálfgefið þess; `vercel`
og `cloudflare` færa aðeins léttu tilkynninga- og vefkrókasendingarnar í
eigin biðröð vettvangsins, og Vercel- og Cloudflare-leiðbeiningarnar lýsa þeim
og hvernig vefþrep þeirra setja í biðröð.

### Tölvupóstur <!--quire:email-->

Stilltu annaðhvort:

- `QUIRE_EMAIL_PROVIDER_CONFIG`: JSON-hlut sem nefnir HTTP-veitu og
  auðkenni hennar, svo sem `{"provider":"postmark","token":"..."}`. Postmark,
  Amazon SES, Mailgun, SendGrid og Resend eru studd.
- `QUIRE_SMTP_URL`: `smtp://user:password@host:587`. Aðeins þetta markumhverfi; þjónustulausu
  markumhverfin loka á SMTP.

`QUIRE_MAIL_FROM` er sendandinn. Til að prófa Quire skaltu ræsa `devmail`-
sniðið, stilla `QUIRE_SMTP_URL=smtp://mailpit:1025`, og lesa póst á
`http://localhost:8025`.

### Valkvæmar þjónustur <!--quire:optional-services-->

| Stilling | Með sniði |
| --- | --- |
| `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` eða `QUIRE_MEILISEARCH_URL` | Ytri leit; annars fulltexti Postgres |
| `QUIRE_BREACH_CHECK_PROVIDER=off`, `QUIRE_BREACH_CHECK_URL` | Athugun lykilorðaleka. Kveikt sjálfgefið gagnvart `api.pwnedpasswords.com` (aðeins fimm stafa hash-forskeyti er sent); `off` slekkur á henni, og slóðin bendir á sviðsforritaskil sem þú hýsir |

### Sýnileiki <!--quire:observability-->

`OTEL_EXPORTER_OTLP_ENDPOINT` nefnir söfnunartækið sem hvert ferli sendir
spor og mæligildi til; með `observability`-sniðinu er það
`http://otelcol:4318`, og `docker/otel-collector.yaml` er þar sem þú bætir við
útflytjandanum fyrir bakendann þinn. Vefþrepið, vinnsluvélin, stýringin, efni og samvinna
flytja út spönn yfir OTLP/HTTP (vefbeiðnir, leigjendagagnagrunns-
viðskipti, vinnsluverk og útfararköll) þegar það er stillt, og mæligildi til
sama endapunkts á mínútu (`OTEL_METRICS_EXPORTER=none` slekkur á þeim).
`OTEL_TRACES_SAMPLER_ARG` stillir hlutfall spora sem haldið er. Annálar fara á staðal-
úttak við `LOG_LEVEL`, og Compose snýr þeim. Spor bera aldrei persónugreinanleg
gögn.

### Svæðisbundinn útfari (EU-gagnavarsla) <!--quire:regional-egress-eu-data-residency-->

`QUIRE_REGION=eu` segir að stakkinn þjóni stofnunum Evrópusambandsins.
Vinnsluvélin heldur þá hverri útfarabeiðni gerðri fyrir stofnun festri við
ESB við leyfilista (21-compliance.md kafli 8.1). Leyfilistinn er
hýslarnir sem stilltu þjónusturnar lýsa yfir fyrir svæðið (geymslu-
endapunkturinn, tölvupóstveitan, hýst myndbandsveita, eigin geymslumark
stofnunarinnar, gervigreindarveitur og tölvupóstreikningur), hýslar hverrar þjónustu
undir virkri undanþágu, og hýslarnir sem þú telur í
`QUIRE_EGRESS_ALLOW_HOSTS`. Beiðni til annars opinbers hýsils er hafnað
áður en hún er send, höfnunin er skrifuð í úttektarslóð stofnunarinnar sem
`privacy/egress_refused`, og hún er talin undir Samræmi, Gagnavarsla.

| Stilling | Gildi | Áhrif |
| --- | --- | --- |
| `QUIRE_EGRESS_ALLOW_HOSTS` | Kommulisti hýsilnafna, eða `*.example.org` fyrir hvert undirlén | Aukahýslar sem ESB-stofnun má ná til. Vefkróks-, xAPI- og SIEM-endapunktar, bloggstraumar og Amazon SES-hýslar eiga hér heima, því þeir eru eigið val stofnunar og engin þjónusta lýsir þeim yfir. Lykkja, einka vistföng og eins hluta nöfn svo sem `web` eða `clamav` eru þitt eigið net og eru aldrei athuguð |

Breskar og bandarískar stofnanir eru ekki haldnar við hýsilista; þær halda svæðis-
athugunum þjónustunnar. Stilltu listann á vinnsluvélinni; stjórnsíðan les hann á vefnum
þrepinu til að sýna leyfilistann, svo settu hann í `docker/.env`, sem hver þjónusta
les.

Forritsathugunin gefur skýra villu og úttektarfærslu, og hún er ekki
ábyrgðin: kóði getur verið rangur. Ábyrgðin er netið. Compose framfylgir
því ekki fyrir þig. Fyrir svæðisstakk skaltu setja `worker`- og `web`-
þjónusturnar á `internal: true` neti þar sem eina leiðin út er útfara-
milliþjónn (til dæmis Squid- eða tinyproxy-gámur) sem leyfir sömu hýsla
og `QUIRE_EGRESS_ALLOW_HOSTS` auk hýsla stilltra þjónustu þinna, og
stilltu `HTTPS_PROXY` fyrir þær þjónustur. Varslusíðan telur upp nákvæmlega
hýslana sem forritið leyfir, svo hægt er að bera listana tvo saman.

## Heilsa <!--quire:health-->

| Endapunktur | Merking |
| --- | --- |
| `/healthz` | Líf: ferlið svarar. Heilsuathuganir Compose nota þetta |
| `/readyz` | Viðbúnaður: háðir hlutar náanlegir, og hver valkvæm þjónusta meld sem stillt eða ekki. Beindu álagsdreifaranum þínum hingað |

`docker compose -f docker/compose.yaml ps` sýnir heilsu hverrar þjónustu.

## TLS <!--quire:tls-->

`proxy`-þjónustan (Caddy, Apache-2.0, `docker/caddy/Caddyfile`) er hluti af
sjálfgefna stakknum. Hún svarar á gáttum 80 og 443 og beinir:

| Hýsill eða slóð | Fer til |
| --- | --- |
| `QUIRE_PROXY_CONTENT_HOST` | `content` |
| `QUIRE_PROXY_APP_HOST`, hvert leigjendaundirlén og sérsniðið lén | `web` |
| `/_collab/` á þeim hýslum | `collab` (vefstokkur, `QUIRE_COLLAB_URL`) |
| `/_realtime/connection/` á þeim hýslum | Biðlaravefstokkur `centrifugo`; þjónsforritaskil þess eru aldrei afhjúpuð |
| `/_images/` á þeim hýslum | `imgproxy`, með `images`-sniðinu (`IMGPROXY_URL`) |

`init-env.sh` leiðir `QUIRE_PROXY_APP_HOST`, `QUIRE_PROXY_CONTENT_HOST`,
`QUIRE_PROXY_HTTPS_PORT`, `QUIRE_COLLAB_URL` og `IMGPROXY_URL` frá upprununum tveimur,
svo þeir geti ekki rekið í sundur. Breyttu þeim saman ef þú breytir
uppruna með hendi.

Skírteini fylgja `QUIRE_PROXY_TLS`:

- `internal` (sjálfgefið): Eigin útgefendastofnun Caddy, fyrir
  `localhost`, `*.localhost` og `lvh.me`. Treystu rótinni einu sinni, skoðaðu síðan:

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

  Bættu `quire-local-ca.crt` við traustbúð kerfisins eða vafrans. `curl`
  tekur hana með `--cacert`.
- Netfang: sjálfvirk ACME-skírteini (Let's Encrypt, síðan
  ZeroSSL) fyrir raunveruleg hýsilnöfn. DNS fyrir báða uppruna og hvern leigjendahýsil
  verður að benda hingað, og gáttir 80 og 443 verða að vera náanlegar af internetinu.

Leigjendahýslar eru gefnir út við þörf, við fyrstu heimsókn, og aðeins þegar vefur
staðfestir að nafnið tilheyri þessari uppsetningu (`/tls-allowed`, spurt á
Compose-netinu). Engin joktatáknsskírteini eða DNS-veituviðbót er þörf,
og ókunnugur sem bendir nafni á hýsilinn getur ekki látið hann biðja um
skírteini. Skírteini og staðbundna stofnunin lifa í
`caddy-data` bindinu; taktu öryggisafrit af því með hinu ef þú notar `internal`.

Vefur trúir `X-Forwarded-For` frá milliþjóninum einum: milliþjónninn hefur fast
fang (`QUIRE_PROXY_ADDRESS`, sjálfgefið `172.29.64.10`) á föstu undirneti
(`QUIRE_COMPOSE_SUBNET`), og `QUIRE_TRUSTED_PROXY_CIDRS` nefnir það fang.
Ef undirnetið rekst á net á hýsilnum skaltu breyta báðum og keyra
`docker compose down` fyrir `up`.

## Bak við eiginn öfugan milliþjón <!--quire:behind-your-own-reverse-proxy-->

Til að nota álagsdreifara eða milliþjón sem þú þegar rekur í staðinn skaltu sleppa `proxy`
(`docker compose up -d --scale proxy=0`) og enda TLS framan við `web`
(8080), `content` (8081), `collab` (1234, vefstokkur) og `centrifugo` (8000,
vefstokkur). Stilltu opinberu föngin í `QUIRE_APP_ORIGIN`,
`QUIRE_CONTENT_ORIGIN` og `QUIRE_COLLAB_URL` (`wss://`), og vistfangssvið
milliþjóns þíns í `QUIRE_TRUSTED_PROXY_CIDRS`.

## Úrræðaleit <!--quire:troubleshooting-->

- `init` hættir með „QUIRE_DATABASE_ID is not a UUID“: stilltu það með `uuidgen`.
- `web` endurræsir með „did not start on compose“: annállinn telur upp hverja stillingu
  sem hann getur ekki virt og hvað á að nota í staðinn.
- Breyting á hlutverkslykilorði í `.env` eftir fyrstu ræsingu gerir ekkert: frumstillingar-
  skriftan keyrir einu sinni. Notaðu `ALTER ROLE`.
- Upphlöð bilar með skönnunarvillu meðan `CLAMAV_URL` er stillt: ClamAV sækir
  undirskriftir sínar við fyrstu ræsingu, sem tekur nokkrar mínútur.

Source: https://docs.quirelms.com/is/ops/install/index.mdx
