Mandehana any amin'ny votoaty fototra

Fampetrahana Quire amin'ny Docker Compose

Mampetraha Quire eo amin'ny fitaovinao manokana amin'ny Docker Compose.

Ity ny rindrina feno amin’ny mpandray anjara iray: ny LMS, ny asany anaty, ny serivisy mivantana sy fanoratana miaraka, ary serivisy safidy rehetra ao amin’ny profile. Ny drafitra dia ao amin’ny docs/architecture/23-ops.md singa 2.

Sehatra hafa: ny Vercel sy ny Cloudflare Workers dia miasa amin’ny sehatra ve-dalana ihany. Ao amin’ny upgrade.md ny fanavaozana, ary ao amin’ny backup-restore.md ny backup sy ny fandinihan’ny famerenana.

Inona ilaina

  • Docker Engine 27 na ambony kokoa miaraka amin’ny plugin Compose 2.30 na ambony kokoa.
  • 4 core CPU sy 8 GB fizotra ho an’ny stack fototra; 8 core sy 16 GB amin’ny --profile full (ny ClamAV irery dia misy akaiky 1.5 GB famantarana).
  • Anarana DNS ho an’ny sehatra ve-dalana iray sy hafa ho an’ny votoaty tsy antoka. Tokony samy mpandray anjara izy roa: ny pakety SCORM sy ny HTML nampidirina dia miasa ao amin’ny loharanon’ny votoaty ka tsy afaka mamaky ny cookie an’ny LMS mihitsy.
  • Ho an’ny fandinihana anaty, lvh.me sy *.localhost dia mifantoha amin’ny 127.0.0.1, izay ampiasan’ny docker/.env.example. Ny serivisy proxy manokan’ny stack dia mome roa amin’ny https amin’ny alàlan’ny mpandray anjaran’ny serivera anaty, ka tsy misy hafa apetraka (jereo ny “TLS”).
  • Samy feno ny 80 sy 443 ao amin’ny mpandray anjara (QUIRE_PROXY_HTTP_PORT sy QUIRE_PROXY_HTTPS_PORT no manova azy).

Fandraisana voalohany

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 dia manoratra docker/.env avy amin’ny docker/.env.example misy ny teny miafina tsirairay natao (tenimialàn’ny data-by, kiteny marinana sy lehibe, sampan-panjakan’ny fanombohana votoaty) ary ny kiteny marinana fitsarin’ny fetran’ny fanamarinana ao amin’ny docker/secrets/audit-signing-key.pem, izay apetrakain’i Compose eo amin’ny mpandray asa ho teny miafina. Mila sh, awk ary openssl ihany izy, ary tsy manoratra amin’ny anatiny ny docker/.env efa misy. Akarao ny karatra roa avy amin’ny mpandray anjara: tsy afaka manala ny mombamomba alefa voatahiriny ny data-by mamerina raha tsy misy QUIRE_MASTER_KEY. Hanoratra anaty ilay rakitra manokana, cp docker/.env.example docker/.env; misy fomba namoronana ny teny miafina tsirairay ao amin’ny rakitra.

Tsy maintsy https ny loharano roa: manakana ny http tsotra amin’ny fiasa ny serivisy votoaty, ary tsy maintsy samy anaran-tsehatra azo resahaina. Ny serivisy proxy no mamaritra TLS ho an’ny roa (jereo ny “TLS”); ny init-env.sh no manakana loharano http://.

Manomboka amin’ny filaharana voafaritra ny stack, ary miandry ny taloha ny dingana tsirairay:

  1. Mahomby ny postgres. Amin’ny fiaingana voalohany dia metrahana ny tenimialàna ny scriptiny (docker/postgres/init/90-passwords.sh).
  2. Mampiasa ny fiovana rehetra sy mamorona filaharan’ny asa ao amin’ny data-by fifehezana sy data-by mpanjifa manokana tsirairay ny migrate, manamarina fa mifankahazo izy rehetra, ary mivoaka (docs/ops/upgrade.md). Miasa ny fiovana isaky ny fiaingana ary idempotenty, ka ny fanavaozana dia sary vaovao sy fanakorontana.
  3. Ny init (apps/web/src/first-run.ts) dia mitadika ny data-by an’ny fampiharana amin’ny QUIRE_DATABASE_ID ary, raha nosetina ny QUIRE_SETUP_ADMIN_EMAIL, dia mamorona ny organizasa voalohany sy ny mpikarakarany. Aseho indray amin’ny docker compose logs init ny adiresy fidirana sy ny tenimialàna natao.
  4. Manomboka ny web, content, worker, scheduler, collab ary centrifugo.
  5. Manomboka ny proxy rehefa mahomby ny web sy content.

