Практическое руководство по выбору и развёртыванию VPS в России: какой провайдер взять под задачу, как не переплатить за тариф и как за полчаса довести чистый сервер до состояния, в котором на нём можно безопасно держать рабочие сервисы. Разбираем TimeWeb, Selectel, Beget и Yandex Cloud — четыре провайдера, которые закрывают почти все запросы для pet-проектов, ботов, API и ИИ-контуров.

Ключевое правило: критично никогда не оставлять PasswordAuthentication yes вместе с root-доступом на боевом сервере. Это самая частая причина взлома российских VPS.

Что это

Российский VPS — это виртуальный сервер с российской пропиской: оплата рублями, дата-центры в Москве или СПб, низкий пинг до российской аудитории, доступ к российским API, которые пускают только с российских IP. Зарубежные облака удобнее и дешевле, но российский сервер выигрывает в нескольких сценариях: оплата картой РФ, 152-ФЗ для персональных данных, скорость для российской аудитории, доступ к локальным сервисам.

Совет: не складывайте всё в одно место. Статику и фронтенд можно отдать на зарубежный CDN, а в российском VPS держать backend, базу и интеграции с локальными сервисами.

Когда нужен российский VPS

Зарубежные облака (Hetzner, DigitalOcean, Cloudflare) удобнее и дешевле, но российский сервер выигрывает в нескольких сценариях.

  • Оплата рублями с карты РФ. Зарубежные провайдеры почти все отказались от российских карт, и оплата превращается в квест.
  • 152-ФЗ и персональные данные. Если вы храните персональные данные россиян, по закону они должны лежать на серверах в РФ.
  • Низкий пинг до российской аудитории. Сайт и API из московского дата-центра отвечают пользователям в России на десятки миллисекунд быстрее.
  • Доступность для российских сервисов. Многие API (банки, Госуслуги, Яндекс 360) пускают только российские IP.

Зачем нужно

  • Личный сайт, Telegram-бот, MVP или небольшой API — сервер с российской оплатой и пингом.
  • Хранение персональных данных россиян по 152-ФЗ — закон требует, чтобы данные лежали в РФ.
  • Production-проект с гибкой конфигурацией — приватные сети, выделенные серверы, серьёзная репутация.
  • Высокие нагрузки и интеграция с экосистемой Яндекса — managed-базы, автоскейлинг, 60 дней триала.
  • Сервер для ИИ-агента, который работает с российскими API (банки, Госуслуги, Яндекс 360).

TimeWeb, Selectel, Beget, Yandex Cloud: кого выбрать

Четыре провайдера закрывают почти все запросы. Различаются они не ценой, а тем, сколько контроля и сложности вы готовы взять на себя.

ПровайдерКому подходитСильные стороныНа что смотреть
Timeweb CloudБольшинство pet-проектов, сайтов, ботов, MVPЛучшая цена в РФ, простая панель, почасовая оплата, NVMe, дата-центры в РФ и ЕвропеIPv4 оплачивается отдельно; короткий тестовый период
SelectelЗрелые продакшен-проекты, командыГибкая конфигурация, приватные сети, выделенные серверы, сильная репутацияДороже и сложнее на старте
BegetНовички, простые сайты и ботыСамая дружелюбная панель, отличный аптайм, простой биллингМеньше гибкости в конфигурациях
Yandex CloudСерьёзные нагрузки, интеграция с экосистемой Яндекса40+ управляемых сервисов, managed-базы, автоскейлинг, 60 дней триалаВысокий порог входа, выше цена, оплата по факту потребления

Trade-off: Timeweb и Beget дают вам «сервер целиком» по фиксированной цене и заставляют настраивать всё руками. Yandex Cloud берёт настройку на себя, но считает деньги за каждый сервис отдельно, и счёт легко вырастает. Для типичного российского пользователя — личный сайт, Telegram-бот, небольшой API или ИИ-агент — оптимальная отправная точка это Timeweb Cloud: дёшево, понятно и достаточно мощно.

Как устроено

Четыре провайдера различаются не ценой, а тем, сколько контроля и сложности вы готовы взять на себя.

Как выбрать тариф: CPU, RAM, SSD, локация

У Timeweb десятки тарифов, но логика выбора простая.

ПараметрМинимумКомфортЗачем
CPU1 vCPU2 vCPUСборки, Node.js, базы данных любят второе ядро
RAM2 ГБ4 ГБНа 1 ГБ современный стек упирается в нехватку памяти и OOM-killer
Диск30 ГБ NVMe40–80 ГБ NVMeОС, Docker-образы и логи съедают место быстрее, чем кажется
ЛокацияМосква / СПбМосква / СПбМинимальный пинг до российской аудитории

