Skip to content

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-redis na s60-network
  • [x] Nginx reverse proxy s SSL (certbot)
  • [x] S60Auth nasazený (OAuth2 provider)

Nginx config

server {
    server_name <domain>;

    location / { proxy_pass http://127.0.0.1:3100; }
}