Skip to content

Deploy — S60Auth

Specifika nasazení S60Auth. Obecný postup viz Standardní deploy proces.

Kontejnery

Kontejner Port Popis
s60-auth-backend 3002 NestJS API
s60-auth-frontend 3003 React SPA (nginx)

Deploy příkazy

# 1. Pull zdrojáky na Sentinelu
cd /root/projects/auth && git pull origin master

# 2. Rsync na cílový server
rsync -az --delete --exclude='.git' --exclude='node_modules' \
  /root/projects/auth/ root@<SERVER>:/opt/auth/

# 3. Zkopírovat env (ze secrets na Sentinelu)
scp /root/secrets/auth/.env.<hub|prod> root@<SERVER>:/opt/auth/backend/.env

# 4. VŽDY docker compose down + up (ne restart — env se nenačte!)
ssh root@<SERVER> "cd /opt/auth && \
  docker compose down && \
  docker compose up -d --build"

# 5. Health check
curl -sf https://auth.<domain>/api/health

DŮLEŽITÉ: docker compose down + up

NIKDY nepoužívat docker restart — env_file se načítá jen při vytvoření kontejneru. Vždy docker compose down && docker compose up -d.

Env proměnné

Secrets v /root/secrets/auth/:

Proměnná Popis
DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_SSL PostgreSQL (DO Managed)
REDIS_URL Redis (s60-redis na s60-network)
JWT_SECRET, JWT_EXPIRES_IN JWT tokeny
APP_URL, FRONTEND_URL URL aplikace
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET Google OAuth
FACEBOOK_APP_ID, FACEBOOK_APP_SECRET Facebook OAuth
SMTP_*, EMAIL_FROM Email (BullMQ → s60-mail)

Databáze

Prostředí DB User
Hub (staging) s60_auth_hub s60_hub_user
Prod s60_auth_prod s60_prod_user

DB jsou oddělené od dev

Dev (Cerebro) nemá credentials k hub/prod databázím.

OAuth klienti (tabulka systems)

KRITICKÉ: Po deploy zkontrolovat OAuth URL

Hub/prod DB byla zkopírována z dev. Tabulka systems obsahuje registrované OAuth klienty (Pulse, Venom, BillIt...) s home_url a callback_url. Tyto URL MUSÍ odpovídat prostředí — ne dev (s60dev.cz), ne localhost.

Po nasazení nové služby na hub/prod:

-- Zkontrolovat aktuální stav
SELECT name, home_url, callback_url FROM systems;

-- Opravit URL pro konkrétní službu (příklad pro Pulse na prod)
UPDATE systems SET
  home_url = 'https://pulselab.cz',
  callback_url = 'https://pulselab.cz/auth/callback'
WHERE name = 'S60 Pulse';

Správné URL per prostředí:

System Hub (staging) Prod
S60 Pulse pulse.s60hub.cz pulselab.cz
S60 Venom venom.s60hub.cz venom.studio60.cz (TBD)
BillIt billit.s60hub.cz billit.cz (TBD)

Závislosti

Před deploy na cílovém serveru musí existovat:

  • [ ] Docker network s60-network
  • [ ] Redis kontejner s60-redis na s60-network (s heslem)
  • [ ] Nginx reverse proxy s SSL (certbot)

Nginx config

server {
    server_name auth.<domain>;

    location / { proxy_pass http://127.0.0.1:3003; }
    location /api/ { proxy_pass http://127.0.0.1:3002; }
}