Ориентировочные цены Timeweb на 2026 год: тариф с 2 vCPU / 2 ГБ / 40 ГБ NVMe стоит примерно 700–900 ₽/мес, конфигурация 4 ГБ RAM — около 1 500 ₽/мес. Трафик безлимитный, оплата почасовая, минимальный платёж для старта 50 ₽.

Внимание: публичный IPv4-адрес у Timeweb оплачивается отдельно — около 180–200 ₽/мес. Это не «доплата ни за что», а обязательный пункт для большинства задач. Закладывайте его в бюджет сразу.

Совет: берите тип сервера с процессорами 3.3 ГГц (линейка на AMD EPYC) для обычных задач, либо HighCPU 5 ГГц, если важна скорость одного потока (например, синхронные сборки). Почасовая оплата позволяет завести мощный сервер на час для теста и удалить его.

ПровайдерКому подходитСильные стороныНа что смотреть
Timeweb CloudБольшинство pet-проектов, сайтов, ботов, MVPЛучшая цена в РФ, простая панель, почасовая оплата, NVMe, дата-центры в РФ и ЕвропеIPv4 оплачивается отдельно; короткий тестовый период
SelectelЗрелые продакшен-проекты, командыГибкая конфигурация, приватные сети, выделенные серверы, сильная репутацияДороже и сложнее на старте
BegetНовички, простые сайты и ботыСамая дружелюбная панель, отличный аптайм, простой биллингМеньше гибкости в конфигурациях
Yandex CloudСерьёзные нагрузки, интеграция с экосистемой Яндекса40+ управляемых сервисов, managed-базы, автоскейлинг, 60 дней триалаВысокий порог входа, выше цена, оплата по факту потребления

Когда использовать

СитуацияРешение
Pet-проект, личный сайт, Telegram-ботTimeweb Cloud: дёшево, понятно, достаточно мощно
Production с гибкой конфигурацией и приватными сетямиSelectel: дороже, но серьёзнее, выделенные серверы
Новичок без опыта в LinuxBeget: дружелюбная панель, всё через веб
Высокие нагрузки и managed-сервисы ЯндексаYandex Cloud: 40+ сервисов, автоскейлинг, 60 дней триала
Сервер для ИИ-агента под российские APITimeweb для MVP, Selectel для production, Yandex Cloud для масштаба

Гигиена системы: swap, часовой пояс, автообновления

Три небольшие настройки, которые новички пропускают, а потом ловят странные сбои.

  • Swap-файл. На дешёвых тарифах с 1–2 ГБ RAM сборка фронтенда или запуск базы легко упираются в потолок памяти, и тогда OOM-killer убивает процесс. Swap-файл на 1–2 ГБ даёт системе подушку.
  • Часовой пояс. По умолчанию сервер живёт в UTC. Если вы смотрите логи и ставите задачи в cron по московскому времени, выставьте пояс сразу, иначе расследование инцидентов превращается в арифметику.
  • Автообновления безопасности. Чтобы критические патчи ставились без вашего участия.
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

timedatectl set-timezone Europe/Moscow

apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

Совет: автообновления оставьте только для security-патчей. Полное автообновление всех пакетов на боевом сервере иногда ломает рабочие сервисы в самый неудобный момент.

IPv4 обязателен: почему нельзя сэкономить

Внимание: огромная часть внешних сервисов и API до сих пор живёт только в IPv4. Сервер без IPv4-адреса не сможет до них достучаться — исходящие соединения просто не установятся.

Живой пример из практики: конвейер синхронизации Plaud (выгрузка транскриптов через неофициальный API) на IPv6-only сервере молча не работал — эндпоинты сервиса доступны только по IPv4. Диагностика таких проблем коварна: сайт открывается, ping проходит, а конкретная интеграция «без причины» отваливается.

Правило: для любого сервера, который ходит во внешние API, берите IPv4-адрес сразу. IPv6 оставьте как дополнение, а не как замену.

Docker: запуск сервисов в контейнерах

Боты, API и базы данных удобно держать в контейнерах: окружение изолировано, а перенос на другой сервер сводится к копированию compose-файла. Установка официального Docker на Ubuntu:

curl -fsSL https://get.docker.com | sh

# Запускать docker без sudo
usermod -aG docker deploy

# Дальше — описываете сервисы в docker-compose.yml и поднимаете
docker compose up -d

Внимание: Docker по умолчанию пишет правила прямо в iptables и обходит UFW. Контейнер с ports: 5432:5432 окажется доступен из интернета, даже если этот порт закрыт в UFW. Публикуйте порты только на localhost (127.0.0.1:5432:5432), а наружу отдавайте сервисы через Caddy.

Логи и состояние контейнеров смотрите через docker compose logs -f и docker ps. Долгоживущие стеки запускайте с политикой перезапуска restart: unless-stopped, чтобы они поднимались после перезагрузки сервера.

Деплой Astro и сервисов под Cloudflare Workers

