Guide 01 — Linux
Linux Deploy Guide
Свежий VPS на Debian или Ubuntu: вход по ключу, закрытый SSH, файрвол, BBR и нормальные лимиты на файлы. Порядок важен — сначала ключ, потом отключение паролей.
Гайд рассчитан на чистый сервер, куда вы только что получили root-доступ по паролю. После шага 3 пароль для SSH работать не будет, поэтому ключ нужно скопировать заранее.
Копирование SSH-ключа и вход на сервер
Выполняется на локальном ПК в PowerShell. Публичный ключ дописывается в
authorized_keys, права на каталог и файл выставляются сразу.
Get-Content ~\.ssh\id_ed25519.pub | ssh root@<IP_СЕРВЕРА> "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Обновление пакетов и базовые утилиты
Подключаемся к серверу:
ssh root@<IP_СЕРВЕРА>
Обновляем систему и ставим всё, что понадобится дальше:
apt update && apt upgrade -y
apt install -y curl wget git ufw htop net-tools fail2ban dnsutils ca-certificates
Защита SSH: только ключи, только root
Меняем порт и отключаем вход по паролю. Команды ниже рассчитаны на
дефолтный sshd_config из Debian или Ubuntu.
# Смена порта на нестандартный (например, 2222)
sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
sed -i 's/Port 22/Port 2222/' /etc/ssh/sshd_config
# Вход root разрешён строго по ключу, пароли отключены
sed -i 's/PermitRootLogin yes/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart ssh || systemctl restart sshd
Не закрывая текущую сессию, откройте второе окно терминала и проверьте
вход: ssh -p 2222 root@<IP_СЕРВЕРА>. Если пускает —
можно закрывать старое окно.
Настройка файрвола (UFW)
Открываем только то, что нужно: SSH, HTTP и HTTPS.
ufw default deny incoming
ufw default allow outgoing
# Порт SSH (указывайте тот, который задали в шаге 3)
ufw allow 2222/tcp
# Порты для веб-сервера / Caddy / NaiveProxy
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
ufw status verbose
Включение BBR и тюнинг TCP-стека
Оптимизация сети под сетевые запросы парсера и быстрый прокси-трафик.
Настройки кладутся отдельным файлом, чтобы не трогать
/etc/sysctl.conf.
cat << 'EOF' > /etc/sysctl.d/99-custom-network.conf
# Включение алгоритма BBR
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
# Лимиты соединений и сокетов
fs.file-max = 2097152
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
EOF
Применяем настройки:
sysctl --system
Проверяем, что BBR действительно включился:
sysctl net.ipv4.tcp_congestion_control
# Ожидаемый вывод:
# net.ipv4.tcp_congestion_control = bbr
Увеличение лимитов на открытые файлы
Чтобы воркеры парсера и веб-сервер не упирались в ошибку
too many open files:
cat << 'EOF' > /etc/security/limits.d/99-nofile.conf
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
EOF
Лимиты подхватываются новыми сессиями. Переподключитесь по SSH и
выполните ulimit -n — должно вернуть
65535.