Sokafy https://demo. arahin’ny anaran’ny rindrinao (ny log an’ny init dia mampiseho ny adiresy fidirana marina), ary miditra. Amin’ny fampidirana anaty, manankatoavana aloha ny mpandray anjaran’ny fanamarinana an’ny proxy (jereo ny “TLS”). Ovao ny tenimialàna natao amin’/account/security.

Ny rindrina tsy misy teny miafina ilaina dia tsy manomboka ary manambara ao amin’ny log ny filàlana very. Tsy manomboka raha tsy voatsara tanteraka na inona na inona.

Serivisy sy profile

Serivisy Profile Inona no asany
postgres foana Ny data-by (PostgreSQL 18 amin’ny pgvector, natao avy amin’ny docker/postgres.Dockerfile), misy WAL arsivina avy amin’ny fiaingana voalohany
migrate, init foana Indray ihany: fiovana, avy eo fandraisana voalohany
web foana Ny LMS, ao amin’ny QUIRE_HTTP_PORT (8080)
content foana Ny loharanon’ny votoaty tsy antoka, ao amin’ny QUIRE_CONTENT_PORT (8081)
worker foana Asa anaty: mailaka, tatitra, fanitsakitsahana rakitra, webhook
scheduler foana Asa manaraka: mitadika ny fandaminana 64 an’ny runtime ary manome azy ireo ho an’ny mpandray asa; olona iray mitondra isaky ny fotoana
collab foana Websocket fanoratana miaraka, ao amin’ny QUIRE_COLLAB_HTTP_PORT (1234)
centrifugo foana Fanzarana mivantana, ao amin’ny QUIRE_REALTIME_PORT (8000)
proxy foana Caddy, varavarankely TLS ao amin’ny 80 sy 443 (jereo ny “TLS”)
valkey cache Cache sy fetra fotoana
clamav scan Fanadihadiana rindrina mamimono ny tahirina
gotenberg preview Jereo Office ho PDF, famoronana taratasy fanamarinana
imgproxy images Svoatsindry sy novana
transcoder video Ny sary an’ny mpandray asa misy ffmpeg LGPL ihany, ho an’ny endriky ny video
seaweedfs storage Tahirin-entana mifanaraka amin’ny S3 ao amin’io mpandray anjara io
otelcol observability Mpangataka OpenTelemetry
mailpit devmail Maka mailaka rehetra mitohy, ho fanandramana Quire
backup backup Backup fototra indray ihany; jereo ny backup-restore.md
backup-scheduler, backup-offsite backup Backup fototra isaky ny QUIRE_BACKUP_INTERVAL_HOURS, ary sary mampiasa avy any ivelany misy fandinihana famaritana isan-kerinandro
h5p h5p Ny sary fitaovana H5P LTI 1.3 omenao ao amin’ny QUIRE_H5P_IMAGE, ao amin’ny QUIRE_H5P_PORT (8090); jereo ny “Manampy mpanome H5P”

Manomboka serivisy safidy rehetra ny --profile full afa-tsiny ny backup sy ny h5p. Manomboka iray amin’ny docker compose -f docker/compose.yaml --profile scan up -d. Na dia tsy misy serivisy safidy koa dia mbola miasa ny Quire ary milaza ny tsy misy: raha tsy misy mpandrika dia tahirizina tsy jerena ny tahirina ary fantatrin’ny mpikarakara; raha tsy misy Gotenberg dia mamela famakarana fa tsy fijerena ny rakitra; raha tsy misy transcoder dia mijery toy ny rakitra voalohany ny video.

Misy ao amin’ny docker/third-party-containers.yaml ny sary tsirairay an’ny ankapobeny ary ny adininy momba ny laisazy.

Manampy mpanome H5P

