Мазмұнға өту

Quire-ді Docker Compose арқылы орнату

Quire-ді өз инфрақұрылымыңызға Docker Compose арқылы орнатыңыз.

Markdown ретінде қарау

Бұл бір хосттағы толық өнім: LMS, оның фондық жұмыстары, realtime және бірлескен өңдеу қызметтері, және профиль артындағы барлық қосымша қызмет. Жоба docs/architecture/23-ops.md құжатының 2-тармағында.

Басқа мақсаттар: Vercel және Cloudflare Workers тек веб-деңгейді жүргізеді. Жаңартулар upgrade.md файлында, ал сақтық көшірмелер мен қалпына келтіру жаттығуы backup-restore.md файлында.

Нені қажет етесіз

  • Docker Engine 27 немесе одан жоғары, Compose плагині 2.30 немесе одан жоғары болып.
  • Әдепкі жинақ үшін 4 CPU ядросы және 8 GB жады; --profile full болғанда 8 ядро және 16 GB (ClamAV өзі шамамен 1.5 GB белгі ұстайды).
  • Веб-деңгей үшін DNS атауы және сенімсіз мазмұн үшін екіншісі. Олар әртүрлі хосттар болуы керек: SCORM-пакеттері мен жүктелген HTML мазмұн шығысында жұмыс істейді, сондықтан олар LMS-тің cookie файлдарын ешқашан оқи алмайды.
  • Жергілікті тексеріс үшін lvh.me және *.localhost 127.0.0.1 мекенжайына келеді, оны docker/.env.example пайдаланады. Жинақтың өзінің proxy қызметі екеуін де жергілікті сертификат құзыреті арқылы https арқылы қызмет етеді, сондықтан басқа ештеңе орнатылмайды (“TLS” қараңыз).
  • Хостта 80 және 443 порттары бос болуы керек (QUIRE_PROXY_HTTP_PORT және QUIRE_PROXY_HTTPS_PORT оларды ауыстырады).

Алғашқы жүргізу

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 файлы docker/.env файлын docker/.env.example файлынан барлық құпиясы жасалған күйінде жазады (дерекқор парольдері, қол қою және мастер кілттері, мазмұн іске қосу кілттер жұбы), ал аудит тексеру нүктесінің қол қою кілті docker/secrets/audit-signing-key.pem файлында болады, оны Compose құпия ретінде worker-лерге бекітеді. Оған тек sh, awk және openssl қажет, және ол бар болған docker/.env файлын қайта жазудан бас тартады. Екі файлды да хосттан тыс жерге көшіріңіз: QUIRE_MASTER_KEY болмаса, қалпына келтірілген дерекқор сақтаған кілттерін аша алмайды. Файлды қолмен толтыру үшін cp docker/.env.example docker/.env пайдаланыңыз; файл әр құпияны қалай жасауды көрсетеді.

Екі шығыс та https болуы керек: мазмұн қызметі өндірісте қарапайым http-ден бас тартады және олар тіркеле алатын бір доменді бөлісе алмайды. proxy қызметі екеуі үшін де TLS-ді аяқтайды (“TLS” қараңыз); init-env.sh http:// шығысынан бас тартады.

Жинақ белгілі бір ретпен іске қосылады және әр қадам алдыңғысын күтеді:

  1. postgres сауға айналады. Алғашқы іске қосылғанда оның init скрипті (docker/postgres/init/90-passwords.sh) төрт рөл паролін орнатады.
  2. migrate әр миграцияны қолданады және басқару дерекқорында және әр жеке tenant дерекқорында жұмыс кезегін бастап, олардың бәрі келісетінін тексеріп, содан кейін шығады (docs/ops/upgrade.md). Миграциялар әр іске қосылғанда жүреді және идемпотентті, сондықтан жаңарту — жаңа бейне және қайта іске қосу.
  3. init (apps/web/src/first-run.ts) қолданба дерекқорын QUIRE_DATABASE_ID астында тіркейді және QUIRE_SETUP_ADMIN_EMAIL орнатылған болса, алғашқы ұйымды және оның әкімшісін жасайды. Кіру мекенжайы мен жасалған құпиясөз бір рет, мына журналда басылады: docker compose logs init.
  4. web, content, worker, scheduler, collab және centrifugo іске қосылады.
  5. proxy web мен content сау болғанда ғана іске қосылады.

