From 985772e9c6c8151167611154013037da44ac9c08 Mon Sep 17 00:00:00 2001 From: CREATIVE_tg1 Date: Tue, 9 Jun 2026 12:28:58 +0000 Subject: [PATCH] =?UTF-8?q?server:=20vpn-optimize.sh=20=E2=80=94=20BBR,=20?= =?UTF-8?q?nofile,=20systemd,=20x-ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/vpn-optimize.sh | 172 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100755 server/vpn-optimize.sh diff --git a/server/vpn-optimize.sh b/server/vpn-optimize.sh new file mode 100755 index 0000000..8814232 --- /dev/null +++ b/server/vpn-optimize.sh @@ -0,0 +1,172 @@ +#!/bin/bash +# vpn-optimize.sh — полная оптимизация Debian 12 под VPN/X-Ray +# Сеть (BBR, буферы, бэклог), nofile, лимиты systemd, x-ui override +# Запуск: bash vpn-optimize.sh + +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}"