Добавить server/server-init.sh

This commit is contained in:
2026-04-13 12:59:21 +00:00
parent 1f6adb2cb0
commit 795629b1c2

55
server/server-init.sh Normal file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env bash
set -euo pipefail
MARKER="/var/lib/first-boot-init.done"
LOG="/var/log/first-boot-init.log"
# Запускать только от root
if [[ "${EUID}" -ne 0 ]]; then
echo "Run as root (sudo)." >&2
exit 1
fi
# Одноразовый запуск
if [[ -f "$MARKER" ]]; then
echo "Already initialized. Marker exists: $MARKER"
exit 0
fi
exec > >(tee -a "$LOG") 2>&1
echo "=== First boot init started at $(date -Is) ==="
# 1) Обновление системы
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y upgrade
apt-get -y autoremove --purge
# 2) Установка UFW и Fail2ban
apt-get -y install ufw fail2ban
# 3) Настройка UFW (важно: не отрезать себе доступ по SSH)
SSH_PORT="${SSH_PORT:-22}"
ufw --force reset
ufw default deny incoming
ufw default allow outgoing
ufw allow "${SSH_PORT}/tcp" comment "Allow SSH"
ufw --force enable
# 4) Fail2ban: включить и запустить
systemctl enable fail2ban
systemctl restart fail2ban
# (Опционально) показать статус
ufw status verbose || true
systemctl --no-pager --full status fail2ban || true
# 5) Маркер выполнения
mkdir -p "$(dirname "$MARKER")"
touch "$MARKER"
echo "=== First boot init finished at $(date -Is) ==="
echo "Marker created: $MARKER"
echo "Log: $LOG"