https://demo. деп, одан кейін қолданба доменіңіз (init журналы дәл кіру мекенжайын басып шығарады), кіріңіз. Жергілікті орнатылымда алдымен проксиіңіздің сертификат құзыретіне сенім білдіріңіз (“TLS” қараңыз). Жасалған құпиясөзді /account/security бөлімінде өзгертіңіз.

Міндетті құпиясыз іске қосылған процесс іске қосылудан бас тартады және журналында жетіспейтін параметрді атайды. Жартылай бапталған ештеңе іске қосылмайды.

Қызметтер мен профилдер

Қызмет Профиль Не істейді
postgres always Дерекқор (pgvector-і бар PostgreSQL 18, docker/postgres.Dockerfile файлынан құрастырылған), алғашқы қосылғаннан бастап WAL архивімен бірге
migrate, init always Бір реттік: миграциялар, содан кейін алғашқы жүргізу
web always LMS, QUIRE_HTTP_PORT (8080)
content always Сенімсіз мазмұн шығысы, QUIRE_CONTENT_PORT (8081)
worker always Фондық жұмыстар: пошта, есептер, файл өңдеу, webhook-тар
scheduler always Қайталанатын жұмыстар: 64 runtime кестесін тіркеп, worker-ге береді; бір уақытта бір жетекші
collab always Бірлескен өңдеу websocket-і, QUIRE_COLLAB_HTTP_PORT (1234)
centrifugo always Realtime fan-out, QUIRE_REALTIME_PORT (8000)
proxy always Caddy, 80 және 443 порттарындағы TLS алдыңғы есігі (“TLS” қараңыз)
valkey cache Кэш пен жылдамдық шектеулері
clamav scan Жүктеулерді зиянды бағдарламаға тексеру
gotenberg preview Office-тен PDF алдын ала қараулары, сертификат өңдеу
imgproxy images Мөлшерленген және түрлендірілген суреттер
transcoder video LGPL-ге ғана ffmpeg бар worker бейнесі, бейне нұсқалары үшін
seaweedfs storage Осы хосттағы S3-үйлесімді объектілік қойма
otelcol observability OpenTelemetry жинағышы
mailpit devmail Шығыс поштаның бәрін қабылдайды, Quire-ді сынап көру үшін
backup backup Бір реттік негізгі сақтық көшірме; backup-restore.md қараңыз
backup-scheduler, backup-offsite backup әр QUIRE_BACKUP_INTERVAL_HOURS сайын негізгі сақтық көшірме және апталық растау жаттығы бар шифрленген хосттан тыс көшірмелер
h5p h5p QUIRE_H5P_IMAGE ішінде беретін H5P LTI 1.3 құрал бейнесі, QUIRE_H5P_PORT (8090) арқылы; “Connecting an H5P provider” қараңыз

--profile full backup мен h5p-ден басқа барлық қосымша қызметті іске қосады. Біреуін мына команда арқылы іске қосыңыз: docker compose -f docker/compose.yaml --profile scan up -d. Қосымша қызмет болмаса да Quire жұмыс істей береді және не жетіспейтінін айтады: сканер болмаса, жүктеулер тексерілмей сақталады және әкімші хабарланады; Gotenberg болмаса, файлдар алдын ала қарау орнына жүктеп алу ұсынады; transcoder болмаса, бейне бастапқы файл ретінде ойнайды.

әр үшінші тарап бейнесі мен оның лицензия міндеттемелері docker/third-party-containers.yaml файлында тізілген.

H5P провайдерін қосу

Quire H5P runtime-ын немесе sidecar-ын енгізбейді және жібермейді (ADR 0019). H5P пайдалансаңыз, өзіңіздің хостингтегі жазылымыңызды беріңіз немесе өзіңіздің Quire-ден бөлек өзіңіз орнатқан H5P инстанцияңызды басқарыңыз. Ол провайдерді LTI 1.3 сыртқы құралы ретінде тіркеп, оның мазмұнын құрал әрекеттері ретінде курстарға қосыңыз. Quire бағалар мен әрекет/бағалау прогресін LTI Assignment and Grade Services (AGS) арқылы алмасады. Провайдер xAPI хабарламаларын да жіберсе, оны Quire-дің xAPI хабарлама қоймасы үшін бөлек баптаңыз; AGS баға/прогресс алмасуы xAPI хабарламаларын жібермейді. Moodle импорттары H5P әрекеттерін LTI құрал байланысын қажет етеді деп хабарлайды. Провайдер өзінің H5P runtime-ы, авторлығы, мазмұн банкі және әрекеттер тарихы үшін жауапты болып қалады.

