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-redisnas60-network(s heslem) - [ ] Nginx reverse proxy s SSL (certbot)