Самый быстрый и дешёвый способ выложить сайт в продакшен в 2026 году — это связка из трёх компонентов, которую любой может собрать примерно за тридцать минут. Регистрируем домен у любого нормального регистратора (в этой статье берём GoDaddy для примера, но Namecheap, Porkbun или Gandi работают одинаково), направляем его DNS на бесплатный план Cloudflare — получаем DNS, бесплатный SSL и бесплатную защиту от DDoS в одной коробке, и поднимаем сам веб-сервер на маленьком VPS. Эта статья проводит по каждому шагу, включая команды для четырёх самых частых стэков (статический HTML, PHP, Python, Node.js).
Что нужно (и сколько это стоит)
| Регистратор домена (GoDaddy, Namecheap, Porkbun, Gandi …) | ~$10–15 в год за .com |
| DNS + CDN + SSL + DDoS — бесплатный план Cloudflare | Бесплатно, без карты |
| VPS — тариф Starter в NetGrid Host | €2.98 в месяц, разворачивается за ~60 секунд |
| Итого в месяц | ~€2/мес за сервер + ~$1/мес амортизация домена |
Шаг 1 — зарегистрировать домен
Заведите аккаунт на GoDaddy (или у любого другого ICANN-аккредитованного регистратора), найдите нужное имя, оплатите. Стандартной регистрации достаточно — больше ничего не нужно.
Шаг 2 — зарегистрироваться в Cloudflare и добавить сайт
Создайте бесплатный аккаунт на cloudflare.com, затем:
- Нажмите Add a site в дашборде.
- Введите ваш домен (например `example.com`) — без https:// и без www.
- Выберите план Free (он внизу списка, может потребоваться прокрутить).
- Cloudflare сканирует существующие DNS-записи (для свежего домена обычно ничего не находит) и выдаёт два nameservers вида `marek.ns.cloudflare.com` и `tessa.ns.cloudflare.com`. Конкретная пара уникальна для вашего аккаунта — запишите.
Шаг 3 — направить GoDaddy на nameservers Cloudflare
- GoDaddy → My Products → рядом с вашим доменом нажмите DNS → прокрутите до Nameservers → Change.
- Выберите I'll use my own nameservers.
- Удалите дефолтные GoDaddy-овские, вставьте две nameservers от Cloudflare из Шага 2.
- Сохраните. GoDaddy может попросить подтвердить по почте.
- В Cloudflare нажмите Done, check nameservers.
Шаг 4 — заказать VPS на NetGrid Host
На netgrid.host выберите тариф (Starter за €2.98/мес хватает для подавляющего большинства маленьких сайтов), выберите локацию ближе к аудитории, выберите ОС — для веб-серверов рекомендуем Ubuntu 24.04 LTS (долгосрочная поддержка, любое руководство в интернете на ней работает). VPS соберётся и запустится примерно за 60 секунд. Вам придёт письмо с публичным IP, root-паролем и SSH-портом.
Шаг 5 — направить Cloudflare на ваш VPS (A-запись)
- Cloudflare → ваш домен → DNS → Records → Add record.
- Type: A.
- Name: `@` (это означает голый домен, например `example.com`).
- IPv4 address: публичный IP из приветственного письма NetGrid Host.
- Proxy status: Proxied (оранжевое облачко). Это и есть магия — трафик идёт через сеть Cloudflare, что даёт бесплатный SSL и защиту от DDoS. Если поставить DNS only (серое облачко), Cloudflare просто резолвит DNS и не вмешивается — теряются CDN, SSL и DDoS-фильтр.
- TTL: Auto.
- Save.
Затем добавьте запись для `www`, чтобы работали оба варианта: и `example.com`, и `www.example.com`:
- Add record → Type CNAME.
- Name: `www`.
- Target: `example.com` (ваш голый домен).
- Proxy status: Proxied.
- Save.
Шаг 6 — включить бесплатный SSL (HTTPS)
Cloudflare → SSL/TLS → Overview → выберите режим SSL/TLS encryption:
| Off | Полностью отключает HTTPS. Не используйте. |
| Flexible | HTTPS между посетителем и Cloudflare; HTTP между Cloudflare и вашим VPS. Самый быстрый способ запустить, но задняя половина незашифрована. ОК на первые 10 минут, потом перейти выше. |
| Full | HTTPS end-to-end, но Cloudflare не валидирует сертификат на вашем VPS — самоподписанный сходит. Хороший промежуточный. |
| Full (strict) ★ | HTTPS end-to-end, Cloudflare валидирует сертификат на VPS. Рекомендуемая цель. Бесплатный Cloudflare Origin Certificate (см. Шаг 9) поднимает сюда за 5 минут. |
Шаг 7 — бесплатная защита от DDoS (уже работает)
Никакой кнопки «включить DDoS» нет — она автоматически активна с момента, когда DNS в режиме Proxied через Cloudflare. Бесплатный план поглощает L3/L4 объёмные атаки порядка десятков Гбит/с без вашего участия. Долгие масштабные L7-атаки могут потребовать платный план, но для типичных малых/средних сайтов бесплатного тира хватает реально.
Шаг 8 — собственно поднять веб-сервер на VPS
Подключитесь по SSH (используйте IP, порт и root-пароль из приветственного письма):
ssh -p <ПОРТ> root@<IP-ВАШЕГО-VPS>Дальше зависит от того, какой у вас сайт. Выберите вкладку под ваш стек — команды установки и рабочий nginx-конфиг для каждого:
Статический сайт HTML / JS / CSS
sudo apt update && sudo apt install -y nginx
sudo rm /etc/nginx/sites-enabled/default
# Файлы сайта кладём сюда:
sudo mkdir -p /var/www/example.com
echo '<h1>It works!</h1>' | sudo tee /var/www/example.com/index.html
sudo chown -R www-data:www-data /var/www/example.comМинимальный конфиг nginx — сохраните как `/etc/nginx/sites-available/example.com.conf` (Debian) или `/etc/nginx/conf.d/example.com.conf` (RHEL):
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}# Только для Debian/Ubuntu — активировать сайт:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
# Везде — проверить и перезагрузить:
sudo nginx -t && sudo systemctl reload nginxPHP-сайт (стек LEMP)
sudo apt install -y nginx php-fpm php-mysql mariadb-server
sudo systemctl enable --now nginx php8.3-fpm mariadb
sudo mkdir -p /var/www/example.com
echo '<?php phpinfo();' | sudo tee /var/www/example.com/index.php
sudo chown -R www-data:www-data /var/www/example.comnginx-конфиг, который отдаёт `.php` файлы PHP-FPM:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html;
location / { try_files $uri $uri/ /index.php?$args; }
location ~ \.php$ {
include fastcgi_params;
# Скорректируйте путь к сокету под ваш дистрибутив/версию PHP:
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}Python-сайт (gunicorn + nginx reverse proxy)
sudo apt install -y nginx python3-venv python3-pip
sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
cd /var/www/example.com
python3 -m venv venv
source venv/bin/activate
pip install gunicorn flask # или django, fastapi, и т.д.Запускаем gunicorn под systemd. Сохраните как `/etc/systemd/system/example.service`:
[Unit]
Description=example.com gunicorn
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/example.com
Environment="PATH=/var/www/example.com/venv/bin"
ExecStart=/var/www/example.com/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now example
sudo systemctl status examplenginx как reverse-proxy перед gunicorn:
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Node.js-сайт (pm2 + nginx reverse proxy)
# Установка Node.js 22 LTS через NodeSource:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs nginx
sudo npm install -g pm2# В директории проекта:
cd /var/www/example.com
npm install
pm2 start npm --name example -- start # или: pm2 start server.js --name example
pm2 save
pm2 startup # выполните напечатанную команду для автостартаnginx-конфиг — тот же reverse-proxy паттерн, только укажите порт, на котором слушает ваше Node-приложение (обычно 3000):
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Шаг 9 — закрыть петлю с Cloudflare Origin SSL (Full strict)
Когда сайт уже грузится по простому HTTP через Cloudflare, надо проапгрейдить соединение между Cloudflare и вашим VPS до зашифрованного-и-валидируемого:
- Cloudflare → SSL/TLS → Origin Server → Create Certificate. Дефолты подходят. Cloudflare выдаст публичный сертификат и приватный ключ.
- На VPS: сохраните сертификат как `/etc/ssl/cloudflare-origin.pem`, а ключ как `/etc/ssl/cloudflare-origin.key`. На ключ — `chmod 600`.
- В nginx-серверный блок добавьте: `listen 443 ssl;` плюс `ssl_certificate /etc/ssl/cloudflare-origin.pem;` и `ssl_certificate_key /etc/ssl/cloudflare-origin.key;`. Перезагрузите nginx: `sudo nginx -t && sudo systemctl reload nginx`.
- Cloudflare → SSL/TLS → Overview → переключите режим encryption на Full (strict).
- Cloudflare → SSL/TLS → Edge Certificates → включите Always Use HTTPS — Cloudflare сам редиректит HTTP-запросы на HTTPS.
Шаг 10 — проверить, что всё реально работает
# DNS теперь возвращает Cloudflare-овские IP (104.x.x.x / 172.x.x.x), а не IP вашего VPS:
dig +short example.com
# HTTPS отвечает 200:
curl -sI https://example.com | head -1
# Origin доступен с Cloudflare (тест с самого VPS):
curl -sI -H 'Host: example.com' http://127.0.0.1
# В браузере: откройте https://example.com — должен быть зелёный замок и ваш контент.
# Публичный TLS-аудит: https://www.ssllabs.com/ssltest/analyze.html?d=example.comЕсли что-то на самом VPS ведёт себя странно — чеклист диагностических команд в статье «Полезные команды диагностики Linux-сервера», а глубокий разбор по портам и фаерволу — в статье «Открытые порты, фаерволы и почему мой порт показывается закрытым извне».
VPS от€1.99в месяц
Безлимитный трафик, порт 1 Гбит/с и NVMe-хранилище. 12 локаций в Европе и США.