Tsy mampiditra na mampiasa runtime na sidecar H5P ny Quire (ADR 0019). Raha mampiasa H5P ianao, omeo ny fampidirana H5P fandraisanao manokana na mitondra H5P manokana samy hafa amin’ny Quire. Hiresaka io mpanome io ho fitaovana ivelany LTI 1.3 ary ampio ny votoatry amin’ny fampianarana ho asa fitaovana. Mifandray naoty sy fandrosoan’ny asa/fanintinana amin’ny alàlan’ny LTI Assignment and Grade Services (AGS) ny Quire. Raha manalefa hevitry ny xAPI koa ny mpanome, metrahao izany ho an’ny tahirin’ny hevitry ny xAPI an’i Quire; tsy manalefa hevitry ny xAPI ny fandanimbana naoty/fandrosoana AGS. Mampiseho ho mila fifandraisana fitaovana LTI ny asa H5P ao amin’ny fampidirana Moodle. Miankina amin’ny mpanome ny runtime H5P, fanoratana, tahiry votoaty ary tantaran’ny fanandrasany.

Hanana H5P manokana ao amin’io mpandray anjara io, metrahana QUIRE_H5P_IMAGE amin’ny sary any ary apetraho ny profile h5p. Asehon’i Compose azy ao amin’ny QUIRE_H5P_PORT (8090) ary mitahiry ny daty ao amin’ny volume h5p-data; ny sary, ary ny adiny momba azy, dia anao.

Filàlana

Mamaky ny docker/.env isaky ny rindrina. Ny modely, docker/.env.example, dia mizara ny filàlana tsirairay amin’ny fototry. Ny vondrona:

Adiresy

Filàlana Hevitra
QUIRE_APP_ORIGIN Ny adiresy mamorona an’ny LMS, toy ny https://learn.example.com
QUIRE_CONTENT_ORIGIN Ny loharanon’ny votoaty, mpandray anjara hafa
QUIRE_PLATFORM_DOMAINS Anaran-tsehatra misy ny organisasy, misaraka amin’ny virgula
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 eto. Jereo ny torolalana hafa ho an’ny vercel sy cloudflare
QUIRE_TRUSTED_PROXY_CIDRS Proxy izay sambain’ny X-Forwarded-For azy

Teny miafina

Filàlana Hevitra
QUIRE_SECRET_KEY Manamarina session sy token. 64 litera hexa
QUIRE_MASTER_KEY Manapaka mombamomba alefa toy ny teny miafina SSO sy webhook. 32 octet, base64. Mila sanda mitovy ny sehatra ve-dalana sy ny mpandray asa. Fanavaozana: key-rotation.md
QUIRE_MASTER_KEY_VERSION Ny etiketan’ny version an’ny kiteny lehibe, v1 raha tsy nosetina. Ampio azy rehefa manavao
QUIRE_MASTER_KEY_RETIRED Ny kiteny lehibe taloha mbola ilaina hamakiana ny nataony, toy ny v1=<base64>. Esory aorian’ny fanavaozana vita tsy misy tsy voavaha
QUIRE_COLLAB_SIGNING_KEY Zarain’ny web sy collab hanamarinana token fanoratana
QUIRE_BACKUP_SIGNING_KEY Manamarina backup fampianarana (azo safidina)

Tazomina kalitao QUIRE_MASTER_KEY amin’ny toerana tsy eo amin’io mpandray anjara io. Tsy afaka manala ny mombamomba alefa misy azy ny data-by mamerina aminy.

Data-by

Filàlana Hevitra
POSTGRES_PASSWORD Ny superuser, ampiasain’ny container sy ny backup
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Tenimialàn’ny andraikitra, nosetina amin’ny fiaingana voalohany
DATABASE_URL Ny andraikin’ny fampiharana. Mampifandray ny fiarovana isakin-tseza ny fanontaniana rehetra ataony
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Ny andraikin’ny mpanova, ho an’ny migrate sy init
QUIRE_SUPERUSER_URL Ampiasaina amin’ny fandraisana voalohany ihany
QUIRE_REPORT_DATABASE_URL Ny andraikin’ny tatitra tsy miankina, ho an’ny tatitra sy ny mpamorona tatitra
QUIRE_AUDIT_DATABASE_URL Ny andraikin’ny fitsarana, ho an’ny konsolin’ny fitsarana sy ny foanana SIEO
QUIRE_DATABASE_ID UUID iray, voafaritra mandritra ny fiainan’ny fampidirana

Ampiasaina ny tenimialàn’ny andraikitra amin’ny fotoana voamoronana ny volume data ihany. Hanova azy avy eo, ampiasao ALTER ROLE avy eo manavao ny URL mifanaraka.

