/8 мин

Бесплатный хостинг сайта на Яндекс Cloud: 0 ₽/мес вместо Vercel

Vercel, Netlify, Cloudflare Pages — популярные хостинги для статических сайтов, но из России они работают нестабильно. Зарубежные CDN блокируются или тормозят. Российские альтернативы вроде Sweb, Beget и TimeWeb стоят от 200–400₽/мес — за то, что по сути раздача файлов.

Мы нашли способ захостить сайт на Яндекс Cloud полностью бесплатно: Object Storage, DNS, SSL-сертификат, serverless-функции и аналитика — всё в рамках free tier.

Почему Vercel не работает из России

Vercel хостит сайты на CDN-серверах в Европе и США. Из России доступ нестабильный: сайт то грузится за 3 секунды, то не открывается вообще. Для бизнес-сайта, ориентированного на российскую аудиторию, это критично.

Vercel при этом бесплатный (Hobby plan) — проблема не в цене, а в доступности. Netlify и Cloudflare Pages — та же ситуация: серверы за рубежом, доступ из РФ не гарантирован.

Российские хостинги: сколько стоят

ХостингТарифЧто включено
Sweb~300₽/месShared hosting, PHP
Beget~200₽/месShared hosting
TimeWeb~180₽/месVPS, 1 vCPU
REG.RU VPS~400₽/мес1 vCPU, 1GB RAM
← прокрутите →

Для статического сайта (HTML + CSS + JS) всё это избыточно. Не нужен PHP, не нужен виртуальный сервер. Нужен бакет с файлами и доменное имя.

Яндекс Cloud: бесплатный хостинг для статического сайта

Яндекс Cloud предоставляет free tier, который полностью покрывает хостинг небольшого сайта:

РесурсБесплатный лимит
Object Storage (хранилище)1 ГБ
Cloud Functions (serverless)1 млн вызовов/мес
DNS-управлениеБесплатно
SSL-сертификат (Let's Encrypt)Бесплатно
API Gateway100K запросов/мес
← прокрутите →

Итого: 0 ₽/мес. Единственная платёжка — домен (~800₽/год).

Для сравнения: наш сайт занимает ~15 МБ из доступного гигабайта. Запас — в 60 раз.

Как настроить хостинг на Яндекс Cloud

1. Подготовка сайта

Сайт должен быть статическим — набор HTML, CSS, JS файлов. Если используете фреймворк (Next.js, Nuxt, Astro), нужна статическая сборка.

Для Next.js — три строчки в конфиге:

const nextConfig = {
  output: "export",       // генерирует папку /out со статическим HTML
  trailingSlash: true,    // /page/ вместо /page
  images: { unoptimized: true },
};

После npm run build получаете папку out/ — это и есть ваш сайт.

2. Создание бакета в Object Storage

В консоли Яндекс Cloud:

  1. Создайте бакет с именем вашего домена (например, vexai.ru)
  2. Включите хостинг статического сайта в настройках бакета
  3. Укажите index.html как индексный файл и 404.html как страницу ошибки
  4. Создайте сервис-аккаунт с ролью storage.editor
  5. Сгенерируйте статические ключи доступа для загрузки файлов

3. DNS и SSL

  1. Создайте DNS-зону в Яндекс Cloud DNS
  2. Добавьте ANAME-запись для корневого домена → бакет
  3. Добавьте CNAME для www → бакет
  4. В регистраторе домена (reg.ru и др.) смените NS-серверы на яндексовые
  5. Запросите SSL-сертификат через Certificate Manager — Let's Encrypt выдаётся за 5 минут

4. Загрузка сайта

Загрузка файлов через yc CLI. Важный момент — MIME-типы нужно указывать вручную:

yc storage s3 cp index.html "s3://ваш-домен/index.html" \
  --content-type "text/html; charset=utf-8"
 
yc storage s3 cp styles.css "s3://ваш-домен/styles.css" \
  --content-type "text/css; charset=utf-8"

Без --content-type Яндекс Object Storage отдаёт CSS как application/octet-stream — браузер его проигнорирует и сайт будет белым экраном. Это нигде толком не описано в документации.

5. Аналитика: Яндекс Метрика

Яндекс Метрика — бесплатная альтернатива Google Analytics с бонусами:

  • Вебвизор — запись сессий посетителей (видно, куда кликают, как скроллят)
  • Тепловые карты — визуализация кликов и скроллинга
  • Точный расчёт отказов — не считает отказом посетителя, который читал страницу 30 секунд

Для подключения нужен счётчик Метрики и несколько строк JavaScript-кода на сайте.

Подводные камни

MIME-типы в Object Storage [критично]

Object Storage не определяет типы файлов автоматически. Без явного указания --content-type при загрузке:

  • CSS → application/octet-stream → стили не применяются
  • JS → application/octet-stream → скрипты не выполняются
  • Шрифты → application/octet-stream → шрифты не грузятся

Результат: сайт выглядит сломанным. Решение — указывать MIME-тип для каждого файла при загрузке, или написать деплой-скрипт с маппингом расширений.

DNS-пропагация [ожидаемо]

После смены NS-серверов у регистратора — от 2 до 48 часов на пропагацию. У нас заняло ~6 часов. В это время сайт может работать с одних устройств и не работать с других. Это нормально — просто ждать.

Нет preview-деплоев

В отличие от Vercel, здесь нет автоматических preview по pull request. Для небольшого проекта хватает localhost для проверки перед деплоем.

Итого: Vercel vs Яндекс Cloud для российского сайта

Vercel (бесплатный)Яндекс Cloud (бесплатный)
Доступность из РФНестабильноСтабильно
Стоимость$00 ₽
SSL-сертификатАвтоматическийLet's Encrypt (авто)
АналитикаНет (нужен PostHog/GA)Яндекс Метрика (бесплатно)
ServerlessVercel FunctionsCloud Functions (1М бесплатно)
Деплойgit push./deploy.sh
Preview по PRЕстьНет
Серверы в РФНетДа
← прокрутите →

Для сайта с российской аудиторией Яндекс Cloud — рабочая альтернатива Vercel. Бесплатно, стабильно, серверы в России. Подводные камни есть (MIME-типы, DNS), но решаются за один раз.

Если у вас похожая задача — пишите, поможем с настройкой.

Есть задача?

Обсудим ваш проект.

Написать в Telegram