К контенту
habrforever
ЖИВА #vless ≈2026 · ~8 мин чтения

Шпаргалка по настройке VPS на Debian/Ubuntu (2025) — актуализация 2026

оригинал на Хабре habr.com/…/977026
снимок Wayback не сохранялся
статус на Хабре (ноябрь 2026) доступна
права © автор, переиздание в архивных целях с указанием источника

Шпаргалка по настройке VPS на Debian/Ubuntu (2025)

Архивное переиздание с актуализацией. Оригинал опубликован на Habr (≈2026), автор — неизвестен. оригинал доступен на Habr по состоянию на ноябрь 2026. Ниже — редакция ноября 2026: что работает сейчас, что изменилось и как правильно повторить рецепт сегодня. Полный текст оригинала — в конце, без купюр.

TL;DR — версия 2026

VLESS+REALITY (Xray) в 2026 — главный рекомендованный способ: маскировка под TLS к чужому крупному сайту, активное зондирование не проходит, домен и сертификат не нужны.

Оригинал попал в первую волну статей о VLESS+Reality — и с тех пор подход не просто выжил, а стал стандартом: фактическим стандартом антицензурного туннелирования в 2026 стал VLESS + REALITY (Xray-core): он маскируется под обычный HTTPS-трафик к крупному сайту и не требует собственного домена и сертификата; по данным РКН, за 2025 год в России заблокировано 258 VPN-сервисов, и почти все выжившие сервисы сидят именно на Xray. Что изменилось с публикации: пару-тройку версий Xray-ядра, новые клиенты, панели 3x-ui/Marzban с автонастройкой Reality, и — увы — статья о том, как это ставить, стала легальной мишенью (российские сайты и сами хабр-авторы начали массово удалять статьи о VPN (статьи отдают HTTP 451 «удалена по юридическим причинам») — именно поэтому появляются проекты-архивы вроде этого).

Статус оригинала

Минимальный сервер 2026

Актуальный Xray-core (ветка 2x/25.x) — ставится официальным скриптом; ключевые поля:

"inbounds": [{
  "listen": "0.0.0.0",
  "port": 443,
  "protocol": "vless",
  "settings": {
    "clients": [{ "id": "<uuid>", "flow": "xtls-rprx-vision" }],
    "decryption": "none"
  },
  "streamSettings": {
    "security": "reality",
    "realitySettings": {
      "dest": "www.microsoft.com:443",
      "serverNames": ["www.microsoft.com"],
      "shortId": "",
      "privateKey": "<x25519>"
    }
  }
}]

Выбор dest: крупный зарубежный сайт с TLS 1.3 + H2, НЕ ваш CDN, не российский, не «за Cloudflare» (цикл). Проверка: openssl s_client -connect dest:443 с сервера должна отдавать нужный SNI.

Клиенты и панели 2026

  • клиенты: v2rayN (Windows), NekoBox/NekoRay, Hiddify (кросс), v2rayNG (Android), Streisand/Shadowrocket (iOS — ставить быстро, Apple вычищает их из стора волнами);
  • панели: 3x-ui (мульти-протокол, лимиты трафика, подписки) и Marzban — обе ставятся docker-compose и закрывают тему «у меня 5 друзей»;
  • подписка: ссылка vless://... превращается в QR/URL, Hiddify сам обновляет;
  • проверка блокировок вокруг вашего сервера: blockcheck от ValdikSS.

Почему REALITY до сих пор непробиваем

REALITY «крадёт» рукопожатие у настоящего TLS-сайта: ваш сервер, не имея сертификата, отдаёт клиенту handshake реального target-сайта (dest), а внутри договаривается о ключах. Со стороны (DPI, активный probe) это обычный HTTPS к популярному ресурсу. Ответить probe-ом «не тем» сервер не может — нечем отличить. В 2025–2026 у операторов блокировок остаётся один приём: резать «подозрительные» IP целиком. Лечится CDN-фронтом или сменой IP.

Что изменилось с ≈2026 года

  • uTLS-фingerprint клиента теперь критичен (chrome/firefox из коробки)
  • flow xtls-rprx-vision — норма; старые flow без vision уязвимы к детекту
  • XHTTP-транспорт добавился как альтернатива ws/gRPC за CDN
  • 3x-ui заменил большинство «костыльных» bash-панелей из статей 2023 года
  • iOS-клиенты требуют зарубежный Apple ID чаще, чем в 2024
  • в тексте оригинала: классический OpenVPN легко детектится DPI (используется в корпсредах, но не для обхода блокировок)
  • в тексте оригинала: у «ванильного» WireGuard статичный хендшейк — DPI его режет; обфусцированный вариант — AmneziaWG

