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)-г барина. Гурван зүйл
анхаарууштай:
server_nameнь яг нэг хост.default_serverч, wildcard ч биш байх нь заавал: хөршийнхөө урсгалыг залгичихна.- Аюулгүй байдлын толгойнууд
location /дотор, server түвшинд биш. Тэгвэл nginx API-гийн өөрийнх дээр хоёр дахь хуулбарыг нэмнэ, давхардсанX-Frame-Options-ыг зарим хөтөч бүхэлд нь хаядаг. - Certbot-оос ӨМНӨ суулгана. Certbot өөрөө
listen 443 sslмөрүүд ба 80 → https чиглүүлэгчийг нэмнэ; тэдгээрийг гараар бичих нь сунгалтыг өөрийнх нь тэмдэглэгээгээ олохгүй болгодог.
Мөн /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