Tsallaka zuwa abin da ke ciki

Shigar da Quire da Docker Compose

Shigar da Quire a kayayyakin more rayuwarka tare da Docker Compose.

Wannan shi ne cikakken samfurin a uwar garke ɗaya: tsarin LMS, ayyukan baya, hidimomin ainihin-lokaci da gyaran haɗin gwiwa, da kowane hidima na zaɓi a bayan profile. Tsarin yana cikin sashen 2 na docs/architecture/23-ops.md.

Sauran manufa: Vercel da Cloudflare Workers suna gudanar da sashen yanar gizo kawai. Ana bayani kan sabuntawa a upgrade.md, kuma ajiyar bayanai da atisayen maido a backup-restore.md.

Abin da ake buƙata

  • Docker Engine 27 ko sama, tare da Compose plugin 2.30 ko sama.
  • Cores 4 na CPU da ƙwaƙwalwar 8 GB ga tsarin tsoho; cores 8 da ƙwaƙwalwar 16 GB tare da --profile full (ClamAV shi kaɗai yana riƙe kusan 1.5 GB na sa hannun cuta).
  • Sunan DNS ga sashen yanar gizo da wani na biyu ga abun ciki marar amana. Dole su zama hosts daban: kunshin SCORM da HTML da aka loda suna gudana daga asalin abun ciki domin kada su taɓa karanta kukis na LMS.
  • Don gwajin gida, lvh.me da *.localhost suna warwarewa zuwa 127.0.0.1, kamar yadda docker/.env.example ke amfani da shi. Hidimar proxy ta tsarin tana samar da HTTPS ga duka tare da cibiyar takardar shaida ta gida, saboda haka babu abin girkawa dabam (duba “TLS”).
  • Tashoshi 80 da 443 su kasance a buɗe a uwar garken (QUIRE_PROXY_HTTP_PORT da QUIRE_PROXY_HTTPS_PORT na iya sauya su).

Gudanarwa ta farko

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 yana rubuta docker/.env daga docker/.env.example da dukkan sirrika da aka ƙirƙira (kalmomin sirrin ma’ajiya, maɓallan sa hannu da babba, maɓallan abun ciki), da maɓallin sa hannun matakin tantancewa a docker/secrets/audit-signing-key.pem, wanda Compose ke haɗawa da masu aiki a matsayin sirri. Yana buƙatar sh, awk da openssl kawai, kuma yana ƙin rubuta kan docker/.env da ya riga ya wanzu. Kwafi fayilolin biyu zuwa wajen uwar garken: idan babu QUIRE_MASTER_KEY, ma’ajiya da aka dawo ba za ta iya warware shaidar shiga da aka adana ba. Don cika fayil ɗin da hannu, yi cp docker/.env.example docker/.env; fayil ɗin yana bayyana yadda ake ƙirƙirar kowane sirri.

Dole asalin adireshin biyu su zama https: hidimar abun ciki tana ƙin http mara tsaro a yanayin samarwa, kuma dole kada su kasance a ƙarƙashin yankin da za a iya rajista iri ɗaya. Hidimar proxy ce ke kare su da TLS (duba “TLS”); init-env.sh yana ƙin asalin http://.

Tsarin yana farawa bisa tsayayyen jeri, kuma kowane mataki yana jiran wanda ya gabace shi:

  1. postgres yana nuna lafiya. A farawa na farko, rubutun saita shi (docker/postgres/init/90-passwords.sh) yana saita kalmomin sirri guda huɗu.
  2. migrate yana aiwatar da duk ƙaura, sannan yana shirya jerin aiki a ma’ajiya ta sarrafawa da kowace ma’ajiya ta ƙungiya ta musamman; yana tabbatar sun yi daidai, daga nan ya fita (docs/ops/upgrade.md). Ana gudanar da ƙaura a kowane farawa kuma ba sa maimaita tasiri, saboda haka sabuntawa sabon hoto ne da sake farawa.
  3. init (apps/web/src/first-run.ts) yana rajistar ma’ajiya ta manhaja a ƙarƙashin QUIRE_DATABASE_ID, kuma idan an saita QUIRE_SETUP_ADMIN_EMAIL, yana ƙirƙirar ƙungiya ta farko da mai gudanarwarta. Ana buga adireshin shiga da kalmar sirri da aka ƙirƙira sau ɗaya a docker compose logs init.
  4. web, content, worker, scheduler, collab da centrifugo suna farawa.
  5. proxy yana farawa idan web da content sun nuna lafiya.

