Add safe external HAProxy deployment flow.

Make bootstrap skip local HAProxy by default and support remote HAProxy config backup, validation, reload, and rollback over SSH.

Made-with: Cursor
This commit is contained in:
PTah
2026-04-21 22:11:54 +10:00
parent f5899ebc56
commit 57340e1349
2 changed files with 164 additions and 17 deletions
+60 -4
View File
@@ -19,7 +19,7 @@
- `scripts/setup-ufw.sh` — базовая настройка UFW под эту схему портов.
- `scripts/safe-apply-ssh-hardening.sh` — безопасное применение SSH hardening.
- `scripts/safe-apply-ssh-lockdown.sh` — безопасное применение строгого SSH lockdown-профиля.
- `scripts/bootstrap-own-git.sh` — one-shot установка стека (deps + Gitea + HAProxy + fail2ban + timer).
- `scripts/bootstrap-own-git.sh` — one-shot установка стека (deps + Gitea + опционально HAProxy + fail2ban + timer).
- `.env.example` — шаблон переменных окружения для миграции.
- `Makefile` — быстрые команды установки/проверки/миграции.
- `docs/troubleshooting.md` — типовые проблемы и диагностика.
@@ -51,17 +51,17 @@ cd /opt/gitea
sudo docker compose up -d
```
Или one-shot bootstrap:
Или one-shot bootstrap (без локального HAProxy, если он уже есть отдельно):
```bash
chmod +x scripts/bootstrap-own-git.sh
sudo OWGIT_REPO_DIR=/opt/owngit scripts/bootstrap-own-git.sh
sudo OWGIT_REPO_DIR=/opt/owngit ENABLE_HAPROXY=false scripts/bootstrap-own-git.sh
```
Сначала безопасная проверка шагов без изменений:
```bash
OWGIT_REPO_DIR=/opt/owngit scripts/bootstrap-own-git.sh --dry-run
sudo OWGIT_REPO_DIR=/opt/owngit ENABLE_HAPROXY=false scripts/bootstrap-own-git.sh --dry-run
```
Полезные переменные bootstrap:
@@ -69,11 +69,65 @@ OWGIT_REPO_DIR=/opt/owngit scripts/bootstrap-own-git.sh --dry-run
```bash
SERVER_DOMAIN=git.papatramp.ru
GITEA_LAN_IP=192.168.128.100
ENABLE_HAPROXY=false
ENABLE_REMOTE_HAPROXY_DEPLOY=false
REMOTE_HAPROXY_HOST=192.168.128.65
REMOTE_HAPROXY_PORT=22
REMOTE_HAPROXY_USER=papatramp
# REMOTE_HAPROXY_PASSWORD='ваш_пароль_ssh'
INSTALL_UFW=false
ENABLE_FAIL2BAN=true
ENABLE_BACKUP_TIMER=true
```
### Безопасный порядок для чистого Ubuntu 24.04
```bash
sudo mkdir -p /opt && cd /opt
sudo git clone https://github.com/PTah/owngit.git
cd /opt/owngit && sudo chmod +x scripts/bootstrap-own-git.sh
```
Сначала прогон без изменений:
```bash
sudo OWGIT_REPO_DIR=/opt/owngit ENABLE_HAPROXY=false scripts/bootstrap-own-git.sh --dry-run
```
Потом реальный запуск:
```bash
sudo OWGIT_REPO_DIR=/opt/owngit ENABLE_HAPROXY=false scripts/bootstrap-own-git.sh
```
После установки быстрая проверка:
```bash
docker ps
sudo systemctl status haproxy --no-pager
curl -I http://127.0.0.1:3000
```
Если HAProxy у вас на отдельном узле (например, `192.168.128.65`), проверяйте его сервис на этом узле и обновите там backend на новый IP Gitea (`:3000`) и SSH proxy (`:2222`).
### Автообновление удаленного HAProxy по SSH
`bootstrap-own-git.sh` умеет подключаться к удаленному HAProxy-серверу, делать backup текущего `/etc/haproxy/haproxy.cfg`, загружать новый конфиг, валидировать его и делать `reload` (с откатом при ошибке).
Пример запуска для вашего случая:
```bash
sudo OWGIT_REPO_DIR=/opt/owngit \
ENABLE_HAPROXY=false \
ENABLE_REMOTE_HAPROXY_DEPLOY=true \
REMOTE_HAPROXY_HOST=192.168.128.65 \
REMOTE_HAPROXY_USER=papatramp \
REMOTE_HAPROXY_PASSWORD='ваш_пароль_ssh' \
scripts/bootstrap-own-git.sh
```
Рекомендуется сначала сделать dry-run с теми же переменными.
Положить `app.ini`:
```bash
@@ -91,6 +145,8 @@ openssl rand -hex 32
## 2) Установка HAProxy конфига
Если HAProxy уже работает на отдельном сервере (например, `192.168.128.65`), этот раздел применяется на том сервере HAProxy, а не на хосте с Gitea.
```bash
sudo cp haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg
sudo haproxy -c -f /etc/haproxy/haproxy.cfg