Практическое руководство по выбору и развёртыванию 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 десятки тарифов, но логика выбора простая.
| Параметр | Минимум | Комфорт | Зачем |
|---|---|---|---|
| CPU | 1 vCPU | 2 vCPU | Сборки, Node.js, базы данных любят второе ядро |
| RAM | 2 ГБ | 4 ГБ | На 1 ГБ современный стек упирается в нехватку памяти и OOM-killer |
| Диск | 30 ГБ NVMe | 40–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: дороже, но серьёзнее, выделенные серверы |
| Новичок без опыта в Linux | Beget: дружелюбная панель, всё через веб |
| Высокие нагрузки и managed-сервисы Яндекса | Yandex Cloud: 40+ сервисов, автоскейлинг, 60 дней триала |
| Сервер для ИИ-агента под российские API | Timeweb для 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.
Отдельный пользователь deploy с правами sudo, root-доступ по SSH закрыт.
Вход по паролю отключён, ключ работает в отдельном терминале до перезапуска sshd.
UFW включён, открыты только 22/80/443.
fail2ban установлен и активен.
Swap-файл 1–2 ГБ создан, добавлен в /etc/fstab для автоподключения.
Часовой пояс Europe/Moscow, автообновления только security-патчей через unattended-upgrades.
Caddy или nginx настроен, HTTPS работает, домен привязан через A-запись.
Создан тариф с IPv4-адресом, локация Москва или СПб.
Система обновлена, заведён пользователь с sudo, root-вход по паролю закрыт.
SSH работает только по ключу, проверен в отдельном терминале.
Включён UFW:
открыты только 22, 80, 443.
Установлен и запущен fail2ban.
Настроены swap-файл, часовой пояс и автообновления безопасности.
Сервисы в Docker публикуют порты только на localhost, наружу
— через Caddy.
Caddy отдаёт сайт по HTTPS, сертификат получен автоматически.
A-запись домена указывает на IPv4 сервера.
Долгоживущие сервисы под systemd/pm2 и стартуют после перезагрузки.
Настроены бэкапы и внешняя аптайм-проверка.
Заполнен серверный паспорт.
API-токен Timeweb сохранён в безопасном месте (не в коде и не в переписке), если планируете управлять инфраструктурой программно.
Ссылки
Ссылки
- Timeweb Cloud: timeweb.cloud
- Selectel: selectel.ru
- Beget: beget.com
- Yandex Cloud: yandex.cloud
- Caddy: caddyserver.com