Deploy default status page to /var/www/statuspage

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-06 11:45:11 +03:00
1 parent ad4400f3d3
commit daf572e1f2
3 files changed
+39 -24

No files matched your search

+31 -18
View File
@@ -22,6 +22,8 @@ set -Eeuo pipefail
XUI_VERSION="v2.8.11"
NEBULA_VERSION="1.10.3"
REPO_RAW="https://gitea.hsrv.site/mrleo1nid/vps_installer/raw/branch/main"
STATUSPAGE_DIR="/var/www/statuspage"
LOG_FILE="/var/log/vps-setup.log"
DEFAULT_BLOCKLIST_URL="https://raw.githubusercontent.com/jahlib/somebody-knocked-my-ssh/refs/heads/main/ban.txt"
BAN_SCRIPT_URL="https://raw.githubusercontent.com/jahlib/somebody-knocked-my-ssh/refs/heads/main/ban.sh"
@@ -297,9 +299,20 @@ else
step "7. Блокировка IP — пропущено"
fi
# ---------- 8. Docker ----------
# ---------- 8. Статус-страница ----------
step "8. Статус-страница $STATUSPAGE_DIR"
if [[ -f $STATUSPAGE_DIR/index.html ]]; then
info "$STATUSPAGE_DIR/index.html уже есть — не трогаю"
else
install -d -m 755 "$STATUSPAGE_DIR"
curl -fsSL "$REPO_RAW/statuspage/index.html" -o "$STATUSPAGE_DIR/index.html"
chmod 644 "$STATUSPAGE_DIR/index.html"
ok "Заглушка положена в $STATUSPAGE_DIR/index.html"
fi
# ---------- 9. Docker ----------
if [[ $INSTALL_DOCKER == y ]]; then
step "8. Docker + Docker Compose"
step "9. Docker + Docker Compose"
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
dpkg -s "$pkg" &>/dev/null && apt-get remove -y -q "$pkg"
done
@@ -316,12 +329,12 @@ if [[ $INSTALL_DOCKER == y ]]; then
info "$NEW_USER добавлен в группу docker"
warn "Docker публикует порты в обход UFW — биндите на 127.0.0.1:PORT или фильтруйте в DOCKER-USER"
else
step "8. Docker — пропущено"
step "9. Docker — пропущено"
fi
# ---------- 9. Telegraf ----------
# ---------- 10. Telegraf ----------
if [[ $INSTALL_TELEGRAF == y ]]; then
step "9. Telegraf"
step "10. Telegraf"
mkdir -p /etc/apt/keyrings
curl -fsSL https://repos.influxdata.com/influxdata-archive.key \
| gpg --batch --yes --dearmor -o /etc/apt/keyrings/influxdata.gpg
@@ -349,12 +362,12 @@ EOF
ok "$(telegraf --version) установлен, сервис выключен до настройки"
todo "Telegraf: заполнить /etc/telegraf/telegraf.conf → telegraf --config /etc/telegraf/telegraf.conf --test → systemctl enable --now telegraf"
else
step "9. Telegraf — пропущено"
step "10. Telegraf — пропущено"
fi
# ---------- 10. Nebula ----------
# ---------- 11. Nebula ----------
if [[ $INSTALL_NEBULA == y ]]; then
step "10. Nebula $NEBULA_VERSION"
step "11. Nebula $NEBULA_VERSION"
NEBULA_TMP=$(mktemp -d)
curl -fsSL "https://github.com/slackhq/nebula/releases/download/v$NEBULA_VERSION/nebula-linux-$ARCH.tar.gz" \
-o "$NEBULA_TMP/nebula.tar.gz"
@@ -379,13 +392,13 @@ if [[ $INSTALL_NEBULA == y ]]; then
ok "$(nebula -version | head -n1), юнит установлен, сервис не запущен (нет сертификатов)"
todo "Nebula: положить ca.crt, <node>.crt, <node>.key и config.yml в /etc/nebula (пример: config.yml.example), chmod 600 /etc/nebula/*.key → systemctl enable --now nebula"
else
step "10. Nebula — пропущено"
step "11. Nebula — пропущено"
fi
# ---------- 11. 3x-ui ----------
# ---------- 12. 3x-ui ----------
# ставим до Caddy: установщику 3x-ui для сертификата Let's Encrypt нужен свободный порт 80
if [[ $INSTALL_3XUI == y ]]; then
step "11. 3x-ui $XUI_VERSION"
step "12. 3x-ui $XUI_VERSION"
XUI_INSTALLER=$(mktemp)
curl -fsSL "https://raw.githubusercontent.com/mhsanaei/3x-ui/$XUI_VERSION/install.sh" -o "$XUI_INSTALLER"
info "Дальше — вопросы установщика 3x-ui (порт панели, SSL)."
@@ -404,12 +417,12 @@ if [[ $INSTALL_3XUI == y ]]; then
fi
rm -f "$XUI_INSTALLER"
else
step "11. 3x-ui — пропущено"
step "12. 3x-ui — пропущено"
fi
# ---------- 12. Caddy ----------
# ---------- 13. Caddy ----------
if [[ $INSTALL_CADDY == y ]]; then
step "12. Caddy"
step "13. Caddy"
apt_install debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| gpg --batch --yes --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
@@ -420,12 +433,12 @@ if [[ $INSTALL_CADDY == y ]]; then
ok "Caddy $(caddy version | awk '{print $1}') установлен (стандартный Caddyfile)"
todo "Caddy: заполнить /etc/caddy/Caddyfile → caddy validate --config /etc/caddy/Caddyfile && systemctl reload caddy"
else
step "12. Caddy — пропущено"
step "13. Caddy — пропущено"
fi
# ---------- 13. Отключение доступа root ----------
# ---------- 14. Отключение доступа root ----------
if [[ $HARDEN_SSH == y ]]; then
step "13. Отключение доступа root"
step "14. Отключение доступа root"
# вход новым пользователем — по паролю, поэтому PasswordAuthentication включён явно
cat >"$SSHD_HARDENING" <<'EOF'
PermitRootLogin no
@@ -439,7 +452,7 @@ EOF
passwd -l root >/dev/null
ok "Вход root по SSH запрещён, пароль root заблокирован"
else
step "13. Отключение доступа root — пропущено"
step "14. Отключение доступа root — пропущено"
fi
# ---------- итог ----------