Deploy — S60 Pulse
Specifika nasazení S60 Pulse. Obecný postup viz Standardní deploy proces.
Kontejnery
| Kontejner | Port | Popis |
|---|---|---|
| s60-pulse | 3100 | NestJS + admin + client + Chromium |
Deploy příkazy
# 1. Pull zdrojáky na Sentinelu
cd /root/projects/pulse && git pull origin master
# 2. Rsync na cílový server
rsync -az --delete --exclude='.git' --exclude='node_modules' \
/root/projects/pulse/ root@<SERVER>:/opt/pulse/
# 3. Opravit Dockerfile (dokud není fixnuto v repo)
# - npm ci --legacy-peer-deps (4x)
# - COPY cesty: /app/admin-dist/ a /app/client-dist/
# 4. Zkopírovat env (ze secrets na Sentinelu)
scp /root/secrets/pulse/.env.<hub|prod> root@<SERVER>:/opt/pulse/.env
# 5. Docker compose down + up
ssh root@<SERVER> "cd /opt/pulse && \
docker compose down && \
docker compose up -d --build"
# 6. Health check
curl -sf https://<domain>/app
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/pulse/:
| Proměnná | Popis |
|---|---|
| APP_URL | URL aplikace |
| S60_AUTH_URL, S60_AUTH_CLIENT_ID, S60_AUTH_CLIENT_SECRET, S60_AUTH_SYSTEM_ID | S60Auth OAuth2 |
| DATABASE_URL | PostgreSQL connection string |
| REDIS_URL | Redis |
| ANTHROPIC_API_KEY | Claude AI API klíč |
| OUTPUT_PUBLIC_DIR, OUTPUT_PUBLIC_URL | Adresář a URL pro generované výstupy |
Databáze
| Prostředí | DB | User |
|---|---|---|
| Hub (staging) | s60_pulse_hub | s60_pulse_hub_user |
| Prod | s60_pulse_prod | s60_pulse_prod_user |
Závislosti
Před deploy na cílovém serveru musí existovat:
- [x] Docker network
s60-network - [x] Redis kontejner
s60-redisnas60-network - [x] Nginx reverse proxy s SSL (certbot)
- [x] S60Auth nasazený (OAuth2 provider)