#!/usr/bin/env bash set -euo pipefail # One-shot bootstrap для own-git стека: # - устанавливает зависимости; # - разворачивает Gitea через docker compose; # - раскладывает конфиги HAProxy/fail2ban/systemd; # - включает timer бэкапов; # - печатает пост-инсталляционный чеклист. # # ВНИМАНИЕ: # 1) Проверьте и отредактируйте переменные ниже перед запуском. # 2) Скрипт рассчитан на Ubuntu 24.04+. # 3) Запускать от root (sudo). SERVER_DOMAIN="${SERVER_DOMAIN:-git.papatramp.ru}" GITEA_LAN_IP="${GITEA_LAN_IP:-192.168.128.100}" OWGIT_REPO_DIR="${OWGIT_REPO_DIR:-/opt/owngit}" GITEA_BASE_DIR="${GITEA_BASE_DIR:-/opt/gitea}" INSTALL_UFW="${INSTALL_UFW:-false}" ENABLE_FAIL2BAN="${ENABLE_FAIL2BAN:-true}" ENABLE_BACKUP_TIMER="${ENABLE_BACKUP_TIMER:-true}" DRY_RUN="${DRY_RUN:-false}" log() { echo "[INFO] $*"; } ok() { echo "[OK] $*"; } warn() { echo "[WARN] $*"; } err() { echo "[ERR] $*"; } usage() { cat < /etc/haproxy/certs/papatramp.pem" run_cmd rm -f /tmp/owngit-selfsigned.crt /tmp/owngit-selfsigned.key warn "Используется временный сертификат. Замените на боевой Let's Encrypt/PEM." fi run_cmd haproxy -c -f /etc/haproxy/haproxy.cfg run_cmd systemctl enable --now haproxy run_cmd systemctl reload haproxy ok "HAProxy применен и перезагружен" } deploy_fail2ban() { if [[ "$ENABLE_FAIL2BAN" != "true" ]]; then warn "Fail2ban пропущен (ENABLE_FAIL2BAN=false)" return fi log "Настраиваю fail2ban..." run_cmd apt-get install -y fail2ban run_cmd mkdir -p /etc/fail2ban/jail.d run_cmd cp -a "$OWGIT_REPO_DIR/fail2ban/jail.d/owngit.local" /etc/fail2ban/jail.d/owngit.local run_cmd systemctl enable --now fail2ban ok "Fail2ban включен" } deploy_backup_timer() { if [[ "$ENABLE_BACKUP_TIMER" != "true" ]]; then warn "Backup timer пропущен (ENABLE_BACKUP_TIMER=false)" return fi log "Устанавливаю systemd backup timer..." run_cmd cp -a "$OWGIT_REPO_DIR/systemd/gitea-backup.service" /etc/systemd/system/gitea-backup.service run_cmd cp -a "$OWGIT_REPO_DIR/systemd/gitea-backup.timer" /etc/systemd/system/gitea-backup.timer run_cmd systemctl daemon-reload run_cmd systemctl enable --now gitea-backup.timer ok "Backup timer включен" } maybe_setup_ufw() { if [[ "$INSTALL_UFW" != "true" ]]; then warn "UFW не применялся (INSTALL_UFW=false)" return fi if [[ ! -x "$OWGIT_REPO_DIR/scripts/setup-ufw.sh" ]]; then run_cmd chmod +x "$OWGIT_REPO_DIR/scripts/setup-ufw.sh" fi log "Применяю UFW..." run_cmd "$OWGIT_REPO_DIR/scripts/setup-ufw.sh" ok "UFW настроен" } print_checklist() { cat <