Files
netrunner-data/.github/workflows/deploy-nginx.yml
T
nineap 6e47498dc5
Deploy Observability / Deploy Observability Stack (push) Successful in 36s
Deploy / Deploy to Data VPS (push) Successful in 42s
nginx
2026-07-10 17:06:05 +07:00

81 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Deploy Nginx
# Единственный публичный вход (443/80) на VPS с данными — system nginx
# (НЕ Docker, чтобы просто использовать certbot и его автопродление, без
# возни с сертификатами внутри контейнера). Только ручной запуск: nginx
# на этом сервере меняется редко, а сертификат/.htpasswd — одноразовые
# secrets-на-сервере, трогать их каждым push'ом смысла нет (тот же принцип,
# что и генерация сертификата Postgres в deploy.yml — один раз, не на
# каждый прогон).
#
# Порядок первого запуска:
# 1. Запустить эту джобу (поднимет http-конфиг + certbot + сам nginx).
# 2. Один раз руками на сервере:
# sudo apt-get install -y certbot
# sudo certbot certonly --webroot -w /var/www/certbot \
# -d grafana.netrunner-vpn.com -d vault.netrunner-vpn.com
# sudo htpasswd -c /etc/nginx/.htpasswd <username> # спросит пароль
# (htpasswd — из пакета apache2-utils, если его нет: apt-get install -y apache2-utils)
# 3. Запустить эту джобу ещё раз — увидит, что сертификат появился,
# включит netrunner-ssl.conf и перезагрузит nginx.
#
# Обновление одного из паролей позже — та же команда htpasswd без -c
# (создать) добавит/перезапишет юзера, не трогая остальных; -D <user> удаляет.
on:
workflow_dispatch:
jobs:
deploy:
name: Deploy nginx config to Data VPS
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Sync nginx 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: "nginx/netrunner-http.conf,nginx/netrunner-ssl.conf"
target: "/root/netrunner-data"
strip_components: 0
- name: Install/enable nginx via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ vars.DATA_VPS_IP }}
username: root
key: ${{ secrets.DATA_SSH_PRIVATE_KEY }}
script: |
set -e
if ! command -v nginx >/dev/null 2>&1; then
echo "📦 Устанавливаю nginx..."
apt-get update
apt-get install -y nginx
fi
mkdir -p /var/www/certbot
rm -f /etc/nginx/sites-enabled/default
cp /root/netrunner-data/nginx/netrunner-http.conf /etc/nginx/sites-available/netrunner-http.conf
cp /root/netrunner-data/nginx/netrunner-ssl.conf /etc/nginx/sites-available/netrunner-ssl.conf
ln -sf /etc/nginx/sites-available/netrunner-http.conf /etc/nginx/sites-enabled/netrunner-http.conf
CERT=/etc/letsencrypt/live/grafana.netrunner-vpn.com/fullchain.pem
if [ -f "$CERT" ]; then
ln -sf /etc/nginx/sites-available/netrunner-ssl.conf /etc/nginx/sites-enabled/netrunner-ssl.conf
echo "🔒 Сертификат найден — HTTPS-конфиг включён."
else
rm -f /etc/nginx/sites-enabled/netrunner-ssl.conf
echo "⚠️ Сертификата ещё нет ($CERT) — HTTPS-конфиг НЕ включён."
echo " Выпустите его руками (см. заголовок deploy-nginx.yml) и перезапустите эту джобу."
fi
nginx -t
systemctl enable --now nginx
systemctl reload nginx
echo "✅ nginx synchronized."