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

Тохиргоо (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 дээр хоёр хатуу шаардлага

  1. DSN нь sslmode=verify-full байх ёстой.
  2. 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 асахаас татгалзана — чимээгүй сул горимд орохгүй.