Статический сайт на Astro разворачивается на VPS тривиально: собираете и кладёте результат в директорию, которую отдаёт Caddy.

npm ci
npm run build # результат в ./dist
rsync -a --delete ./dist/ /var/www/example/

Сложнее с сервисами, написанными под Cloudflare Workers: они рассчитаны на edge-рантайм, а не на обычный Node.js. На своём VPS есть два пути:

  • workerd — официальный опенсорсный рантайм Cloudflare. Запускает Worker-код локально, максимально близко к продакшену Cloudflare.
  • Адаптация под Node.js — если Worker использует только стандартные API, его часто можно собрать под Node-совместимый рантайм (например, через Nitro или Hono с Node-адаптером) и запустить под менеджером процессов.

Любой долгоживущий процесс держите под systemd или pm2, чтобы он переживал перезагрузку сервера и падения.

Пример

Минимальный тариф Timeweb для типичного сервера: 2 vCPU, 2 ГБ RAM, 40 ГБ NVMe — около 700–900 ₽/мес, конфигурация 4 ГБ RAM — около 1 500 ₽/мес. Трафик безлимитный, оплата почасовая, минимальный платёж для старта 50 ₽. Берите тип сервера с процессорами 3.3 ГГц (линейка на AMD EPYC) для обычных задач, либо HighCPU 5 ГГц, если важна скорость одного потока (например, синхронные сборки).

Первичная настройка на Ubuntu 24.04 LTS. После создания сервера — базовая защита, потому что новый сервер с открытым SSH и паролем root начинают перебирать боты в первые же минуты.

# 1. Обновите систему и создайте рабочего пользователя
apt update && apt upgrade -y

# Создаём пользователя с правами sudo
adduser deploy
usermod -aG sudo deploy

# Переносим свой публичный SSH-ключ новому пользователю
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy

# 2. Закройте вход по паролю и под root
echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config
systemctl restart ssh

# 3. Включите firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

# 4. Поставьте fail2ban
apt install fail2ban -y
systemctl enable --now fail2ban

Важно: облачные образы Timeweb и других провайдеров нередко кладут отдельный файл в /etc/ssh/sshd_config.d/, который включает вход по паролю и переопределяет основной конфиг. Если после правок пароль всё ещё принимается, загляните в эту папку и поправьте файлы в ней.

Серверный паспорт и мониторинг

Через полгода вы забудете, что и зачем крутится на сервере. Заведите серверный паспорт — короткий документ (можно прямо в Notion) с ключевой информацией.

Что писать в паспорте сервера: провайдер и тариф, IP-адреса, ОС, список запущенных сервисов и их порты, какие домены ведут на сервер, где лежат бэкапы, дата создания и контакт ответственного.

Минимальный мониторинг, чтобы узнавать о проблемах раньше пользователей:

  • Аптайм-проверка снаружи — бесплатный UptimeRobot или подобный сервис, который пингует сайт и шлёт уведомление при падении.
  • Место на диске — самая частая причина внезапных отказов. Настройте алерт при заполнении выше 80%.
  • Бэкапы — Timeweb предлагает автоматические резервные копии за доплату. Для базы данных дополнительно делайте pg_dump/mysqldump по расписанию в cron.
  • Логи — journalctl -u имя-сервиса и логи Caddy в /var/log подскажут причину при разборе инцидента.

Бэкапы без иллюзий: автоматический бэкап Timeweb копирует диск целиком, но повреждённую базу он сохранит вместе с ошибкой. Держите дампы pg_dump/mysqldump отдельно и складывайте копию вне сервера — другой VPS, объектное хранилище S3 или Synology. И обязательно проверяйте восстановление: бэкап, который ни разу не разворачивали, бесполезен.

Управление инфраструктурой через API Timeweb

Панель — не единственный способ управлять серверами. У Timeweb Cloud есть полноценный API, через который можно поднимать и удалять VPS, управлять дисками и снапшотами, читать и менять DNS-записи, настраивать firewall-группы и включать бэкапы. Почти всё, что вы делаете мышкой в панели, доступно программно и воспроизводимо.

Ценность API растёт вместе с числом серверов. Для одной машины хватает панели. Но когда их становится пять или семь, ручная инвентаризация превращается в археологию: вкладка за вкладкой, скриншот за скриншотом. API отдаёт ту же картину одним списком — сколько VPS, какие диски, где включены бэкапы, какие домены и DNS заведены, какие firewall-группы подключены.

Два принципа, если выдаёте API-доступ скрипту или агенту:

  • Сначала только чтение. API облака — это кнопка, рядом с которой мелким шрифтом написано «удалить DNS» и «остановить production». Начните с read-only: соберите карту, а изменения вносите отдельными согласованными шагами.
  • Токен — это ключ от всего. Не храните его в коде репозитория и не вставляйте в переписку. Держите в менеджере секретов или переменных окружения и отзывайте, если он мог утечь.

