ЦЗ Цахим Засаг
GitHub Нэвтрэх

open.dgov.mn — Цахим Засаг

Репо: gerege-systems/open-dgov-mn · Байрлуулалт: /opt/open-dgov-mn/ · Брэнд: Засгийн газрын нээлттэй суурь платформ

Иргэн, албан хаагчийн харах орчин. Gerege Nexus цөмийн Түвшин 1 байрлуулалт: код байхгүй, тохиргоо л байна.

Юу нь юу вэ

Энэ репод Go файл ч, миграц ч, каталог ч байхгүй. Төрийн үйлчилгээний дэлгэцүүд — egov, documents, organisation, reports, urtuu — цөмд аль хэдийн байгаа тул энэ байрлуулалтыг цөмөөс ялгах бүх зүйл нь нэр, домэйн, нэвтрэлтийн чиглэл: дөрвөн файлд багтана.

.env.example                  бүх тохиргоо, тайлбартайгаа
nginx/open.dgov.mn.conf       vhost: бүрхүүл, API, OIDC, брэндийн зураг
deploy.sh                     цөмийн compose-ыг түгжсэн хувилбараар нь татаж шинэчилнэ
first-admin.sh                эхний байгууллага, эхний админ

Өөрийн Go модуль хэрэгтэй болох өдөр л энэ репо Түвшин 2 болно — тэр өдөр go.mod, main.go, modules/ нэмэгдэнэ, дээрх файлууд байрандаа үлдэнэ.

Compose файлыг энд хуулж тавихгүй байгаа нь мөн санаатай: хуулбар бол цөмөөс чимээгүй хоцрох арга. deploy.sh нь цөмийн docker-compose.prod.yml-ийг CORE_REF дээр түгжигдсэн commit-оос татаж авчирдаг.

Стек

Хостын хажууд sso.dgov.mn ажилладаг тул контейнер бүр нэрээ хэлдэг (STACK=dgov_nexus) ба портууд давхцахгүй:

Контейнер Образ Порт (зөвхөн loopback)
dgov_nexus_postgres postgres:16-alpine 5434
dgov_nexus_redis redis:7-alpine 6381
dgov_nexus_backend ghcr.io/gerege-systems/open-gerege-nexus/backend:latest 8082
dgov_nexus_frontend ghcr.io/gerege-systems/open-gerege-nexus/frontend:latest 3008

POSTGRES_VOLUME=dgov_nexus_platform_postgres_data бол дискэн дээрх заагч. Хоосон санг цөм эрүүл мэт асаадаг тул энэ мөрийг өөрчлөх нь өгөгдөл нүүлгэх ажил, засвар биш.

Тохиргоо

Жинхэнэ файл нь серверийн /opt/open-dgov-mn/.env (chmod 600), загвар нь репогийн .env.example. Хамгийн чухал мөрүүд:

Хувьсагч Утга Тайлбар
IMAGE_TAG latest Цөмийн CI-ийн нийтэлсэн образын tag
PUBLIC_ORIGIN https://open.dgov.mn Гадна ертөнцөд харагдах хаяг
DEVICE_LINE_ORIGINS https://open.dgov.mn Хоосон орхивол цөм nexus.gerege.mn-ий шугамуудыг анхдагчаар тавина — өөр байрлуулалтын хостыг энд зөвшөөрөх нь учиргүй
BRAND_NAME Засгийн газрын нээлттэй суурь платформ Хүсэлт бүр дээр уншигдана, образ биш
EID_RP_NAME Мөн энэ нэр Хоосон орхивол иргэн утсан дээрээ «Gerege Nexus» гэж уншина
SSO_CLIENT_ISSUER https://sso.dgov.mn Хэн таних вэ
SSO_CLIENT_ID app_opendgovmn_28426259 Провайдерийн олгосон id — гараар сонгодоггүй
SSO_CLIENT_LOCAL_LOGIN false Эндэх нууц үг, eID-ийн нэвтрэлт хаалттай
SSO_CLIENT_TENANT dgov Провайдерийн баталгаажуулсан ч энд бүртгэлгүй хүнийг ямар байгууллагад үүсгэх

Брэндийн зураг нь /opt/open-dgov-mn/brand/ дотор суудаг ба nginx түүнийг /brand/… доор өгнө. Хоосон бол бүрхүүл образынхаа өөрийн лого, icon-той ирнэ.

Нэвтрэлт

Энэ суулгац хүнийг өөрөө таних биш, sso.dgov.mn дээр таниулна.

2026-08-17-ноос SSO_CLIENT_LOCAL_LOGIN=false — энэ домэйн руу орох цорын ганц зам sso.dgov.mn. Тэр нь ажиллахаа болих өдөр энд нэг ч хүн шинээр нэвтрэхгүй; буцах зам Runbook-ууд-д бичигдсэн.

Провайдер дээрх бүртгэл:

client_id app_opendgovmn_28426259
redirect_uris https://open.dgov.mn/api/v1/auth/sso/callback
post_logout_redirect_uris https://open.dgov.mn/
grant_types authorization_code
scopes openid profile email

open.dgov.mn нь провайдерийн OAUTH_REDIRECT_HOSTS дотор яг таг байх ёстой — тэр жагсаалт дэд домэйныг өвлүүлдэггүй. Дэлгэрэнгүйг SSO-д холбогдох-оос.

nginx

nginx/open.dgov.mn.conf нь бүрхүүл (3008) ба API (8082)-г барина. Гурван зүйл анхаарууштай:

Мөн /api/ дээр limit_req бүсүүд ажиллана: нэвтрэлтэд 5r/m, OAuth-ийн солилцоонд 30r/m.

Шинэчлэх

ssh root@38.180.243.138
cd /opt/open-dgov-mn && git pull
REGISTRY_USER=<github-хэрэглэгч> REGISTRY_TOKEN=<read:packages> ./deploy.sh

Цөмийг шинэчилнэ гэдэг нь энэ репод хоёр мөр өөрчлөх ажил: CORE_REF (compose файл хаанаас ирэх) ба .env-ийн IMAGE_TAG (ямар образ). GHCR-ийн пакет хаалттай тул rollout бүр токеноор нэвтэрч, дараа нь гардаг — токеныг сервер дээр хадгалдаггүй.

deploy.sh нь ажиллаж байгаа контейнеруудыг образ хост дээр буусны дараа л хөнддөг: pull унасны дараах татан буулгалт бол амжилтгүй deploy биш, тасалдал. Төгсгөлд нь гурван хариу шалгана — API эрүүл, бүрхүүл ирж байна, бүрхүүл .env-ийн BRAND_NAME-ээ хэлж байна. Гурав дахь нь энэ байрлуулалтыг цөмийн анхдагчаас ялгадаг цорын ганц зүйл тул сайн дурын биш.

Дэлгэрэнгүй, шалгалтын алхмуудыг Ажиллагаа-аас.

Эхний админ ба апп суулгах

cd /opt/open-dgov-mn && ./first-admin.sh <и-мэйл> <нууц үг>

Бүртгүүлэх дэлгэц байхгүй, control plane нь өөрийн vhost, TOTP шаарддаг тул эхний хүн SQL-ээр ордог. Скрипт өөрөө нэвтэрч үзэж баталгаажуулна.

Аппуудыг API-аар суулгана, SQL-ээр биш — суулгацын мөр каталог дүүргэдэг apps хүснэгт рүү заадаг тул гараар оруулсан мөр дутуу байна:

POST /api/v1/store/apps/{slug}/install