Buɗe https://demo. tare da yankin manhajarka (log na init yana nuna ainihin adireshin shiga), sannan shiga. A girkar gida, fara amincewa da cibiyar takardar shaida ta proxy (duba “TLS”). Canza kalmar sirrin da aka ƙirƙira a /account/security.

Tsarin da aka fara ba tare da sirrin da ake buƙata ba yana ƙin farawa kuma ya ambaci saitin da ya ɓace a log. Babu abin da ke farawa da saituna rabin-girma.

Hidimomi da profiles

Hidima Profile Aikinta
postgres kullum Ma’ajiya (PostgreSQL 18 da pgvector, an gina daga docker/postgres.Dockerfile), WAL kuma ana adanawa tun farawa na farko
migrate, init kullum Sau ɗaya: ƙaura, sannan farawa ta farko
web kullum LMS, a QUIRE_HTTP_PORT (8080)
content kullum Asalin abun ciki marar amana, a QUIRE_CONTENT_PORT (8081)
worker kullum Ayyukan baya: imel, rahotanni, sarrafa fayiloli, webhooks
scheduler kullum Ayyukan da ake maimaitawa: yana rajistar jadawalin lokacin aiki 64 ya miƙa su ga mai aiki; shugaba ɗaya a lokaci guda
collab kullum Websocket na gyaran haɗin gwiwa a QUIRE_COLLAB_HTTP_PORT (1234)
centrifugo kullum Rarraba abubuwan ainihin-lokaci a QUIRE_REALTIME_PORT (8000)
proxy kullum Caddy, ƙofar TLS a tashoshi 80 da 443 (duba “TLS”)
valkey cache Ma’ajiyar wucin gadi da iyakokin sauri
clamav scan Binciken malware a abin da aka loda
gotenberg preview Samfotin takardar Office zuwa PDF, samar da takardun shaida
imgproxy images Sake girma da sauya hotuna
transcoder video Hoton mai aiki mai ffmpeg ƙarƙashin LGPL kawai, don siffofin bidiyo
seaweedfs storage Ma’ajiyar abu mai dacewa da S3 a wannan uwar garke
otelcol observability Mai tattara bayanan OpenTelemetry
mailpit devmail Karɓar duk imel mai fita domin gwada Quire
backup backup Ajiyar tushe sau ɗaya; duba backup-restore.md
backup-scheduler, backup-offsite backup Ajiyar tushe duk bayan QUIRE_BACKUP_INTERVAL_HOURS, da kwafi ɓoyayye a wajen uwar garke tare da gwajin tantancewa na mako-mako
h5p h5p Hoton kayan H5P LTI 1.3 da ka bayar a QUIRE_H5P_IMAGE, a QUIRE_H5P_PORT (8090); duba “Haɗa mai samar da H5P”

--profile full yana fara kowace hidima ta zaɓi sai backup da h5p. Fara ɗaya da docker compose -f docker/compose.yaml --profile scan up -d. Ba tare da hidimar zaɓi ba, Quire yana aiki kuma yana bayyana abin da babu: babu mai binciken malware yana nufin ana adana loda ba tare da dubawa ba kuma ana sanar da mai gudanarwa; babu Gotenberg yana sa fayiloli su bayar da saukewa maimakon samfoti; babu mai canza bidiyo yana kunna asalin fayil ɗin bidiyo.

An lissafa dukkan hotunan wasu ɓangarori da wajibcin lasisinsu a docker/third-party-containers.yaml.

Haɗa mai samar da H5P

