Бұл бір хосттағы толық өнім: 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және*.localhost127.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 initdocker/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:// шығысынан бас тартады.
Жинақ белгілі бір ретпен іске қосылады және әр қадам алдыңғысын күтеді:
postgresсауға айналады. Алғашқы іске қосылғанда оның init скрипті (docker/postgres/init/90-passwords.sh) төрт рөл паролін орнатады.migrateәр миграцияны қолданады және басқару дерекқорында және әр жеке tenant дерекқорында жұмыс кезегін бастап, олардың бәрі келісетінін тексеріп, содан кейін шығады (docs/ops/upgrade.md). Миграциялар әр іске қосылғанда жүреді және идемпотентті, сондықтан жаңарту — жаңа бейне және қайта іске қосу.init(apps/web/src/first-run.ts) қолданба дерекқорынQUIRE_DATABASE_IDастында тіркейді жәнеQUIRE_SETUP_ADMIN_EMAILорнатылған болса, алғашқы ұйымды және оның әкімшісін жасайды. Кіру мекенжайы мен жасалған құпиясөз бір рет, мына журналда басылады:docker compose logs init.web,content,worker,scheduler,collabжәнеcentrifugoіске қосылады.proxywebмен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.crtquire-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 алғашқы іске қосылғанда белгілерін жүктейді, бұл бірнеше минут алады.