Ampiasaina ny QUIRE_REPORT_DATABASE_URL ho an’ny data-by ara-batana nosetina amin’ny DATABASE_URL. Ho an’ny data-by ara-batana voasoratra hafa, metrahana ny fifanarahan’ny quire_report manokany ao amin’ny tontolo web sy worker, avy eo soraty ny anaran’ny teny tontolo ao amin’ny seza Reporting environment variable amin’ny endrika env:NAME. Tokony mitondra amin’ny data-by mitovy amin’ny fifanarany fifandraisana ny famaritana, amin’ny toerana azo atao ny replica-ny mamaky. Manaraka ny mpanjifa mankany amin’ny fifanarahan’ny tatitra an’ny data-by manokany ny sehatra tatitra rehetra: ny mpamorona tatitra sy ny tatitra voatahiry, ny fandefasana mirakina, ny foanana tatitra, ny statistika, lakon’ny fitsarana, ny loharanon’ny fitsarana REST ary ny fitadiavan’ny mpanampy. Tsy mampiasa URL tatritry ny data-by hafa na iray aminy mihitsy. Raha tsy misy fifanarahan’ny tatitra ny data-by, dia ao amin’ny fifanarahan’ny fampiharana manokany ny data-by no miasa ny tatitra mahazatra, fa ny statistika sy ny famakarana fitsarana rehetra dia acomina sy milaza izany, satria tsy afaka mamaky ny rindrin’ny fitsarana ny andraikin’ny fampiharana.

Mpitondra

Filàlana Ity version ity Fanamarihana
QUIRE_STORAGE_DRIVER local (fototra), s3 na azure Ny local dia mitahiry ny rakitra ao amin’ny volume files. Ny s3 dia mampirakitra AWS S3, R2, fampifandrehana GCS ary tahirin-entana S3 hafa, misy fakana multipart azo atomoyina
QUIRE_REALTIME_DRIVER inprocess (fototra), sse, centrifugo na durable_objects Mety ny inprocess ho an’ny container ve-dalana iray; ampiasao centrifugo na sse raha maro
QUIRE_CACHE_DRIVER memory (fototra), postgres na valkey Isaky ny rindrina ny memory; ampiasao valkey na postgres ka mijanona ny fetra fotoana manerana ny container
QUIRE_VIDEO_DRIVER ffmpeg (fototra) na progressive_mp4 Na mpanome fandraisana: Cloudflare Stream, Mux na Bunny, amin’ny kitiny
QUIRE_IMAGE_DRIVER noop (fototra), imgproxy na cloudflare Ny noop dia mome ny sary rehetra amin’ny habeny voalohany. Mila ny imgproxy ny profile images sy ny filàlana ambany; ny cloudflare dia ampiasaina Cloudflare Images
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi na in_process Ny fototry ny serivera ho an’ny resaka mivantana. Raha tsy setina, dia milaza ny resaka mivantana fa tsy voametrahana, mandraaka fifandraisana kaonty manokana ny organisasa ao amin’ny Fampifandraisana, Mpanome seza mivantana. Foana manjaka amin’ny sanda io ny kaonty manokan’ny organisasa. Ny filàlana manokan’ny samy mpanome (BBB_URL sy BBB_SECRET, ny teny tontolo ZOOM_*, TEAMS_*, GOOGLE_MEET_* ary JITSI_*) dia ampiasaina ho an’ny mpanome nosoratra eto ihany
QUIRE_MEETING_REGIONS Lisit-piry misaraka anarana: eu, uk, us Ahoana no manao resaka ny mpanome fototry ny serivera. Raha tsy setina, tsy jerena amin’ny organisasa voafehy faritra izy, toy ny taloha. Manambara ny faritriny amin’ny pejy manokany ny kaonty manokan’ny organisasa

Acomina amin’ny fiaingan’ny sehatra ve-dalana ny sandan’ny mpitondra tsy ahitana ity version ity, misy ny filàlana anarana, fa tsy soloina ho fototra amin’ny fomba tsy hita.

Sary

Mangataka sary amin’ny habeny efatra voafaritra amin’ny alàlan’ny /api/files/{id}/image/{size} ny pejy, izay mijery ny fahafahana mitovy amin’ny rakitra mihitsy ary avy eo mamerina mankany amin’ny serivisy sary. Afaka mangataka QUIRE_IMAGE_SPECS_PER_HOUR (2000 amin’ny fototra) fifandraisana sary sy habeny vaovao isaky ny ora ny samy organisasa; tsy ifidana ny habeny efa natao tamin’io ora io. Ampiasao valkey na postgres ho an’ny QUIRE_CACHE_DRIVER raha mihoatra ny container ve-dalana iray ny misy, ka mijanona ny fetra eo aminy.