У API есть важное ограничение: он видит облачный слой, но не заглядывает внутрь сервера. Он покажет, что VPS существует, какой у него диск и есть ли бэкап, но не расскажет, что внутри кто-то полгода назад поднял Docker и забыл базу. Полная картина собирается в два слоя — API снаружи и SSH изнутри.

Ограничения

ОграничениеПояснение
Публичный IPv4-адрес у Timeweb оплачивается отдельно — около 180–200 ₽/мес.Закладывайте его в бюджет сразу, это обязательный пункт для большинства задач.
Yandex Cloud считает деньги за каждый сервис отдельноСчёт легко вырастает, если не мониторить потребление.
На дешёвых тарифах с 1–2 ГБ RAM сборка фронтенда или запуск базы легко упираются в потолок памятиSwap-файл на 1–2 ГБ даёт подушку, но это не замена RAM.
Полное автообновление всех пакетов на боевом сервере иногда ломает рабочие сервисыОставляйте только security-патчи через unattended-upgrades.
Caddy проще nginx, но nginx мощнее и гибче.Для нового проекта берите Caddy, для сложных конфигураций — nginx с certbot.
Облачные образы Timeweb и других провайдеров нередко кладут отдельный файл в /etc/ssh/sshd_config.d/, который включает вход по паролю и переопределяет основной конфигЕсли после правок пароль всё ещё принимается, загляните в эту папку и поправьте файлы в ней.
Домен в Cloudflare.Прокси (оранжевое облако) можно оставить включённым — он скроет реальный IP и добавит защиту, но тогда сертификат на сервере и режим SSL в Cloudflare должны совпадать (Full strict).
Тип сервера определяется задачей.3.3 ГГц (AMD EPYC) — обычные задачи. HighCPU 5 ГГц — скорость одного потока, синхронные сборки. Почасовая оплата позволяет тестировать разные конфигурации без долгосрочных обязательств.
Astro-сборка тривиальна на VPS — npm ci && npm run build && rsync, всё.Сложности начинаются с Cloudflare Workers — нужен workerd или адаптация под Node.js.
Read-only API в начале.Сначала собрать карту инфраструктуры, изменения вносить отдельными согласованными шагами. API видит облачный слой, но не заглядывает внутрь — полная картина в два слоя — API снаружи + SSH изнутри.

Антипаттерны

АнтипаттернПочему опасно
Не делатьоставлять парольный вход SSH с root — потому что это главная причина взлома российских VPS, боты перебирают в первые минуты.
Не делатьэкономить на swap-файле — потому что OOM-killer убьёт процесс в неподходящий момент, и расследование инцидента займёт часы.
Не делатьзапускать сервер в UTC и забыть про часовой пояс — потому что логи и cron-задачи по московскому времени требуют пересчёта.
Не делатьвыбирать Yandex Cloud для простого сайта — потому что счёт за managed-сервисы вырастет быстрее, чем экономия на администрировании.
Экономить на IPv4 и брать IPv6-only сервер.Огромная часть внешних API живёт только в IPv4. Сервер без IPv4-адреса не сможет до них достучаться — исходящие соединения просто не установятся. Диагностика таких проблем коварна — всё работает, а конкретная интеграция «без причины» отваливается.
Публиковать порты Docker на 0.0.0.0.По умолчанию Docker пишет правила прямо в iptables и обходит UFW. Контейнер с ports — 5432:5432 окажется доступен из интернета, даже если этот порт закрыт в UFW. Публикуйте порты только на localhost (127.0.0.1:5432:5432), а наружу отдавайте сервисы через Caddy.
Доверять «автоматическому бэкапу» без проверки восстановления — Timeweb копирует диск целиком, но повреждённую базу сохранит вместе с ошибкой.Бэкап, который ни разу не разворачивали, бесполезен.
Хранить API-токен облака в коде репозитория или в переписке.Токен — это ключ от всего, включая «удалить DNS» и «остановить production». Держите в менеджере секретов и отзывайте, если мог утечь.
Игнорировать паспорт сервера — Через полгода вы забудете, что и зачем крутится.Без паспорта расследование инцидента превращается в археологию.

Чеклист

ПроверкаЧто сделать
Ubuntu 24.04 LTS как ОС, всё обновлено через apt update && apt upgradeоткрыты только 22, 80, 443.
Установлен и запущен fail2banчерез Caddy.
Caddy отдаёт сайт по HTTPS, сертификат получен автоматически
A-запись домена указывает на IPv4 сервера
Долгоживущие сервисы под systemd/pm2 и стартуют после перезагрузки
Настроены бэкапы и внешняя аптайм-проверка
Заполнен серверный паспорт
API-токен Timeweb сохранён в безопасном месте (не в коде и не в переписке), если планируете управлять инфраструктурой программно