Осы хостта өзіңіздің орнатқан инстанцияңызды жүргізу үшін QUIRE_H5P_IMAGE параметрін оның бейнесіне қойып, h5p профилін іске қосыңыз. Compose оны QUIRE_H5P_PORT (8090) арқылы жариялайды және деректерін h5p-data томында сақтайды; бейне және онымен бірге келетін міндеттемелер сіздікі болып қалады.

Параметрлер

әр процесс docker/.env файлын оқиды. Үлгі, docker/.env.example, әр параметрді әдепкісімен бірге тізеді. Топтар:

Мекенжайлар

Параметр Мағынасы
QUIRE_APP_ORIGIN LMS-тің ашық мекенжайы, мысалы https://learn.example.com
QUIRE_CONTENT_ORIGIN Мазмұн шығысы, басқа хост
QUIRE_PLATFORM_DOMAINS Ұйымдар тұратын домендер, үтірмен бөлінген
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. vercel және cloudflare үшін басқа нұсқаулықтарды қараңыз
QUIRE_TRUSTED_PROXY_CIDRS X-Forwarded-For-ы сенімді проксилер

Құпиялар

Параметр Мағынасы
QUIRE_SECRET_KEY Сессиялар мен токендерге қол қояды. 64 hex таңбасы
QUIRE_MASTER_KEY SSO және webhook құпиялары сияқты сақталған кілттерді орады. 32 байт, base64. Веб-деңгей мен worker бірдей мән қажет етеді. Ауыстыру: key-rotation.md
QUIRE_MASTER_KEY_VERSION Мастер кілттің нұсқа белгісі, орнатылмағанда v1. Ауыстырғанда көтеріңіз
QUIRE_MASTER_KEY_RETIRED Мөрлеген нәрсені оқу әлі қажет алдыңғы мастер кілттер, v1=<base64> түрінде. Ауыстыру шешілмеген нәрсесіз аяқталғаннан кейін алыңыз
QUIRE_COLLAB_SIGNING_KEY Web пен collab өңдеу токендеріне қол қою үшін бөлісіледі
QUIRE_BACKUP_SIGNING_KEY Курстар сақтық көшірмелеріне қол қояды (қалаған)

QUIRE_MASTER_KEY көшірмесін осы хосттан басқа жерде сақтаңыз. Оның үстінде қалпына келтірілген дерекқор ұстап тұрған кілттерді аша алмайды.

Дерекқор

Параметр Мағынасы
POSTGRES_PASSWORD Superuser, контейнер мен сақтық көшірмелер қолданады
QUIRE_DB_APP_PASSWORD, QUIRE_DB_MIGRATOR_PASSWORD, QUIRE_DB_REPORT_PASSWORD, QUIRE_DB_AUDIT_PASSWORD Рөл парольдері, алғашқы іске қосылғанда орнатылады
DATABASE_URL Қолданба рөлі. Жол деңгейіндегі қауіпсіздік оның жасайтын әр сұранысына қолданылады
DATABASE_MIGRATOR_URL, QUIRE_MIGRATION_URL Мигратор рөлі, migrate пен init үшін
QUIRE_SUPERUSER_URL Тек алғашқы жүргізу қолданады
QUIRE_REPORT_DATABASE_URL Тек оқуға арналған есеп рөлі, есептер мен есеп құрастырғыш үшін
QUIRE_AUDIT_DATABASE_URL Аудит рөлі, аудит консолі мен SIEM экспорты үшін
QUIRE_DATABASE_ID Кез келген UUID, орнатылым өмірі бойы бекітілген

Рөл парольдері тек дерекқор томы алғаш рет жасалғанда қолданылады. Кейін біреуін өзгерту үшін ALTER ROLE пайдаланып, содан кейін сәйкес URL-ді жаңартыңыз.

