VDS за NAT — как на нём хостить фоновые задания и веб-сервисы

Немного расскажу об экономии на хостинге для небольших и «игрушечных» проектов.

Use Case:

Такой вариант отлично подойдёт для:

  1. Автоматизаций умного дома;
  2. Легких фоновых заданий;
  3. проектов, где нужно просто что-то делать в фоне и отображать данные на веб-страничке.

Иногда хочется запустить что-то маленькое, но жаба душит арендовать полноценный VDS с выделенным IP и прочими «плюшками» — ведь сервер будет простаивать 99,9% времени, и нужен вам, по сути, только один порт.

Альтернативы:

  1. Если фон не нужен, можно использовать бесплатный аккаунт на render.com. Там ваша нода будет «засыпать» через пару минут без HTTP-запросов, но этого часто достаточно.
  2. Если фоновая работа необходима, можно взять самый бюджетный тариф у обычных провайдеров (например, Aruba) — это 2–3 евро в месяц. В целом, недорого.

Но… что если я покажу вариант в 12 раз дешевле? 😉

Решение

Для микропроектов подойдёт VDS, работающий за NAT — такие предлагают хостинг-провайдеры, экономящие на сетевой инфраструктуре, не давая пользователям IP в "полное" пользование.

Например, Gullo (это не реклама, хотя могла бы быть :с):

../../../Assets/VDS за NAT/Pasted image 20250503174351.png

Можно взять сервер от $3.5 в год. Это копейки. Можно даже взять несколько — на запас, вдруг пригодятся.

Минусы и как их обойти

Технически это полноценный VDS, но с ограничениями по сети:

  • Все машины «живут» за одним внешним IP;
  • Вам выделяется пул из 20 портов, через которые можно достучаться снаружи (один из них — под SSH);

../../../Assets/VDS за NAT/Pasted image 20250503175410.png

Для большинства задач — вполне достаточно.

Как красиво хостить веб?

Можно запустить сайт на любом из доступных портов, но это будет выглядеть как yourdomain.com:12345 — не очень эстетично.

Алгоритм красивости:

Используем Cloudflare с бесплатным DNS и функцией проксирования:

  1. Зарегистрируйтесь на Cloudflare и подключите свой домен к их DNS.
  2. Пропишите внешний IP сервера в настройках домена.
  3. Включите проксирование:
    ../../../Assets/VDS за NAT/Pasted image 20250503180710.png
  4. Перейдите в раздел Rules → Templates, и выберите нужное правило:
    ../../../Assets/VDS за NAT/Pasted image 20250503180842.png
  5. Настройте правила редиректа (редиректить всё, или какой-то отдельный поддомен/запрос) и укажите порт.

Готово! Теперь при заходе на https://yourdomain.com будет открываться ваш сайт, физически работающий на другом порту.

Например, вот эта милая собака раздаётся с порта 11119, а открывается через стандартный 443:

../../../Assets/VDS за NAT/Pasted image 20250503182001.png

Собака

(можете сами открыть в новой вкладке и проверить)

Что у меня уже работает на таком сервере?

На таких инстансах у меня сейчас:

  1. Мини-сервер для статики (в т.ч. конфиги для VPN );
  2. Сервер для парсера барахолок в Telegram, плюс веб-интерфейс со статистикой.

И всё это — за копейки. Работает отлично.