Filàlana Mpitondra Fanamarihana
IMGPROXY_URL imgproxy Ny adiresy alefan’ny mpanakafy mankany amin’ny imgproxy, ohatra https://images.example.org. Ny profile images dia mampiseho azy ao amin’ny QUIRE_IMAGES_PORT (8082)
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Fehezanteny hexa, ny sanda mitovy ampiasain’ny imgproxy amin’ny fiaingana. Ataovy tsirairay amin’ny openssl rand -hex 32. Manamarina ny adiresy sary tsirairay azy ireo ny Quire, ka tsy manao sary tsy nangatan’i Quire ny imgproxy
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy amin’ny tahirin-rakitra anaty Ahoana no maka ny sary voalohany ny imgproxy. Metrahana ny Compose http://web:3000. Amin’ny tahirin-rakitra s3 na azure dia avy ao amin’ny bucket ny imgproxy ary tsy ampiasaina io
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Token API misy fahafahana manova Images, ary ny anaran’ny kaonty avy amin’ny Images, Developer resources. Apetraho ny endrika mihintsana ho an’ny kaonty
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare Azo safidina. Raha setina, dia miafina ny sary ary isaky ny adiresy dia marinina ary mety. Raha tsy misy, dia mamorona ny sary amin’ny adiresy avy amin’ny QUIRE_SECRET_KEY izay tsy azon’ny olona manohy

Mitahiry ny sary manokany isaky ny sary voalohany alefany ny Cloudflare Images. Rehefa esorina rakitra, dia manala io sary io aloha ny mpandray asa talohan’ny voalohany.

Filaharana asa

Mampiasa pg-boss ao amin’ny data-by Postgres mitovy ny asa anaty, ka tsy misy serivisy filaharan’ny asa hiasa na zavatra hametrahana. Alaina ao anaty ny transaction mitovy amin’ny fanovana nanoratra azy ny asa, ka tsy afaka very iray na handefa iray roa ny fahasimbonana. Ny QUIRE_QUEUE_DRIVER dia pgboss eto, izay fototry; ny vercel sy cloudflare dia manova ny fandefasana fanambarana maivana sy webhook ihany mankany amin’ny filaharana manokan’ny serivera, ary misy lazain’ny torolalana Vercel sy Cloudflare ny fombany sy ny fomba fidiran’ny sehatra ve-dalany.

Mailaka

Metrahana iray amin’ireto:

  • QUIRE_EMAIL_PROVIDER_CONFIG: JSON misy anaran’ny mpanome HTTP sy ny mombamomba alefa, toy ny {"provider":"postmark","token":"..."}. Manohana ny Postmark, Amazon SES, Mailgun, SendGrid ary Resend.
  • QUIRE_SMTP_URL: smtp://user:password@host:587. Io sehatra io ihany; ny sehatra tsy misy serivera dia manakana ny SMTP.

Ny mandefa ny QUIRE_MAIL_FROM. Ho fanandramana Quire, apetraho ny profile devmail, metrahana QUIRE_SMTP_URL=smtp://mailpit:1025, ary vakio ny mailaka ao amin’ny http://localhost:8025.

Serivisy safidy

Filàlana Amin’ny 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 na QUIRE_MEILISEARCH_URL Fitadiavana ivelany; fanontaniana feno amin’ny Postery raha tsy izany
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Fanadihadiana tenimialàna voafadika. Apetraka amin’ny toe-javatra fototra amin’ny api.pwnedpasswords.com (fanantarana hash 5 litera ihany no alefa); ny off dia manesaka azy, ary ny URL dia mankany amin’ny API range iainao

Fahitana

