Выбор VPS и первичная настройка
Для своих проектов я выбрал VPS на Ubuntu 22.04 с 2 vCPU и 4 ГБ RAM — этого достаточно для нескольких контейнеризированных сервисов. Первое, что нужно сделать после создания сервера — настроить безопасность: создать обычного пользователя, настроить SSH-ключи и отключить вход по паролю. Это закрывает 90% автоматизированных атак.
Безопасность: firewall и fail2ban
Настройка ufw занимает пару минут: разрешаем порты
22 (SSH), 80 (HTTP) и 443 (HTTPS), остальное блокируем. Далее
устанавливаем fail2ban — он автоматически блокирует
IP-адреса после нескольких неудачных попыток входа. Конфигурация
по умолчанию уже хороша, но я увеличиваю bantime до
1 часа и уменьшаю maxretry до 3 попыток.
ufw allow OpenSSH— разрешить SSHufw allow 'Nginx Full'— разрешить HTTP и HTTPSufw enable— активировать firewall
Docker и Nginx как reverse proxy
Установка Docker по официальной документации — дело пяти минут.
Все сервисы запускаются в контейнерах, а Nginx на хосте работает
как reverse proxy: принимает входящие запросы и перенаправляет их
в нужный контейнер по доменному имени. Каждый проект получает свой
конфиг в /etc/nginx/sites-available/ с директивой
proxy_pass на соответствующий порт контейнера.
SSL через Certbot
Бесплатные SSL-сертификаты от Let's Encrypt устанавливаются через
certbot. Одна команда — и сайт работает по HTTPS
с автоматическим продлением сертификата. Certbot сам модифицирует
конфиг Nginx, добавляя редирект с HTTP на HTTPS. После настройки
остаётся убедиться, что cron-задача для продления работает:
certbot renew --dry-run. Весь процесс от чистого
сервера до готового к продакшену окружения занимает около часа.