Чек-лист 2026

  • dest — живой крупный сайт с TLS1.3, доступный С ВАШЕГО сервера
  • shortId непустой
  • uTLS fingerprint клиента совпадает с типичным браузером
  • сервер не «светится» сканерами (закрыть 80/8080-заглушки)
  • fallback на реальный сайт, если probe придёт без правильного SNI

Вердикт

Оригинальная статья была верной — просто Xray с тех пор обновился, панели стали удобнее, а сама тема — юридически горячей. Конфиг выше — минимальная «сегодня-работает»-версия; вся методология оригинала (x25519-ключи, SNI-подбор, проверка blockcheck) неизменна.


ОРИГИНАЛ СТАТЬИ (без изменений)

Привет!

За годы работы и самообучения Linux’у у меня сформировалась шпаргалка с разными командами. Наконец-то дошли руки — и с помощью ИИ всё это упорядочено, обновлено и отформатировано. Полученный материал представляю вашему вниманию для всех, кто ещё не освоил 100% автоматизацию процесса, но постоянно покупает виртуальные сервера для своих нужд.

Что мы сделаем?

Подключимся по SSH.

Изменим hostname.

Обновим систему и установим ПО.

Настроим timezone.

Изменим порт SSH (опционально).

Настроим firewall (UFW).

Создадим sudo-пользователя.

Настроим SSH-ключи.

Отключим root-логин и заблокируем root.

Включим автоматические обновления.

Установим Fail2Ban.

(Опционально) Добавим nightly reboot и speedtest.


1. Подключение по SSH

VPS обычно доступны под root по SSH. Из Windows (PowerShell), Linux и macOS команда одна и та же: Putty не предлагать!

ssh root@YOUR_IP
2. Изменение hostname

Есть хостеры, которые даже не предлагают установить свой hostname, а вместо этого генерируют нечитаемую ерунду. Мне так не нравится, поэтому первым делом меняем hostname.

Установите новый hostname:

hostnamectl set-hostname new-hostname

Замените new-hostname на желаемое (например, my-perfect-vps-01).

Обновите /etc/hosts:

nano /etc/hosts

Измените строки, где есть старое имя сервера:

127.0.1.1 new-hostname

Чтобы настройки применились, нужно перезайти на хост или выполнить reboot. Пока просто проверьте: hostnamectl.

3. Обновление системы и установка утилит

Это святое! Всегда в первую очередь выполняем:

apt update && apt upgrade -y

Теперь устанавливаем всё, что может понадобиться. Простая команда (удалите лишнее и укажите нужное):

apt install curl wget git vim htop tmux unzip zip jq tree net-tools rsync lsof iotop iftop nethogs sysstat dstat glances btop ncdu duf nginx apache2 haproxy caddy certbot postgresql postgresql-contrib redis-server build-essential python3-pip python3-venv nodejs npm neofetch screenfetch ranger mc iptables-persistent wireguard openvpn nfs-common cifs-utils mosh docker.io

Или вот команда с выбором, чтобы не ставить лишнее:

packages_to_install=""; for pkg in curl wget git vim htop tmux unzip zip jq tree net-tools rsync lsof iotop iftop nethogs sysstat dstat glances btop ncdu duf nginx apache2 haproxy docker.io caddy certbot postgresql postgresql-contrib redis-server build-essential python3-pip python3-venv nodejs npm neofetch screenfetch ranger mc iptables-persistent wireguard openvpn nfs-common cifs-utils mosh; do read -p "Install $pkg? [y/n, default=n]: " yn; yn=${yn:-n}; case $yn in [Yy]*) packages_to_install="$packages_to_install $pkg" ;; esac; done; [ -n "$packages_to_install" ] && apt install -y $packages_to_install

Тут много программ — один раз составьте свой список фаворитов, потом просто от ситуации будете выбирать только из нужных программ.

Здесь есть docker.io, но в своих проектах я чаще использую самые свежие версии, поэтому обычно устанавливаю Docker официальным скриптом:

curl -fsSL https://get.docker.com | sh

Чтобы работать с Docker без sudo, добавьте пользователя в группу (делается после создания пользователя):

sudo usermod -aG docker $USER

После этого перезайдите по SSH.

4. Настройка timezone

timedatectl set-timezone Europe/Moscow

