Введение: что мы делаем и зачем

«Нет ничего проще, чем купить сервер. Всё, что сложнее кнопки включения, начинается потом. — Воланд»

Назначение

Перед вами серия руководств, шаг за шагом превращающих чистый сервер Ubuntu 24.04 LTS в полнофункциональную платформу с блогом, VPN-туннелем и автоматическими резервными копиями.

Каждое руководство самодостаточно: в нём разъясняются понятия, которые в нём используются; описывается, что делает каждая команда, почему выбран именно этот вариант, и как проверить, что всё сработало. Если на вашем сервере что-то уже настроено — мы проверим это и перейдём дальше. Если чего-то нет — установим.

Руководства должны выполняться последовательно. Пропуск разделов, перескакивание на следующий — это как прыгать с первой ступеньки на третью: можно, но больно.


Что будет настроено

По завершении всех шагов ваш сервер будет представлять собой следующую архитектуру:

Слой 1: Безопасность и доступ

Компонент Назначение
SSH (порт 22022) Удалённый доступ, только по ключам ed25519
UFW Фаервол, закрывающий всё, кроме нужного
Fail2ban Блокировка брутфорса по трём тюрьмам
sudo (без пароля) Административные команды без лишних запросов

Слой 2: Сервисы

Компонент Назначение
Nginx (несколько виртуальных хостов) Обработка HTTPS-трафика на портах 80, 8443, 4443
PHP 8.4-FPM Исполнение PHP для Grav CMS
Grav CMS Блог-платформа на psj-notes.ru
Postfix Отправка уведомлений на email через Яндекс-релей

Слой 3: VPN (x-ui + Xray)

Компонент Назначение
Xray (VLESS + Reality) VPN-туннель на порту 443, маскируется под обычный HTTPS
x-ui панель Управление VPN-клиентами через веб-интерфейс

Для внешнего наблюдателя порт 443 — это обычный HTTPS-сайт. Только обладатель правильного конфигурационного файла получит доступ к VPN-туннелю.

Слой 4: Бэкапы

Что бэкапится Периодичность Хранение
База данных x-ui Ежедневно 14 дней
Файлы Grav CMS Ежедневно 7 дней
Конфигурации сервера Еженедельно 4 недели

Структура руководств

Название Краткое содержание
01 От VDS до SSH Покупка сервера → веб-консоль → SSH → пользователь uservpn
02 SSH-ключи, sudo и zsh SSH-ключи вместо паролей, sudo без пароля, zsh с плагинами
03 Базовая система Локаль, часовой пояс, hostname, swap-файл
04 UFW Фаервол, правила для нужных портов
05 Fail2ban Тюрьмы для SSH: sshd, sshd-ddos, recidive
06 Unattended-upgrades Автоматическое обновление безопасности
07 Postfix Send-only почта через Яндекс-релей
08 Nginx + PHP + SSL Виртуальные хосты, сертификаты Let's Encrypt, PHP-FPM
09 Grav CMS Установка, плагины, админка
10 x-ui + Xray VLESS + Reality, VPN-туннель на порту 443
11 Бэкапы Скрипты cron для x-ui, Grav, конфигов

Предупреждение

Воланд поднял палец:
«Запомните три правила, без которых вам не обойтись:

1. Никогда не выполняйте руководство по частям. Каждый шаг зависит от предыдущего.

2. Не закрывайте активную сессию SSH, пока не проверите, что новая работает. Иначе вы окажетесь заперты outside собственного дома.

3. Если что-то пошло не так — читайте вывод команды. Сервер не молчит. Он всегда говорит. Просто нужно уметь слушать.»


Что получится в итоге

Когда вы пройдёте все шаги, на вашем сервере будет:

  • Безопасный SSH — порт 22022, только ключи, только uservpn

  • Закрытый фаервол — открыто только то, что нужно

  • Блокировка сканеров — Fail2ban банит брутфорсеров и сканеров

  • Рабочий блог — Grav CMS на psj-notes.ru с админкой

  • Рабочий VPN — Xray VLESS + Reality, маскируется под HTTPS

  • Резервные копии — автоматические бэкапы баз данных, файлов CMS и конфигов

  • Автоматические обновления — только security, без перезагрузки

Сервер будет готов к работе. Вам останется только зайти в блог и написать первую статью. И, разумеется, подключиться к VPN и проверить туннель. И убедиться, что бэкапы работают.

Но это всё — уже потом. А пока начинаем с первого шага.


С чего начать

Откройте руководство 01 От VDS до SSH и выполните все шаги.

«Рукописи не горят, — заметил Воланд, — а серверы не настраиваются сами. Начинайте.»


Конец вводного документа. Прочитавшему — ясность, начавшему — терпение, бросившему — да будет ему rm -rf /.