Тохиргоо (env)¶
Бүх тохиргоо орчны хувьсагчаар дамжина. Backend нь platform-core-ийн config
загварыг ашиглана; жишээ файл нь backend/internal/config/.env.example.
Secret-ийг хэзээ ч commit хийхгүй
backend/internal/config/.env*, root .env, backend.env нь gitignore-д
багтсан. Шинэ хувьсагч нэмбэл README болон энэ хуудсанд нэрийг нь
баримтжуул — утгыг нь хэзээ ч биш.
Суурь¶
| Хувьсагч | Жишээ | Тайлбар |
|---|---|---|
PORT |
8080 |
API сонсох порт |
ENVIRONMENT |
production |
production үед хатуу горим асна |
DEBUG |
false |
Дэлгэрэнгүй лог |
ALLOWED_ORIGINS |
https://geregeapp.mn |
CORS allow-list (таслалаар; * зөвхөн dev) |
TRUSTED_PROXIES |
10.0.0.0/8 |
X-Forwarded-For-д итгэх IP муж |
TRUSTED_PROXIES хоосон бол
X-Forwarded-For толгойд огт итгэхгүй (fail-safe). Reverse proxy-ийн
ард ажиллаж байгаа бол заавал тохируул — эс бөгөөс rate limit бүх
хэрэглэгчийг нэг IP гэж үзнэ.
Өгөгдлийн сан ба Redis¶
| Хувьсагч | Тайлбар |
|---|---|
DB_POSTGRE_DSN / DB_POSTGRE_URL |
Холболтын мөр |
DB_POSTGRE_DRIVER |
Драйверийн нэр |
DB_MAX_OPEN_CONNS · DB_MAX_IDLE_CONNS · DB_CONN_MAX_LIFE_MINS |
Pool |
REDIS_HOST · REDIS_PASS · REDIS_EXPIRED |
Redis + TTL |
Production дээр хоёр хатуу шаардлага
- DSN нь
sslmode=verify-fullбайх ёстой. - API нь superuser биш role-оор холбогдоно — эс бөгөөс RLS үйлчлэхгүй тул boot guard асахаас татгалзана.
Compose стек зориудаар ENVIRONMENT=development-оор ажилладаг: дотоод DB
нь TLS-гүй.
JWT ба session¶
| Хувьсагч | Тайлбар |
|---|---|
JWT_SECRET |
≥32 тэмдэгт. Солих нь бүх session-ийг хүчингүй болгоно |
JWT_EXPIRED · JWT_REFRESH_EXPIRED |
Access / refresh хугацаа |
JWT_ISSUER |
Ихэвчлэн апп-ын домэйн. Солиход бүх токен хүчингүй |
BCRYPT_COST |
Hash-ийн өртөг (нууц үг байхгүй ч дотоод hash-д) |
OTP_MAX_ATTEMPTS |
Super admin onboarding-ийн OTP оролдлого |
eID (Relying Party)¶
| Хувьсагч | Тайлбар |
|---|---|
EID_BASE_URL |
eID Mongolia /v3 суурь |
EID_RP_UUID · EID_RP_SECRET |
RP-ийн креденшл |
EID_RP_NAME |
RP-ийн харагдах нэр |
EID_CALLBACK_URL |
Буцах хаяг |
EID_CERT_LEVEL |
Шаардах гэрчилгээний түвшин |
EID_DISPLAY_TEXT |
Утсан дээр харагдах текст |
Гарын үсэг¶
| Хувьсагч | Тайлбар |
|---|---|
SIGN_SIGNER_CERT_FILE · SIGN_SIGNER_KEY_FILE |
Production-д заавал — байнгын Document-Signer |
SIGN_RELAY_TOKEN |
Гуравдагч RP-ийн sign relay токен (хоосон = унтраалттай) |
Gerege SSO — client тал¶
Энэ апп нь sso.gerege.mn-ийн relying party байх тохиргоо:
| Хувьсагч | Жишээ | Тайлбар |
|---|---|---|
SSO_ISSUER |
https://sso.gerege.mn |
Хоосон бол энэ утга руу default-лана |
SSO_CLIENT_ID · SSO_CLIENT_SECRET |
— | Хоосон бол SSO урсгал идэвхгүй |
SSO_REDIRECT_URI |
https://geregeapp.mn/sso/callback |
SSO дээр яг ийм бүртгэгдсэн байх |
SSO_SCOPE |
openid profile email |
nationalid нэмбэл иргэний дугаар орно |
SSO_NATIVE_CLIENT_ID |
— | Мобайл (PKCE, public) client |
SSO_EID_PROXY_BASE_URL |
https://sso.gerege.mn/rp/eid |
eID самбарыг SSO proxy-гоор авах |
OIDC provider — issuer тал¶
| Хувьсагч | Тайлбар |
|---|---|
OAUTH_ISSUER |
Жишээ https://geregeapp.mn. Тохируулсан үед л provider асна |
SSO_STATE_KEY |
Login/consent урсгалын state HMAC түлхүүр (≥32 байт) |
SSO_FIRSTPARTY_CLIENTS |
Consent алгасах first-party client-ууд |
SSO_ADMIN_API_KEYS · SSO_ADMIN_SUBS |
/admin/api/v1 хандалт |
AI (Gemini)¶
| Хувьсагч | Тайлбар |
|---|---|
GEMINI_API_KEY |
Байхгүй бол /ai/* жинхэнэ 500 өгнө |
GEMINI_MODEL |
Чат / STT / орчуулга (gemini-2.5-flash) |
GEMINI_TTS_MODEL |
TTS model |
GEMINI_EMBED_MODEL |
Хоосон = client автоматаар сонгоно |
GEMINI_VOICE |
Prebuilt дуу хоолой (Kore) |
GEMINI_API_BASE |
Proxy / тестэд override |
AI_SCOPE_PROMPT |
DB давхарга хоосон үеийн хүрээний fallback |
Гуравдагч тал ба хадгалалт¶
| Хувьсагч | Тайлбар |
|---|---|
GOOGLE_CLIENT_ID · GOOGLE_CLIENT_SECRET |
Google холболт (хоосон бол товч харагдахгүй) |
INTEGRATION_ENC_KEY |
≥16 байт. OAuth токен + super admin TOTP-ийг шифрлэнэ |
VERIFY_API_BASE · VERIFY_API_KEY · VERIFY_CHANNEL |
Gerege Verify |
VERIFY_OPTIONAL |
true үед Verify байхгүй ч урсгал үргэлжилнэ |
XYP_API_BASE · XYP_CLIENT_ID · XYP_CLIENT_SECRET |
ХУР лавлагаа |
CORE_API_BASE · CORE_API_TOKEN |
Gerege Core (USER FIND / ORG FIND) |
GSPACE_HOST · GSPACE_PORT · GSPACE_USER · GSPACE_PASSWORD |
SFTP |
GSPACE_HOST_KEY |
Хостын түлхүүрийн pin — MITM-ээс хамгаална |
GSPACE_BASE_PATH · GSPACE_QUOTA_BYTES |
Хавтас, хэрэглэгчийн квот |
INTEGRATION_ENC_KEY-г нэгэнт тавьсны дараа бүү соль
Түүгээр super admin-ийн TOTP secret ба интеграцын OAuth токенууд шифрлэгдсэн. Солибол бүгд эвдэрнэ — сэргээх арга байхгүй.
Бусад¶
| Хувьсагч | Тайлбар |
|---|---|
SUPERADMIN_EMAIL |
Эхний super admin-ийг bootstrap хийх |
RELAY_DEMO_MODE |
Relay simulator (демо хариу үүсгэнэ) |
Ажиглалт¶
| Хувьсагч | Тайлбар |
|---|---|
OTEL_EXPORTER |
otlp · stdout · хоосон |
OTEL_SAMPLE_RATIO |
Trace sampling |
OBSERVABILITY_TOKEN |
Production дээр /metrics ба /swagger-ийг хаах bearer |
Frontend¶
| Хувьсагч | Тайлбар |
|---|---|
BACKEND_URL |
BFF-ээс backend руу залгах дотоод хаяг |
Хуваалцсан сүлжээнд api нэр давхцаж болзошгүй
Олон стек нэг Docker сүлжээнд байвал http://api:8080 өөр контейнер руу
зохирч, бүх /api/v1/* 404 болж мэднэ. Тухайн үед BACKEND_URL-ээ өөрийн
api контейнерийн бүтэн нэрээр pin хий (жишээ:
http://gerege-app-mn-api-1:8080).
Тохиргоог шалгах¶
Boot дээр дараах guard-ууд ажиллана:
| Guard | Юуг шалгана |
|---|---|
| RLS enforceability | Production дээр DB role нь superuser / BYPASSRLS биш |
| TLS | Production дээр DSN нь sslmode=verify-full |
| Түлхүүрийн урт | JWT_SECRET ≥32, SSO_STATE_KEY ≥32, INTEGRATION_ENC_KEY ≥16 |
| Document-Signer | Production дээр гэрчилгээ + түлхүүр байх |
| CORS | Production дээр * хориотой |
Аль нэг нь зөрчигдвөл API асахаас татгалзана — чимээгүй сул горимд орохгүй.