Quire ba ya haɗawa ko bayar da injin H5P ko ƙarin sabis (ADR 0019). Idan kana amfani da H5P, samar da rajistar masaukin girgije naka ko gudanar da naka H5P dabam da Quire. Yi masa rajista a matsayin kayan LTI 1.3 na waje, sannan ƙara abun cikinsa ga kwasa-kwasai a matsayin ayyukan kayan aiki. Quire yana musayar maki da ci gaban aiki/tantancewa ta LTI Assignment and Grade Services (AGS). Idan mai samarwa kuma yana aika kalaman xAPI, saita wannan daban ga ma’ajiyar kalaman xAPI ta Quire; musayar maki/ci gaba ta AGS ba ta aika kalaman xAPI ba. Shigo da Moodle yana bayyana cewa ayyukan H5P suna buƙatar haɗin kayan LTI. Mai samarwa ne har zuwa ƙarshe ke da alhakin injin H5P, rubuta abun ciki, ma’ajiyar abun ciki da tarihin ƙoƙari.

Domin gudanar da naka H5P a wannan uwar garke, saita QUIRE_H5P_IMAGE zuwa hotonsa kuma fara profile na h5p. Compose yana buɗe shi a QUIRE_H5P_PORT (8090) ya adana bayanansa a volume na h5p-data; hoton da wajibcinsa naka ne.

Saituna

Kowane tsari yana karanta docker/.env. Samfurin docker/.env.example yana lissafa kowane saiti da tsohonsa. Ƙungiyoyin:

Adiresoshi

Saiti Ma’ana
QUIRE_APP_ORIGIN Adireshin jama’a na LMS, kamar https://learn.example.com
QUIRE_CONTENT_ORIGIN Asalin abun ciki, wani host dabam
QUIRE_PLATFORM_DOMAINS Yankunan da ƙungiyoyi suke, an raba da waƙafi
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 a nan. Duba sauran jagororin vercel da cloudflare
QUIRE_TRUSTED_PROXY_CIDRS Wakilan baya da aka amince da X-Forwarded-For nasu

Sirrika

Saiti Ma’ana
QUIRE_SECRET_KEY Yana sa hannu ga zaman shiga da alamomi. Haruffan hex 64
QUIRE_MASTER_KEY Yana lulluɓe shaidar shiga da aka adana kamar SSO da sirrin webhook. Bytes 32, base64. Dole sashen yanar gizo da mai aiki su yi amfani da ƙima iri ɗaya. Juya maɓalli: key-rotation.md
QUIRE_MASTER_KEY_VERSION Alamar sigar maɓallin babba, v1 idan ba a saita ba. Ɗaga ta idan ka juya maɓalli
QUIRE_MASTER_KEY_RETIRED Tsofaffin maɓallan da ake buƙata domin karanta abin da suka kulle, a matsayin v1=<base64>. Cire bayan kammala juyawa ba tare da abin da ba a warware ba
QUIRE_COLLAB_SIGNING_KEY Yanar gizo da collab suna rabawa domin sa hannu ga alamomin gyara
QUIRE_BACKUP_SIGNING_KEY Yana sa hannu ga ajiyar kwafin kwas (zaɓi ne)

Riƙe kwafin QUIRE_MASTER_KEY a wani wuri dabam da wannan uwar garke. Ma’ajiya da aka dawo ba za ta iya warware shaidar shiga da take riƙe ba idan babu shi.

Ma’ajiya

Saiti Ma’ana
POSTGRES_PASSWORD Superuser, kwantena da ajiyar bayanai ne ke amfani da shi
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Kalmomin sirrin matsayi, ana saita su a farawa na farko
DATABASE_URL Matsayin manhaja. Ana amfani da tsaron matakin layi ga kowace tambaya
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Matsayin mai ƙaura, ga migrate da init
QUIRE_SUPERUSER_URL Farawa ta farko ce kawai ke amfani da shi
QUIRE_REPORT_DATABASE_URL Matsayin rahoto karatu-kawai, ga rahotanni da mai gina rahoto
QUIRE_AUDIT_DATABASE_URL Matsayin tantancewa, ga na’urar tantancewa da fitar da SIEM
QUIRE_DATABASE_ID Kowane UUID, ba ya canzawa tsawon rayuwar shigarwa

