Перейти к содержанию

Развёртывание

Разверните платформу на одном VPS с Docker Compose + nginx. Стек — PostgreSQL + Redis + Go API (он же OIDC issuer) + Next.js BFF.

Предварительные требования

  • Docker и плагин compose
  • nginx + certbot (TLS)
  • DNS-запись, указывающая на сервер

Топология

Internet ──► nginx (80/443, Let's Encrypt)
   ├─ /oauth2/*, /.well-known/*, /userinfo ─► api (OIDC issuer)
   ├─ /rp/sign/*      ─► ретранслятор api
   ├─ /rp/eid/*, /rp/eid-org/* ─► api (прокси eID)
   └─ всё остальное    ─► web (Next.js BFF) ──► api
   внутри: db (Postgres 16) · redis (7)

Файлы окружения (в gitignore)

  • .env — подстановка для compose (секреты Postgres/Redis, порты, домен).
  • backend.env — конфигурация API (JWT_SECRET, EID_RP_, OAUTH_ISSUER, SSO_, …).

Отдельные секреты

У каждого развёртывания должны быть собственные JWT_SECRET, SSO_STATE_KEY и учётные данные RP — никогда не переиспользуйте их между развёртываниями.

Шаги развёртывания

# 1) получить код
git clone git@github.com:gerege-systems/gerege-platform-mn.git /srv/gerege-platform-mn
cd /srv/gerege-platform-mn

# 2) создать файлы окружения (.env + backend.env)

# 3) поднять стек — migrate применит схему автоматически
docker compose up -d --build

# или переразвернуть:
bash deploy/deploy.sh

nginx (пример)

server {
    server_name gerege.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
}

Имя проекта в compose

На одном сервере можно держать несколько развёртываний рядом. У каждого в .env должны быть свои COMPOSE_PROJECT_NAME, порты и тома — иначе теги образов и тома будут конфликтовать.

Развёртывание Домен Порты (пример)
gerege-platform-mn gerege.mn web 3007
<другое развёртывание> other.example.mn web 3009