diff --git a/.env.example b/.env.example index b603d78..812b351 100644 --- a/.env.example +++ b/.env.example @@ -41,3 +41,12 @@ SMTP_PASSWORD=CHANGE_ME_GMAIL_APP_PASSWORD # BACKUP_RETENTION_DAYS=14 # RCLONE_REMOTE=b2:netrunner-backups # RCLONE_CONFIG_CONTENT содержимое rclone.conf одной переменной, см. rclone.conf.example + +# --- Наблюдаемость (docker-compose.observability.yml — Prometheus/Loki/ +# Grafana, отдельный стек от Postgres/Vaultwarden выше) --- +GRAFANA_PASSWORD=CHANGE_ME_GRAFANA_PASSWORD +# ВАЖНО: порт Loki (3100) публикуется наружу — сюда пушат логи тонкие +# promtail с backend/landing/каждой прокси-ноды. Firewall на этом VPS +# ОБЯЗАН ограничивать 3100 только IP этих хостов (см. шапку +# docker-compose.observability.yml) — сам Loki не защита от постороннего +# пуша логов. diff --git a/.gitea/workflows/deploy-observability.yml b/.gitea/workflows/deploy-observability.yml new file mode 100644 index 0000000..67b4f6a --- /dev/null +++ b/.gitea/workflows/deploy-observability.yml @@ -0,0 +1,59 @@ +name: Deploy Observability + +# Отдельный от deploy.yml workflow — Prometheus/Loki/Grafana не должны +# рестартовать вместе с Postgres/Vaultwarden (docker-compose.observability.yml +# вместо docker-compose.yml, разные жизненные циклы). Деплоится на тот же +# DATA_VPS_IP/DATA_SSH_PRIVATE_KEY, что и основной стек — тот же VPS. +# +# GRAFANA_PASSWORD — единственный настоящий секрет здесь, остальное (список +# таргетов, конфиги Loki/promtail/Grafana-datasources) — публичный код +# репозитория, не секреты. +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + deploy: + name: Deploy Observability Stack + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + - name: Sync compose file + observability configs to VPS + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ vars.DATA_VPS_IP }} + username: root + key: ${{ secrets.DATA_SSH_PRIVATE_KEY }} + source: "docker-compose.observability.yml,observability" + target: "/root/netrunner-data" + strip_components: 0 + + - name: Write .env and deploy via SSH + uses: appleboy/ssh-action@v1 + with: + host: ${{ vars.DATA_VPS_IP }} + username: root + key: ${{ secrets.DATA_SSH_PRIVATE_KEY }} + envs: "GRAFANA_PASSWORD" + script: | + set -e + cd /root/netrunner-data + + # Свой .env.observability, НЕ общий .env (тот принадлежит + # deploy.yml/docker-compose.yml и перезаписывается им целиком на + # каждом своём прогоне — общий файл рассинхронизировал бы стеки). + cat > .env.observability < .env.observability <