Ana amfani da kalmomin sirrin matsayi ne idan an ƙirƙiri volume na ma’ajiya a farkon lokaci. Domin canza ɗaya daga baya, yi amfani da ALTER ROLE, sannan sabunta URL mai dacewa.

QUIRE_REPORT_DATABASE_URL na ma’ajiya ta zahiri ce da DATABASE_URL ya nuna. Ga kowace ma’ajiya ta zahiri da aka yi rajista, saita nata URL na haɗin quire_report a muhallin yanar gizo da mai aiki, sannan saka sunan sauyin yanayi a filin Sauyin yanayin rahoto na ma’ajiyar a matsayin env:NAME. Dole nuni ya nuna ma’ajiya ɗaya da haɗin manhajar, zai fi kyau kwafin karatunta. Kowane fuskar rahoton tana bin ƙungiya zuwa haɗin rahoto na ma’ajiyarta: mai gina rahoto da rahotonnin da aka adana, isarwar jadawali, fitar da rahoto, nazari, rajistar tantancewa, albarkatun tantancewar REST da binciken tantancewa na mataimaki. Babu wanda ke aron URL na rahoton wata ma’ajiya. Idan ma’ajiya ba ta da haɗin rahoto, rahotanni na yau da kullum suna gudana ta haɗin manhajar ma’ajiyar kanta; amma nazari da duk karatun tantancewa suna ƙin aiki su faɗi dalili, domin matsayin manhaja ba zai iya karanta tarihin tantancewa ba.

Na’urorin aiki

Saiti Ƙimomin wannan siga Bayanan kula
QUIRE_STORAGE_DRIVER local (tsoho), s3 ko azure local yana adana fayiloli a volume na files. s3 yana haɗa AWS S3, R2, GCS da sauran ma’ajiyoyi masu dacewa da S3 tare da lodawa da za a ci gaba daga inda aka tsaya
QUIRE_REALTIME_DRIVER inprocess (tsoho), sse, centrifugo ko durable_objects inprocess ya dace da kwantena yanar gizo ɗaya; yi amfani da centrifugo ko sse idan sun fi ɗaya
QUIRE_CACHE_DRIVER memory (tsoho), postgres ko valkey memory na tsari ɗaya ne; yi amfani da valkey ko postgres domin iyakar sauri ta shafi kwantena gaba ɗaya
QUIRE_VIDEO_DRIVER ffmpeg (tsoho) ko progressive_mp4 Ko mai samarwa na masaukin girgije: Cloudflare Stream, Mux ko Bunny, ta amfani da maɓallansu
QUIRE_IMAGE_DRIVER noop (tsoho), imgproxy ko cloudflare noop yana bayar da hoto da girmansa na asali. imgproxy yana buƙatar profile na images da saitunan da ke ƙasa; cloudflare yana amfani da Cloudflare Images
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi ko in_process Tsohon mai samar da zaman kai tsaye na dandamali. Idan babu, ana faɗin cewa zaman kai tsaye ba a saita ba, har sai ƙungiya ta haɗa asusunta ƙarƙashin haɗin kai na mai samar da zaman. Asusun ƙungiya ya fi wannan ƙima a ko da yaushe. Ana karanta saitunan kowane mai samarwa (BBB_URL da BBB_SECRET, masu canjin ZOOM_*, TEAMS_*, GOOGLE_MEET_* da JITSI_*) ne kawai ga mai samarwar da aka ambata a nan
QUIRE_MEETING_REGIONS Jerin eu, uk, us da aka raba da waƙafi Inda tsohon mai samarwar dandamali ke sarrafa taro. Idan babu, ba a gwada shi da ƙungiyar da aka kayyade ga yanki, kamar da. Asusun ƙungiya yana bayyana yankunansa a shafinsa

Ana ƙin ƙimar na’urar da wannan siga ba ta ƙunsa ba yayin farawa na sashen yanar gizo, tare da ambaton saitin, maimakon a maye gurbinsa a ɓoye da tsohon ƙima.

Hotuna