Ny OTEL_EXPORTER_OTLP_ENDPOINT no manambara ny mpangataka alefan’ny rindrina tsirairay ny jerenojery sy ny metrika; amin’ny profile observability dia http://otelcol:4318 izy, ary ny docker/otel-collector.yaml no toerana hanampianao ny exporter ho an’ny backend-ao. Raha setina, dia mamoaka span amin’ny alàlan’ny OTLP/HTTP (fangatahana ve-dalana, transaction data-by mpanjifa, asan’ny mpandray asa sy antso mitohy) ny sehatra ve-dalana, mpandray asa, mpandrinjaka, votoaty sy collab, ary metrika mankany amin’ny toerana mitovy isaky ny minitra (OTEL_METRICS_EXPORTER=none no manesaka azy). Ny OTEL_TRACES_SAMPLER_ARG no metrahana ny fifandanjalan’ny jerenojery. Alefa amin’ny std output amin’ny LOG_LEVEL ny log, ary manodidina azy ireo ny Compose. Tsy mitondra data manokana mihitsy ny jerenojery.

Fitohanan’ny zava-mitranga ara-paritra (fijanonan’ny data ao amin’ny UE)

Milaza fa mampiasa organisasa Eoropeana ny stack ny QUIRE_REGION=eu. Avy eo mifehy ny fangatahana mitohy rehetra ataon’ny organisasa voafaritra ao amin’ny UE ny mpandray asa ho an’ny lisit-pomena (21-compliance.md singa 8.1). Ny lisit-pomena dia ny mpandray anjara ambaran’ny serivisy voafaritra ho an’ny faritra (ny adiresin’ny tahirina, ny mpanome mailaka, mpanome video fandraisana, ny toerana tahirin’ny organizasa manokana, ny mpanome AI sy ny kaontin’ny mailaka), ny mpandray anjaran’ny serivisy rehetra misy fahalemena miasa, ary ny mpandray anjara lisainao ao amin’ny QUIRE_EGRESS_ALLOW_HOSTS. Acomina alohan’ny fandefasana ny fangatahana mankany amin’ny mpandray anjara mamorona hafa, soratina ao amin’ny rindrin’ny fitsarana an’ny organisasa amin’ny endrika privacy/egress_refused, ary aseho ao amin’ny Fampifanarahana, Fijanonan’ny data.

Filàlana Sanda Vokany
QUIRE_EGRESS_ALLOW_HOSTS Lisit-piry misaraka anarana mpandray anjara, na *.example.org ho an’ny subdomain rehetra Mpandray anjara fanampiny afakan’ny organisasa Eoropeana. Ao amintsika ny endpoint webhook, xAPI sy SIEM, feed blogy ary mpandray anjaran’ny Amazon SES, satria safidin’ny organisasa manokany izy ireo ary tsy misy serivisy mambara azy. Ny loopback, adiresy tsy mamorona ary anarana misy andininy iray toy ny web na clamav dia ny paikadianao manokana ary tsy jerena mihitsy

Tsy voafehy amin’ny lisit-pirin’ny mpandray anjara ny organisasa Amerikanina sy Britanika; mitazona ny fanekena faritra ny serivisy izy ireo. Metrahana ny lisitra ao amin’ny mpandray asa; ny pejy mpikarakara dia mamaky azy ao amin’ny sehatra ve-dalana hamakian’ny lisit-pomena, ka apetrao ao amin’ny docker/.env, izay ampiasain’ny serivisy rehetra.

Manome fahadisoana mazava sy singam-panitsarana ny fanekena ao amin’ny fampiharana, ary tsy io no fanapatoana: afaka diso ny kaody. Ny paikady no fanapatoana. Tsy manatanteraka azy ho anao ny Compose. Ho an’ny stack paritra, apetrao ny serivisy worker sy web eo amin’ny paikady internal: true izay lalana ivelany irery dia proxy fitohana (ohatra container Squid na tinyproxy) mahafeta ny mpandray anjara mitovy amin’ny QUIRE_EGRESS_ALLOW_HOSTS miaraka amin’ny mpandray anjaran’ny serivisy voafaritranao, ary metrahana HTTPS_PROXY ho an’ireo serivisy ireo. Mizara ny mpandray anjara marina afakan’ny fampiharana ny pejy fijanonana, ka azo ampitahaina ny lisitra roa.

Fahasalaman’ny rindrina

Endpoint Hevitra
/healthz Fahombiazana: mamarina ny rindrina. Ampiasain’ny fanekena fahasalaman’ny Compose izany
/readyz Fahazotoana: azo idirana ny iainana, ary napetraka na tsy ny serivisy safidy tsirairay. Orientaho eto ny mpizarazaraonao

Mampiseho ny fahasalaman’ny serivisy tsirairay ny docker compose -f docker/compose.yaml ps.