QUIRE_REPORT_DATABASE_URL DATABASE_URL баптаған физикалық дерекқор үшін қолданылады. Басқа кез келген тіркелген физикалық дерекқор үшін web пен worker орталарында оның өз quire_report байланыс URL-ін орнатыңыз, содан кейін айнымалы атауын сол дерекқордың Reporting environment variable өрісіне env:NAME түрінде қойыңыз. Сілтеме қолданба байланысымен бірдей дерекқорды, мүмкіндігінше оның оқу репликасын нұсқауы керек. әр есеп беті tenant-ты өз дерекқорының есеп байланысына еріп барады: есеп құрастырғыш пен сақталған есептер, жоспарланған жеткізілімдер, есеп экспорттары, analytics, аудит журналы, REST аудит ресурстары және көмекшінің аудит іздеуі. Олардың ешқайсысы басқа дерекқордың есеп URL-ін пайдаланбайды. Дерекқорда есеп байланысы болмаса, қалыпты есептер сол дерекқордың өз қолданба байланысында жүреді, ал analytics мен әр аудит оқуы бас тартады және солай екенін айтады, өйткені қолданба рөлі аудит ізін оқи алмайды.

Драйверлер

Параметр Осы шығарылым Ескертулер
QUIRE_STORAGE_DRIVER local (әдепкі), s3 немесе azure local файлдарды files томында ұстайды. s3 AWS S3, R2, GCS үйлесімділігін және басқа S3-үйлесімді қоймаларды қамтиды, қалпына келтірілетін multipart жүктеулерімен
QUIRE_REALTIME_DRIVER inprocess (әдепкі), sse, centrifugo немесе durable_objects inprocess бір web контейнері үшін дұрыс; бірнеше болғанда centrifugo немесе sse пайдаланыңыз
QUIRE_CACHE_DRIVER memory (әдепкі), postgres немесе valkey memory процесс бойынша; жылдамдық шектеулері контейнерлер бойынша сақталсын десеңіз valkey немесе postgres пайдаланыңыз
QUIRE_VIDEO_DRIVER ffmpeg (әдепкі) немесе progressive_mp4 Немесе хостингтегі провайдер: Cloudflare Stream, Mux немесе Bunny, олардың кілттерімен
QUIRE_IMAGE_DRIVER noop (әдепкі), imgproxy немесе cloudflare noop әр суретті бастапқы өлшемімен ұсынады. imgproxy-ге images профилі және төмендегі параметрлер қажет; cloudflare Cloudflare Images пайдаланады
QUIRE_MEETING_PROVIDER bbb, zoom, teams, meet, jitsi немесе in_process Тірі сессиялар үшін платформаның әдепкісі. Орнатылмағанда, тірі сессиялар бапталмағанын айтады, ұйым Integrations, Live session provider астында өз тіркелгісін қосқанға дейін. Ұйымның өз тіркелгісі бұл мәннен әрқашан басым. әр провайдердің өз параметрлері (BBB_URL және BBB_SECRET, ZOOM_*, TEAMS_*, GOOGLE_MEET_* және JITSI_* айнымалылары) тек осында аталған провайдер үшін оқылады
QUIRE_MEETING_REGIONS eu, uk, us үтірмен тізілген тізім Платформаның әдепкі провайдері кездесулерді қайда өңдейді. Орнатылмағанда, бұрынғыдай аймаққа бекітілген ұйымға қарсы тексерілмейді. ұйымның өз тіркелгісі өз бетінде аймақтарын көрсетеді

Бұл шығарылымда жоқ драйвер мәні веб-деңгей іске қосылғанда параметр атымен көрсетіліп бас тартады, әдепкіге үнсіз ауыстырылмайды.

Суреттер

Беттер суреттерді төрт бекітілген өлшем сұрайды /api/files/{id}/image/{size} арқылы, ол файлдың өзімен бірдей қолжетімділікті тексеріп, содан кейін сурет қызметіне бағыттайды. әр ұйым сағатына QUIRE_IMAGE_SPECS_PER_HOUR (әдепкі 2000) жаңа сурет пен өлшем жұбын сұрай алады; сол сағатта қазірдің өзінде жасалған өлшемдер есепке алынмайды. Бірнеше web контейнері болғанда valkey немесе postgres-ті QUIRE_CACHE_DRIVER үшін пайдаланыңыз, сонда шектеу олар бойынша сақталады.