Shafuka suna neman hotuna a girma huɗu tabbatattu ta /api/files/{id}/image/{size}, wanda ke duba izinin shiga iri ɗaya da fayil ɗin sannan ya karkatar zuwa hidimar hoto. Kowace ƙungiya na iya neman sabbin haɗin hoto da girma QUIRE_IMAGE_SPECS_PER_HOUR (tsoho 2000) a awa guda; ba a ƙirga girman da aka riga aka samar a wannan awa ba. Yi amfani da valkey ko postgres ga QUIRE_CACHE_DRIVER idan akwai kwantena yanar gizo fiye da ɗaya, domin iyakar ta yi aiki a cikinsu.

Saiti Na’urar aiki Bayanan kula
IMGPROXY_URL imgproxy Adireshin da burauza ke amfani da shi wajen isa imgproxy, misali https://images.example.org. Profile na images yana wallafa shi a QUIRE_IMAGES_PORT (8082)
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Zaren hex, ƙimomin da aka fara imgproxy da su. Samar da kowanne ta openssl rand -hex 32. Quire yana sa hannu ga kowane adireshin hoto da su, saboda haka imgproxy ba ya samar da abin da Quire bai nema ba
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy mai ajiyar gida Inda imgproxy ke samo asalin hotuna. Compose yana saita http://web:3000. Idan ajiyar s3 ko azure ce, imgproxy yana ɗauko daga bokiti kuma ba ya amfani da wannan
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Alamar API mai izinin gyara Images, da hash na asusu daga Images, Developer resources. Kunna variants masu sassauci ga asusun
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare Zaɓi ne. Idan an saita, hotuna na sirri ne kuma kowane adireshi yana da sa hannu kuma yana ƙarewa. Idan babu, hotuna na jama’a ne a adireshin da aka samo daga QUIRE_SECRET_KEY waɗanda ba za a iya hasashensu ba

Cloudflare Images yana riƙe kwafin asalin kowane hoto da yake bayarwa. Idan an share fayil, mai aiki yana share wannan kwafi kafin asalin.

Jerin aiki

Ayyukan baya suna amfani da pg-boss a wannan ma’ajiya ta Postgres, saboda haka babu hidimar jerin aiki da za a gudanar ko saitawa. Ana sanya aiki cikin jerin a cikin ma’amala ɗaya da canjin da ya haifar da shi, don haka katsewa ba zai rasa shi ko aika shi sau biyu ba. QUIRE_QUEUE_DRIVER shi ne pgboss a nan, tsohonsa; vercel da cloudflare suna matsar da sanarwa da isar da webhook masu sauƙi kawai zuwa jerin aiki na dandalinsu, kuma jagororin Vercel da Cloudflare suna bayyana su da yadda sassan yanar gizonsu ke saka ayyuka.

Imel

Saita ɗaya daga cikin:

  • QUIRE_EMAIL_PROVIDER_CONFIG: abun JSON mai nuna mai samar da HTTP da shaidar shiga, kamar {"provider":"postmark","token":"..."}. Ana goyon bayan Postmark, Amazon SES, Mailgun, SendGrid da Resend.
  • QUIRE_SMTP_URL: smtp://user:password@host:587. Wannan manufa kaɗai ce; manufofin serverless suna toshe SMTP.

Mai aikawa shi ne QUIRE_MAIL_FROM. Domin gwada Quire, fara profile na devmail, saita QUIRE_SMTP_URL=smtp://mailpit:1025, sannan karanta imel a http://localhost:8025.

Hidimomi na zaɓi

Saiti Tare da 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 ko QUIRE_MEILISEARCH_URL Bincike na waje; idan babu, rubutu cikakke na Postgres
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Duba kalmar sirri da ta fallasa. A kunne ta tsoho zuwa api.pwnedpasswords.com (gajerun haruffan hash biyar ne ake aikawa); off yana kashewa, URL kuma yana nuna API na kewayo da kake gudanarwa

Sa ido

