Практическое руководство по выбору и развёртыванию 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 | открыты только 22, 80, 443. |
| Установлен и запущен fail2ban | через Caddy. |
| Caddy отдаёт сайт по HTTPS, сертификат получен автоматически | |
| A-запись домена указывает на IPv4 сервера | |
| Долгоживущие сервисы под systemd/pm2 и стартуют после перезагрузки | |
| Настроены бэкапы и внешняя аптайм-проверка | |
| Заполнен серверный паспорт | |
| API-токен Timeweb сохранён в безопасном месте (не в коде и не в переписке), если планируете управлять инфраструктурой программно |