Параметр Драйвер Ескертулер
IMGPROXY_URL imgproxy Браузерлер imgproxy-ге жететін мекенжай, мысалы https://images.example.org. images профилі оны QUIRE_IMAGES_PORT (8082) арқылы жариялайды
IMGPROXY_KEY, IMGPROXY_SALT imgproxy Hex жолдары, imgproxy іске қосылатын мәндердің өзі. әрқайсысын openssl rand -hex 32 арқылы жасаңыз. Quire әр сурет мекенжайына олармен қол қояды, сондықтан imgproxy Quire сұрамаған ештеңені құрастырмайды
QUIRE_IMAGE_SOURCE_ORIGIN imgproxy және жергілікті қойма imgproxy түпнұсқаларды қайдан алады. Compose http://web:3000 орнатады. s3 немесе azure қоймасымен imgproxy шелектен алады және бұл қолданылмайды
CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_IMAGES_TOKEN, CLOUDFLARE_IMAGES_ACCOUNT_HASH cloudflare Images өңдеу рұқсаты бар API токені және Images, Developer resources бөлімінен account hash. Аккаунт үшін икемді нұсқаларды қосыңыз
CLOUDFLARE_IMAGES_SIGNING_KEY cloudflare Қалаған. Орнатылғанда суреттер жеке болады және әр мекенжайға қол қойылады және мерзімі өтеді. Оның орнына суреттер ешкім болжай алмайтын, QUIRE_SECRET_KEY-ден шығарылған мекенжайларда ашық тұрады

Cloudflare Images ұсынатын әр түпнұсқаның өз көшірмесін ұстайды. Файл жойылғанда, worker сол көшірмені түпнұсқадан бұрын жояды.

Кезек

Фондық жұмыстар сол Postgres дерекқорындағы pg-boss-ты қолданады, сондықтан жүргізетін кезек қызметі жоқ және баптайтын ештеңе жоқ. Жұмыстар оларды тудырған өзгеріспен бір транзакцияда кезекке түседі, сондықтан апат біреуін жоғалтып немесе екі рет жібере алмайды. QUIRE_QUEUE_DRIVER мұнда pgboss, оның әдепкісі; vercel және cloudflare жеңіл хабарлама мен webhook жеткізілімдерін ғана платформаның өз кезегіне ауыстырады, ал Vercel мен Cloudflare нұсқаулықтары оларды және веб-деңгейлерінің қалай кезекке түсіретінін сипаттайды.

Пошта

Мыналардың біреуін орнатыңыз:

  • QUIRE_EMAIL_PROVIDER_CONFIG: HTTP провайдерін және оның кілттерін атайтын JSON объекті, мысалы {"provider":"postmark","token":"..."}. Postmark, Amazon SES, Mailgun, SendGrid және Resend қолдау көрсетіледі.
  • QUIRE_SMTP_URL: smtp://user:password@host:587. Тек осы мақсат үшін; серверсіз мақсаттар SMTP-ді бөгейді.

Жіберуші — QUIRE_MAIL_FROM. Quire-ді сынап көру үшін devmail профилін іске қосыңыз, QUIRE_SMTP_URL=smtp://mailpit:1025 орнатыңыз және хатты http://localhost:8025 мекенжайынан оқыңыз.

Қосымша қызметтер

Параметр Қай профильмен
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 немесе QUIRE_MEILISEARCH_URL Сыртқы іздеу; әйтпесе Postgres толық мәтіні
QUIRE_BREACH_CHECK_PROVIDER=off, QUIRE_BREACH_CHECK_URL Құпиясөз сөз тізбегін тексеру. Әдепкіде api.pwnedpasswords.com қарсы қосулы (тек бес таңбалы hash префиксі жіберіледі); off оны өшіреді, ал URL сіз жүргізетін range API-ні нұсқайды

Бақылау