TLS

Ao anatin’ny stack fototra ny serivisy proxy (Caddy, Apache-2.0, docker/caddy/Caddyfile). Mamaly ao amin’ny 80 sy 443 ary mitondra:

Anaran-tsehatra na laza Mankany
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, subdomain mpanjifa rehetra sy anarana manokana web
/_collab/ eo amin’ireo mpandray anjara ireo collab (websocket, QUIRE_COLLAB_URL)
/_realtime/connection/ eo amin’ireo mpandray anjara ireo ny websocket client an’ny centrifugo; tsy mampiseho mihitsy ny API seriveriny
/_images/ eo amin’ireo mpandray anjara ireo imgproxy, amin’ny profile images (IMGPROXY_URL)

Mamorona avy amin’ny loharano roa ny init-env.sh ny QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL ary IMGPROXY_URL, ka tsy afaka manangana izy ireo. Ovao avy amin’ny tanana ireo raha manova loharano ianao.

Araka ny QUIRE_PROXY_TLS ny fanamarinana:

  • internal (ny fototra): ny mpandray anjaran’ny fanamarinana manokan’i Caddy, ho an’ny localhost, *.localhost ary lvh.me. Manankatoavana ny fototry azy indray, avy eo miezaka:

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

    Ampio ny quire-local-ca.crt ao amin’ny trano fidirana safidy na mpanakafy. Ampiasao ny curl amin’ny --cacert.

  • Adiresy mailaka: fanamarinana ACME ho azy (Let’s Encrypt, avy eo ZeroSSL) ho an’ny anarana marina. Tokony mitondra eto ny DNS ho an’ny loharano roa sy ny mpandray anjara mpanjifa rehetra, ary tokony azo idirana avy any ivelany ny 80 sy 443.

Ambaraina amin’ny fangatahana ny mpandray anjara mpanjifa, amin’ny fijerena voalohany, ary raha manamarina ny web fa an’ny fampidirana io anarana io (/tls-allowed, angatahin’ny amin’ny paikady Compose). Tsy mila fanamarinana wildcard na plugin mpanome DNS, ary tsy afaka mangataka fanamarinana ny olona tsy fantatra mampifantoha anarana mankany amin’ny mpandray anjara. Misy ao amin’ny volume caddy-data ny fanamarinana sy ny mpandray anjarana anaty; backup azy miaraka amin’ny hafa raha mampiasa internal ianao.

Manao tsotra ny X-Forwarded-For avy amin’ny proxy ihany ny web: misy adiresy voafaritra (QUIRE_PROXY_ADDRESS, ny fototra 172.29.64.10) ao amin’ny subnet voafaritra (QUIRE_COMPOSE_SUBNET), ary ny QUIRE_TRUSTED_PROXY_CIDRS no manambara io adiresy io. Raha mifandray amin’ny paikady an’ny mpandray anjara ny subnet, ovao roa ary alefa docker compose down alohan’ny up.

Ao aorian’ny proxy inverseinao manokana

Hanambara mpizarazara na proxy efa miasa, avelao ho ivelany ny proxy (docker compose up -d --scale proxy=0) ary marinao ny TLS alohan’ny web (8080), content (8081), collab (1234, websocket) ary centrifugo (8000, websocket). Metrahana ny adiresy mamorona ao amin’ny QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN ary QUIRE_COLLAB_URL (wss://), ary ny faritan’ny adiresin’ny proxy-ao ao amin’ny QUIRE_TRUSTED_PROXY_CIDRS.

Fikarohana olana

  • Mivoaka ny init amin’ny “QUIRE_DATABASE_ID is not a UUID”: metrahao amin’ny uuidgen.
  • Manomboka indray ny web amin’ny “did not start on compose”: mizara ny log ny filàlana tsirairay tsy afaka nofan-kevitra ary ny tokony hampiasina amin’ny an’izany.
  • Tsy manao na inona na inona ny fanovana tenimialàna amin’ny .env aorian’ny fiaingana voalohany: indray ihany no asan’ny scriptin’ny fiaingana. Ampiasao ALTER ROLE.
  • Diso fandinihana ny fakana rehefa setina ny CLAMAV_URL: ny fanakafana famantarana ny ClamAV amin’ny fiaingana voalohany, izay manao minitra vitsy.
Fifandehanana

Soraty hanadihana…

↑↓ mandeha↵ safidioEsc akano