Агуулгыг алгасах

Байршуулалт (Deployment)

Платформыг ганц VPS дээр Docker Compose + nginx-ээр байршуулна. Stack: PostgreSQL + Redis + Go API (өөрийн OIDC issuer-ийг мөн хангадаг) + Next.js BFF.

Шаардлага

  • Docker + compose plugin
  • nginx + certbot (TLS)
  • Домэйний DNS сервер рүү заасан байх

Топологи

Internet ──► nginx (80/443, Let's Encrypt)
   ├─ /oauth2/*, /.well-known/*, /userinfo ─► api (OIDC issuer)
   ├─ /rp/sign/*      ─► api relay
   ├─ /rp/eid/*, /rp/eid-org/* ─► api (eID proxy)
   └─ бусад бүх         ─► web (Next.js BFF) ──► api
   internal: db (Postgres 16) · redis (7)

Env файлууд (gitignored)

  • .env — compose interpolation (Postgres/Redis нууц, ports, домэйн).
  • backend.env — API-ийн тохиргоо (JWT_SECRET, EID_RP_, OAUTH_ISSUER, SSO_, …).

Секрет тусад нь

Тусдаа deployment бүр өөрийн JWT_SECRET, SSO_STATE_KEY, RP креденшлтэй байх ёстой — deployment хооронд хуваалцахгүй.

Deploy алхмууд

# 1) код авах
git clone git@github.com:gerege-systems/sso-dgov-mn.git /srv/sso-dgov-mn
cd /srv/sso-dgov-mn

# 2) env файлуудыг бэлдэх (.env + backend.env)

# 3) stack өргөх — migrate автоматаар schema-г тавина
docker compose up -d --build

# эсвэл дахин deploy:
bash deploy/deploy.sh

nginx (жишээ)

server {
    server_name sso.dgov.mn;
    client_max_body_size 30m;

    location /oauth2/                           { proxy_pass http://127.0.0.1:4446; include /etc/nginx/proxy_params; }
    location = /.well-known/openid-configuration { proxy_pass http://127.0.0.1:4446; include /etc/nginx/proxy_params; }
    location = /.well-known/jwks.json            { proxy_pass http://127.0.0.1:4446; include /etc/nginx/proxy_params; }
    location = /userinfo                         { proxy_pass http://127.0.0.1:4446; include /etc/nginx/proxy_params; }

    location /rp/sign/    { proxy_pass http://127.0.0.1:8081/rp/sign/; include /etc/nginx/proxy_params; }
    location /rp/eid/     { proxy_pass http://127.0.0.1:8081/api/v1/eid/;     include /etc/nginx/proxy_params; }
    location /rp/eid-org/ { proxy_pass http://127.0.0.1:8081/api/v1/eid-org/; include /etc/nginx/proxy_params; }

    location / { proxy_pass http://127.0.0.1:3008; include /etc/nginx/proxy_params; }
    listen 443 ssl;  # certbot managed
}

Compose project нэр

Нэг сервер дээр олон deployment зэрэгцүүлэн ажиллуулж болно. Тус бүр өөрийн .env дэх COMPOSE_PROJECT_NAME, порт, volume-той байх ёстой — эс бөгөөс image tag / volume мөргөлдөнө.

Deployment Домэйн Порт (жишээ)
sso-dgov-mn sso.dgov.mn web 3008
template-dgov-mn template.dgov.mn web 3009