R
Rezinkin
Назад к блогу

Linux-сервер для разработчика: настройка с нуля

8 мин
LinuxDevOpsNginx

Выбор 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 — разрешить SSH
  • ufw allow 'Nginx Full' — разрешить HTTP и HTTPS
  • ufw 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. Весь процесс от чистого сервера до готового к продакшену окружения занимает около часа.