#!/bin/bash # vpn-optimize.sh — полная оптимизация Debian 12 под VPN/X-Ray # Сеть (BBR, буферы, бэклог), nofile, лимиты systemd, x-ui override # Запуск: curl -fsSL https://gitea.creative-tg1.ru/CREATIVE_tg1/for-servers/raw/branch/main/server/vpn-optimize.sh | sudo bash set -e LIMIT_NOFILE=65535 echo "============================================" echo " VPN Server Optimization — Debian 12" echo "============================================" echo "" # ── 1. Сеть (sysctl) ───────────────────────────────────── echo "[1/4] Сетевые оптимизации (sysctl)..." cat >/etc/sysctl.d/99-vpn-network.conf </dev/null 2>&1 echo " OK" # ── 2. ulimit (root + * ) ──────────────────────────────── echo "[2/4] Лимиты файловых дескрипторов (limits.d)..." cat >/etc/security/limits.d/90-nofile.conf </dev/null; then sed -i "s/^#DefaultLimitNOFILE=.*/DefaultLimitNOFILE=${LIMIT_NOFILE}/" "$conf" elif ! grep -q "^DefaultLimitNOFILE=" "$conf" 2>/dev/null; then echo "DefaultLimitNOFILE=${LIMIT_NOFILE}" >> "$conf" else sed -i "s/^DefaultLimitNOFILE=.*/DefaultLimitNOFILE=${LIMIT_NOFILE}/" "$conf" fi done systemctl daemon-reload echo " OK" # ── 4. x-ui override (если есть) ───────────────────────── echo "[4/4] Override для x-ui..." mkdir -p /etc/systemd/system/x-ui.service.d cat >/etc/systemd/system/x-ui.service.d/override.conf </dev/null; then systemctl restart x-ui echo " OK (restarted)" else echo " OK (x-ui не запущен)" fi # ── Итоги ───────────────────────────────────────────────── echo "" echo "============================================" echo " Итог" echo "============================================" echo "" echo "Сеть:" sysctl net.core.default_qdisc sysctl net.ipv4.tcp_congestion_control echo "Soft ulimit: $(ulimit -Sn)" echo "Hard ulimit: $(ulimit -Hn)" echo "" if systemctl is-active --quiet x-ui 2>/dev/null; then echo "x-ui LimitNOFILE: $(systemctl show x-ui | grep ^LimitNOFILE=)" fi echo "" echo "Готово." echo "После перезагрузки сессии / машины — ulimit -n покажет ${LIMIT_NOFILE}"