OTEL_EXPORTER_OTLP_ENDPOINT әр процесс із де (trace) мен метрикалар жіберетін жинағышты атайды; observability профилімен ол http://otelcol:4318, ал docker/otel-collector.yaml — артқы жағыңыз үшін exporter қосатын жер. Веб-деңгей, worker, scheduler, content және collab процестері орнатылғанда span-дарды OTLP/HTTP арқылы жібереді (web сұраныстары, tenant дерекқор транзакциялары, worker жұмыстары және шығыс шақырулары), ал метрикаларды сол мекенжайға әр минут сайын жібереді (OTEL_METRICS_EXPORTER=none оларды өшіреді). OTEL_TRACES_SAMPLER_ARG сақталған тректер үлесін орнатады. Журналдар LOG_LEVEL бойынша стандартты шығысқа барады, ал Compose оларды аударады. Тректердің ешқайсысы дербес деректерді алып жүрмейді.

Аймақтық шығыс (ЕО деректерінің орналасуы)

QUIRE_REGION=eu жинақ ЕО ұйымдарына қызмет етеді дейді. Содан кейін worker ЕО-ға бекітілген ұйым үшін жасалған әр шығыс сұранысын рұқсат тізіміне ұстайды (21-compliance.md 8.1-тармақ). Рұқсат тізімі — бапталған қызметтер аймақ үшін жариялайтын хосттар (қойма мекенжайы, пошта провайдері, хостингтегі бейне провайдері, ұйымның өз қойма нысандары, ЖИ провайдерлері және пошта тіркелгісі), белсенді жеңілдік астындағы кез келген қызметтің хосттары, және QUIRE_EGRESS_ALLOW_HOSTS ішінде тізетін хосттар. Кез келген басқа ашық хостқа жіберілген сұраныс жіберілгенге дейін қабылданбайды, бас тарту ұйымның аудит ізіне privacy/egress_refused ретінде жазылады, және ол Compliance, Data residency астында тізіледі.

Параметр Мәндер Әсері
QUIRE_EGRESS_ALLOW_HOSTS Хост атауларының үтірмен тізімі, немесе әр subdomain үшін *.example.org ЕО ұйымы жетісе алатын қосымша хосттар. Webhook, xAPI және SIEM endpoint-тері, блог фидтері және Amazon SES хосттары осында жатады, өйткені олар ұйымның өз таңдауы және ешбір қызмет оларды жарияламайды. Loopback, жеке мекенжайлар және web немесе clamav сияқты бір таңбалы атаулар — сіздің өз желіңіз және ешқашан тексерілмейді

UK және US ұйымдары хост тізіміне байланысты емес; олар қызмет аймағын тексерулерін сақтайды. Тізімді worker-ге орнатыңыз; әкімші беті оны веб-деңгейде рұқсат тізімін көрсету үшін оқиды, сондықтан оны барлық қызмет оқитын docker/.env файлына қойыңыз.

Қолданба тексерісі анық қате мен аудит жазбасын береді және бұл кепілдік емес: код қате болуы мүмкін. Кепілдік — желі. Compose оны сіз үшін міндеттемейді. Аймақтық жинақ үшін worker пен web қызметтерін internal: true желісіне қойыңыз, оның шығатын жалғыз жолы — QUIRE_EGRESS_ALLOW_HOSTS-пен бірдей хосттарға рұқсат ететін шығыс проксиі (мысалы Squid немесе tinyproxy контейнері) және бапталған қызметтеріңіздің хосттары, ал сол қызметтер үшін HTTPS_PROXY орнатыңыз. Орналасу беті қолданба рұқсат ететін дәл хосттарды тізеді, сондықтан екі тізімді салыстыруға болады.

Денсаулық

Endpoint Мағынасы
/healthz Тіршілік: процесс жауап береді. Compose денсаулық тексерістері оны қолданады
/readyz Дайындық: тәуелділіктер қолжетімді және әр қосымша қызмет бапталғаны немесе бапталмағаны хабарланады. Жүкті бөлуіңізді осында бағыттаңыз

docker compose -f docker/compose.yaml ps әр қызметтің денсаулығын көрсетеді.

TLS

proxy қызметі (Caddy, Apache-2.0, docker/caddy/Caddyfile) әдепкі жинақтың бөлігі. Ол 80 және 443 порттарында жауап береді және келесідей бағыттайды:

Хост немесе жол Қайда барады
QUIRE_PROXY_CONTENT_HOST content
QUIRE_PROXY_APP_HOST, әр tenant subdomain-і және custom домені web
Сол хосттардағы /_collab/ collab (websocket, QUIRE_COLLAB_URL)
Сол хосттардағы /_realtime/connection/ centrifugo-дың клиенттік websocket-і; оның сервер API-і ешқашан ашылмайды
Сол хосттардағы /_images/ imgproxy, images профилімен (IMGPROXY_URL)

init-env.sh QUIRE_PROXY_APP_HOST, QUIRE_PROXY_CONTENT_HOST, QUIRE_PROXY_HTTPS_PORT, QUIRE_COLLAB_URL және IMGPROXY_URL мәндерін екі шығыстан шығарады, сондықтан олар ажырай алмайды. Шығысты қолмен өзгертсеңіз, оларды бірге өңдеңіз.

Сертификаттар QUIRE_PROXY_TLS-ге қарайды:

  • internal (әдепкі): Caddy-дің өз сертификат құзыреті, localhost, *.localhost және lvh.me үшін. Оның түбірін бір рет сенімге алыңыз, содан кейін шолыңыз:

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

    quire-local-ca.crt файлын жүйеге немесе браузер сенім қоймасына қосыңыз. curl оны --cacert арқылы алады.

  • Электрондық пошта мекенжайы: нақты хост атаулары үшін автоматты ACME сертификаттары (алдымен Let’s Encrypt, содан кейін ZeroSSL). Екі шығыс үшін де және әр tenant хосты үшін DNS осында нұсқауы керек, ал 80 және 443 порттары интернеттен қолжетімді болуы керек.

Tenant хостары сұраныс бойынша, алғашқы келгенде және тек web осы орнатылымға атау жататынын растағанда ғана беріледі (/tls-allowed, Compose желісінен сұралады). Wildcard сертификат немесе DNS провайдер плагині қажет емес, және хостқа бейтаныс атау нұсқаған адам оны сертификаттарды сұратуға мәжбүрлей алмайды. Сертификаттар және жергілікті құзырет caddy-data томында тұрады; internal пайдалансаңыз, оны қалғанымен бірге сақтық көшірмеңіз.

Web X-Forwarded-For-ды тек проксиден сенеді: проксиіңіздің бекітілген мекенжайы бар (QUIRE_PROXY_ADDRESS, әдепкі 172.29.64.10) бекітілген subnet-те (QUIRE_COMPOSE_SUBNET), ал QUIRE_TRUSTED_PROXY_CIDRS сол мекенжайды атайды. Subnet хосттағы бір желімен соқтығысса, екеуін де өзгертіп, docker compose down жүргіңіз, up-тан бұрын.

Өз артқы проксиіңіздің артында

Орнына қазірдің өзінде жүргізіп тұрған жүкті бөлу немесе прокси пайдалану үшін proxy-ді алып тастаңыз (docker compose up -d --scale proxy=0) және TLS-ді web (8080), content (8081), collab (1234, websocket) және centrifugo (8000, websocket) алдында аяқтаңыз. Ашық мекенжайларды QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN және QUIRE_COLLAB_URL (wss://) параметрлеріне, ал проксиіңіздің мекенжай ауқымын QUIRE_TRUSTED_PROXY_CIDRS параметріне орнатыңыз.

Ақауларды жою

  • init “QUIRE_DATABASE_ID is not a UUID” қатесімен шығады: оны uuidgen арқылы орнатыңыз.
  • web “did not start on compose” қатесімен қайта іске қосылады: журнал оларды орындай алмайтын әр параметрді және орнына не пайдалануды тізеді.
  • Алғашқы іске қосылғаннан кейін .env ішіндегі рөл паролін өзгерту ештеңе істемейді: init скрипті бір рет жүреді. ALTER ROLE пайдаланыңыз.
  • CLAMAV_URL орнатылғанда жүктеулер скенер қатесімен сәтсіз болады: ClamAV алғашқы іске қосылғанда белгілерін жүктейді, бұл бірнеше минут алады.
Навигация

Іздеу үшін теріңіз…

↑↓ шарлау↵ таңдауEsc жабу