OTEL_EXPORTER_OTLP_ENDPOINT yana nuna mai tattarawa da kowane tsari ke aika bibiyoyi da ma’aunai zuwa gare shi; tare da profile na observability shi ne http://otelcol:4318, kuma docker/otel-collector.yaml shi ne inda za ka ƙara mai fitar da bayanai na tsarinka. Idan an saita shi, sashen yanar gizo, mai aiki, mai tsara aiki, abun ciki da collab suna fitar da spans ta OTLP/HTTP (buƙatun yanar gizo, ma’amalolin ma’ajiya ta ƙungiya, ayyukan ma’aikaci da kiran waje), kuma suna aika ma’aunai zuwa wannan wuri kowane minti (OTEL_METRICS_EXPORTER=none yake kashe su). OTEL_TRACES_SAMPLER_ARG yana saita rabon bibiyoyin da za a riƙe. A LOG_LEVEL, ana aika log zuwa daidaitaccen fitarwa, Compose kuma yana juya su. Bibiyoyi ba sa ɗaukar bayanan mutum.

Fitar da bayanai bisa yanki (zama a EU)

QUIRE_REGION=eu yana nuna cewa tsarin yana yiwa ƙungiyoyin Tarayyar Turai hidu. Mai aiki yana riƙe duk buƙatun waje da aka yi wa ƙungiyar da aka kayyade ga EU bisa jerin izini (sashen 8.1 na 21-compliance.md). Jerin izini ya ƙunshi hosts da hidimomin da aka saita suka bayyana ga yankin (ƙarshen ma’ajiya, mai aika imel, mai samar da bidiyo na masaukin girgije, wuraren ajiyar ƙungiya, masu samar da AI da asusun imel), hosts na kowace hidima a ƙarƙashin keɓancewa mai aiki, da hosts ɗin da ka lissafa a QUIRE_EGRESS_ALLOW_HOSTS. Ana ƙin buƙatar zuwa wani host na jama’a kafin aikawa, ana rubuta ƙin a tarihin tantancewar ƙungiya a matsayin privacy/egress_refused, kuma ana lissafa shi ƙarƙashin Compliance, Data residency.

Saiti Ƙimomi Tasiri
QUIRE_EGRESS_ALLOW_HOSTS Jerin sunayen host da aka raba da waƙafi, ko *.example.org ga duk ƙananan yankuna Ƙarin hosts da ƙungiyar EU za ta iya kaiwa. Hanyoyin ƙarshen webhook, xAPI da SIEM, ciyarwar blog da hosts na Amazon SES suna nan, domin zaɓin ƙungiya ne kuma babu hidimar da ke bayyana su. Adireshin madauwari, masu zaman kansu da sunan lakabi ɗaya kamar web ko clamav na hanyar sadarwarka ne kuma ba a taɓa bincika su

Ba a tilasta wa ƙungiyoyin UK da US jerin hosts; duba yankin hidima yana aiki garesu. Saita jerin ga mai aiki; shafin mai gudanarwa yana karanta shi a sashen yanar gizo domin nuna jerin, saboda haka saka shi a docker/.env, wanda kowane hidima ke karantawa.

Dubawar manhaja tana ba da kuskure bayyananne da shigarwar tantancewa, amma ba ita ce tabbaci ba: lamba na iya yin kuskure. Hanyar sadarwa ce tabbaci. Compose ba ya tilasta wannan. Ga tsarin yanki, saka hidimomin worker da web a hanyar sadarwa internal: true wadda hanya ɗaya tak zuwa waje ita ce wakilin fitar da bayanai (misali kwantenar Squid ko tinyproxy), wanda ke ba da izini ga hosts iri ɗaya da QUIRE_EGRESS_ALLOW_HOSTS tare da hosts na hidimomin da ka saita; sannan saita HTTPS_PROXY ga waɗannan hidimomin. Shafin zama a yanki yana lissafa ainihin hosts ɗin da manhaja ta yarda, saboda haka ana iya kwatanta jerin biyun.

Lafiya

Wurin ƙarshe Ma’ana
/healthz Rai: tsari yana amsawa. Gwajin lafiyar Compose yana amfani da wannan
/readyz Shiri: dogarori suna samuwa, kuma an bayar da rahoton ko an saita kowane hidima na zaɓi. Sanya mai rarraba zirga-zirga ya duba nan