Замените на свою (список: timedatectl list-timezones). Проверьте:

timedatectl
5. Изменение порта SSH (опционально, для hardening)

Поменяйте на порт >1024, чтобы снизить сканирование и попытки подбора пароля.

nano /etc/ssh/sshd_config

Найдите #Port 22, раскомментируйте и измените: Port 2222 (или свой). Перезапустите:

systemctl restart ssh

Предупреждение: Откройте новое соединение на новом порту перед закрытием старого: ssh -p 2222 root@YOUR_IP.

6. Настройка firewall (UFW)

Установите (если не установлено):

apt install -y ufw

Разрешите порты:

ufw allow OpenSSH               # Или ufw allow 2222/tcp для кастомного порта
ufw allow 80/tcp                # HTTP, если нужно
ufw allow 443/tcp               # HTTPS, если нужно
ufw default deny incoming
ufw default allow outgoing
ufw enable

Проверьте:

ufw status verbose
7. Создание sudo-пользователя

adduser yourusername
usermod -aG sudo yourusername

Проверьте (переключитесь):

su - yourusername
sudo whoami   # Должен вывести 'root'
8. Настройка SSH-ключей

На клиенте (Windows/Linux/macOS):

# Рекомендуемый вариант в 2025 году
ssh-keygen -t ed25519 -C "your_email@example.com"

Скопируйте публичный ключ (весь вывод команды):

cat ~/.ssh/id_ed25519.pub

На сервере (под новым пользователем):

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys   # Вставьте ключ
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

В /etc/ssh/sshd_config убедитесь, что есть:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Перезапустите:

sudo systemctl restart ssh

Критически важно: Откройте новое окно и убедитесь, что можете зайти по ключу под новым пользователем (с новым портом, если меняли). Только после этого переходите дальше!

9. Отключение root-логина и пароля

Предупреждение: Хостер потеряет root-доступ. Если хостер предоставляет прямой доступ к root (VNC-консоль и т.п.), он перестанет работать. Только rebuild при проблемах.

В /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Установите:

PermitRootLogin no
PasswordAuthentication no

Перезапустите:

systemctl restart ssh

Заблокируйте root:

sudo passwd -l root   # Блокировка пароля
sudo passwd -d root # Или вовсе удаляем пароль, теперь под root никто не пройдёт

Проверьте подключение по ключу ещё раз.


10. Автоматические обновления

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades   # Выберите Yes

Настройте /etc/apt/apt.conf.d/50unattended-upgrades (раскомментируйте нужное):

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}:${distro_codename}-updates";  // Опционально
};

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Можно добавить уведомления на почту:

Unattended-Upgrade::Mail "your@email.com";

В /etc/apt/apt.conf.d/20auto-upgrades:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
11. Настройка Fail2Ban

sudo apt install -y fail2ban

Создайте /etc/fail2ban/jail.local:

sudo nano /etc/fail2ban/jail.local

Содержимое:

[DEFAULT]
banaction = ufw
bantime = 3600
findtime = 600
maxretry = 5
backend = systemd
ignoreip = 127.0.0.1/8 YOUR_IP   # Добавьте свой домашний IP

[sshd]
enabled = true
port = ssh                      # Или ваш кастомный порт
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Перезапустите:

systemctl restart fail2ban

Проверьте: sudo fail2ban-client status sshd или sudo ufw status.

12. Ночная перезагрузка (опционально)

Обычно сервера прекрасно работают без этого, но если какое-то ПО сбивается, можно добавить reboot в 3:00:

sudo crontab -e

Добавьте строку:

0 3 * * * /sbin/reboot

Проверьте: crontab -l. Для теста: sudo /sbin/reboot.

13. Speedtest (для теста сети)

Знаю, что многим Speedtest не нравится, потому что он попсовый, но как по мне идеальный способ быстро оценить канал хостера. Всего 2 команды! А то бывает, что пишут гигабит, а там от силы 300 мбит\с.

apt install speedtest-cli

Запуск:

speedtest                  # Базовый тест
speedtest --servers        # Список серверов
speedtest --server-id=1111 # По ID
Заключение

С помощью простых шагов мы получили базовый минимум солидного сервера, закрыли основные проблемы с безопасностью, настроили вход только по ключу и включили автообновления.

Это точно не финальная версия шпаргалки — я постоянно её дорабатываю. Если у вас есть комментарии, замечания, предложения или возражения, с радостью приму их в свою практику и обновлю текст.

по теме #vless