«Нет ничего проще, чем купить сервер. Всё, что сложнее кнопки включения, начинается потом. — Воланд»
Перед вами серия руководств, шаг за шагом превращающих чистый сервер Ubuntu 24.04 LTS в полнофункциональную платформу с блогом, VPN-туннелем и автоматическими резервными копиями.
Каждое руководство самодостаточно: в нём разъясняются понятия, которые в нём используются; описывается, что делает каждая команда, почему выбран именно этот вариант, и как проверить, что всё сработало. Если на вашем сервере что-то уже настроено — мы проверим это и перейдём дальше. Если чего-то нет — установим.
Руководства должны выполняться последовательно. Пропуск разделов, перескакивание на следующий — это как прыгать с первой ступеньки на третью: можно, но больно.
По завершении всех шагов ваш сервер будет представлять собой следующую архитектуру:
| Компонент | Назначение |
|---|---|
| SSH (порт 22022) | Удалённый доступ, только по ключам ed25519 |
| UFW | Фаервол, закрывающий всё, кроме нужного |
| Fail2ban | Блокировка брутфорса по трём тюрьмам |
| sudo (без пароля) | Административные команды без лишних запросов |
| Компонент | Назначение |
|---|---|
| Nginx (несколько виртуальных хостов) | Обработка HTTPS-трафика на портах 80, 8443, 4443 |
| PHP 8.4-FPM | Исполнение PHP для Grav CMS |
| Grav CMS | Блог-платформа на psj-notes.ru |
| Postfix | Отправка уведомлений на email через Яндекс-релей |
| Компонент | Назначение |
|---|---|
| Xray (VLESS + Reality) | VPN-туннель на порту 443, маскируется под обычный HTTPS |
| x-ui панель | Управление VPN-клиентами через веб-интерфейс |
Для внешнего наблюдателя порт 443 — это обычный HTTPS-сайт. Только обладатель правильного конфигурационного файла получит доступ к VPN-туннелю.
| Что бэкапится | Периодичность | Хранение |
|---|---|---|
| База данных 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 /.