docker compose -f docker/compose.yaml ps yana nuna lafiyar kowane hidima.

TLS

Hidimar proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile) tana cikin tsarin tsoho. Tana amsawa a tashoshi 80 da 443, tana turawa zuwa:

Host ko hanya Ana kaiwa ga
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, kowane ƙaramin yankin ƙungiya da yankin musamman web
/_collab/ a waɗannan hosts collab (websocket, QUIRE_COLLAB_URL)
/_realtime/connection/ a waɗannan hosts websocket na abokin centrifugo; ba a taɓa buɗe API na uwar garken ba
/_images/ a waɗannan hosts imgproxy, tare da profile na images (IMGPROXY_URL)

init-env.sh yana samo QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL da IMGPROXY_URL daga asalin biyu, don haka ba sa rabuwa. Gyara su tare idan ka canza asali da hannu.

Takardun shaida suna bin QUIRE_PROXY_TLS:

  • internal (tsoho): cibiyar takardar shaidar Caddy, ga localhost, *.localhost da lvh.me. Amince da tushe sau ɗaya sannan ka shiga:

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

    Ƙara quire-local-ca.crt zuwa ma’ajiyar amincewar tsarin ko burauza. curl yana karɓarsa ta --cacert.

  • Adireshin imel: takardun ACME na atomatik (Let’s Encrypt, sannan ZeroSSL) ga ainihin sunayen hosts. Dole DNS na asali biyu da kowane host na ƙungiya su nuna nan, tashoshi 80 da 443 kuma su kasance a buɗe daga intanet.

Ana bayar da takardar host na ƙungiya bisa buƙata, a ziyarar farko, kuma sai idan web ya tabbatar sunan na wannan shigarwa ne (/tls-allowed, ana tambayarsa a hanyar Compose). Ba a buƙatar takardar wildcard ko plugin na mai samar da DNS, kuma baƙon da ya sa suna ya nuna uwar garken ba zai iya sa a nema masa takarda ba. Takardu da cibiyar amincewar gida suna cikin volume na caddy-data; yi musu ajiyar bayanai tare da sauran idan kana amfani da internal.

web yana amincewa da X-Forwarded-For daga wakilin baya kaɗai: wakilin yana da tsayayyen adireshi (QUIRE_PROXY_ADDRESS, tsoho 172.29.64.10) a ƙaramin yanki tsayayye (QUIRE_COMPOSE_SUBNET), kuma QUIRE_TRUSTED_PROXY_CIDRS yana bayyana wannan adireshin. Idan ƙaramin yanki ya yi karo da hanyar sadarwa a uwar garken, canza su duka biyu sannan gudanar da docker compose down kafin up.

Bayan wakilin baya naka

Domin amfani da mai rarraba zirga-zirga ko wakili da kake gudanarwa, bar proxy a kashe (docker compose up -d --scale proxy=0) sannan kawo ƙarshen TLS a gaban web (8080), content (8081), collab (1234, websocket) da centrifugo (8000, websocket). Saita adireshin jama’a a QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN da QUIRE_COLLAB_URL (wss://), da iyakar adireshin wakilinka a QUIRE_TRUSTED_PROXY_CIDRS.

Gyara matsaloli

  • init ya fita da “QUIRE_DATABASE_ID is not a UUID”: saita shi da uuidgen.
  • web yana sake farawa da “did not start on compose”: log yana lissafa kowane saiti da ba zai iya amfani da shi ba da abin da za a saita a madadinsa.
  • Canza kalmar sirrin matsayi a .env bayan farawa na farko ba ya yin komai: rubutun saitawa sau ɗaya ne kawai ke gudana. Yi amfani da ALTER ROLE.
  • Loda yana kasa da kuskuren binciken cuta yayin da aka saita CLAMAV_URL: ClamAV yana sauke sa hannunsa a farkon farawa, wannan yana ɗaukar ’yan mintuna.
Kewayawa

Rubuta don nema…

↑↓ kewaya↵ zaɓaEsc rufe