Сайт-визитка — это одна аккуратная страница: кто вы, чем занимаетесь, как с вами связаться. Конструкторы предлагают собрать её «бесплатно», а потом просят 300–700 ₽ в месяц за свой домен и отключение рекламы. Мы пойдём другим путём: возьмём NAT VPS за 59 ₽/мес, привяжем собственный домен, включим HTTPS и выложим страницу — весь сценарий укладывается в час даже без опыта администрирования. Эта статья — маршрут из готовых блоков: на каждом шаге короткая инструкция и ссылка на подробный гайд.
Что получится в итоге
К концу часа у вас будет:
- собственный домен вида
ivanov.ru, который принадлежит вам, а не конструктору; - страница, открывающаяся по HTTPS с валидным сертификатом;
- сервер, на котором позже поместятся ещё и портфолио, и пет-проекты;
- фиксированные расходы: 59 ₽/мес за сервер плюс цена домена (обычно 200–400 ₽ в год за зону
.ru).
Для одностраничника не нужен мощный сервер: статическую страницу Nginx отдаёт за миллисекунды практически на любом железе. Поэтому берём самый доступный тариф — NAT Start за 59 ₽/мес. Это VPS в Германии с общим IPv4-адресом: вам выдаётся диапазон из 999 портов, а трафик на стандартные порты 80/443 мы заведём через бесплатный прокси Cloudflare. Для визитки это рабочая и очень экономная схема.
План на час
| Шаг | Что делаем | Время | Подробный гайд |
|---|---|---|---|
| 1 | Покупаем NAT VPS | 5 мин | — |
| 2 | Базовая настройка сервера | 10 мин | Первые шаги после покупки VPS |
| 3 | Домен и DNS через Cloudflare | 10 мин | Привязка домена к VPS |
| 4 | Nginx и страница | 15 мин | Статичный сайт на VPS |
| 5 | HTTPS-сертификат | 10 мин | SSL-сертификат Let's Encrypt |
Осталось ещё 10 минут запаса на кофе и опечатки в конфигах.
Шаг 1. Покупаем сервер (5 минут)
Заходим на страницу NAT VPS, выбираем тариф NAT Start, оплачиваем. Сервер выдаётся автоматически за 45–60 секунд — в панели появятся IP-адрес, ваш диапазон портов и данные для SSH-доступа.
Два момента, которые стоит знать заранее:
- IPv4-адрес общий, поэтому «голый» IP в браузере ваш сайт не откроет — нужен домен и прокси (шаг 3);
- порт 25 закрыт, то есть почтовый сервер на этой машине не поднять. Для визитки это не проблема: форму обратной связи лучше делать через сторонний сервис или просто указать e-mail.
Шаг 2. Базовая настройка (10 минут)
Подключаемся по SSH (порт из панели) и делаем минимальную гигиену. Полный чек-лист — в статье «Первые шаги после покупки VPS», здесь короткая версия:
# Обновляем систему
apt update && apt upgrade -y
# Создаём пользователя вместо root
adduser web
usermod -aG sudo web
# Ставим базовые пакеты
apt install -y nginx ufw curl
Если какая-то команда выглядит незнакомо — держите под рукой шпаргалку «Основные команды Linux»: для этого сценария хватает десятка команд.
Firewall настраиваем так, чтобы были открыты SSH-порт и порт, на котором будет работать сайт (возьмите любой из вашего диапазона, в примерах ниже — условный 20443):
ufw allow <ваш_ssh_порт>/tcp
ufw allow 20443/tcp
ufw enable
Шаг 3. Домен и Cloudflare (10 минут)
Купите домен у любого регистратора и подключите его к бесплатному тарифу Cloudflare: он возьмёт на себя DNS, спрячет схему с портами и будет отдавать сайт посетителям по стандартному 443-му порту.
Порядок действий:
- В Cloudflare добавьте сайт и смените NS-записи у регистратора на выданные.
- Создайте A-запись
@→ IP вашего сервера, режим Proxied (оранжевое облако). - В разделе Rules создайте Origin Rule: для вашего домена переопределите порт назначения (destination port) на порт из вашего диапазона, например
20443.
Теперь посетитель открывает https://ivanov.ru, Cloudflare принимает запрос на 443-м порту и проксирует его на ваш сервер на порт 20443. Подробно про DNS-записи, TTL и проверку распространения — в гайде «Привязка домена к VPS».
Шаг 4. Nginx и сама страница (15 минут)
Создаём каталог сайта и кладём туда страницу:
mkdir -p /var/www/vizitka
nano /var/www/vizitka/index.html
Минимальный честный одностраничник — это заголовок, пара абзацев о себе, список услуг и контакты. Готовый бесплатный шаблон можно взять из любого набора HTML5-темплейтов и просто заменить тексты. Конфиг Nginx:
cat > /etc/nginx/sites-available/vizitka <<'EOF'
server {
listen 20443 ssl;
server_name ivanov.ru www.ivanov.ru;
root /var/www/vizitka;
index index.html;
ssl_certificate /etc/ssl/vizitka/cert.pem;
ssl_certificate_key /etc/ssl/vizitka/key.pem;
}
EOF
ln -s /etc/nginx/sites-available/vizitka /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Сертификат для этого конфига появится на следующем шаге. Если хотите глубже разобраться в структуре конфигов, кешировании и сжатии — это разобрано в статье «Статичный сайт на VPS».
Шаг 5. HTTPS (10 минут)
Так как порт 80 снаружи недоступен напрямую, классическая HTTP-проверка Let's Encrypt не подойдёт. Есть два рабочих варианта:
Вариант А (быстрый): Origin-сертификат Cloudflare. В панели Cloudflare (SSL/TLS → Origin Server) создайте сертификат сроком до 15 лет, сохраните cert.pem и key.pem в /etc/ssl/vizitka/, а режим шифрования переключите на Full (strict). Готово за пять минут.
Вариант Б (универсальный): Let's Encrypt по DNS-проверке. Certbot с плагином dns-cloudflare подтверждает владение доменом через DNS-запись, порт 80 не нужен:
apt install -y certbot python3-certbot-dns-cloudflare
certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/cf.ini \
-d ivanov.ru -d www.ivanov.ru
Оба варианта, а также автопродление и типичные ошибки, подробно разобраны в гайде «SSL-сертификат Let's Encrypt». После установки сертификата откройте сайт в браузере — замочек на месте, визитка работает.
Что можно улучшить потом
Часовой сценарий закрывает базу, дальше — по желанию:
| Улучшение | Зачем | Сложность |
|---|---|---|
| Форма обратной связи через сторонний сервис | Заявки без своего почтового сервера | Низкая |
| Раздел «Портфолио» из нескольких страниц | Больше доверия от клиентов | Низкая |
| Favicon, Open Graph-разметка | Красивые превью в мессенджерах | Низкая |
| Простая аналитика | Понимать, откуда приходят посетители | Средняя |
Всё это живёт на том же NAT Start — запас по ресурсам у статического сайта огромный.
Частые вопросы
Можно ли обойтись без своего домена?
Технически на NAT VPS без домена не обойтись: IPv4-адрес общий, и именно домен позволяет Cloudflare направить запрос на ваш сервер. Но это и к лучшему — визитка на «голом» IP выглядела бы несерьёзно. Домен в зоне .ru стоит от 200 ₽ в год, и он навсегда ваш, в отличие от адреса вида vasya.builder-site.com.
Почему не бесплатный конструктор?
Бесплатный тариф конструктора — это чужой поддомен, реклама и невозможность переехать. Как только понадобится свой домен, цена подскакивает до 300–700 ₽/мес. Связка «NAT VPS + домен» обходится примерно в 80–90 ₽/мес суммарно, при этом страница полностью ваша: хоть завтра перенесите её на другой сервер простым копированием файлов.
Сколько посетителей выдержит сайт на NAT Start?
Статическая страница — самый лёгкий тип нагрузки: Nginx отдаёт готовый HTML без вычислений. Для визитки с десятками и даже сотнями посетителей в день ресурсов тарифа хватает с большим запасом, а Cloudflare дополнительно кеширует статику на своих серверах.
Нужна ли CMS вроде WordPress?
Для одной страницы — нет. CMS требует PHP и базу данных, её нужно обновлять и защищать. Статический HTML не ломается, не взламывается через плагины и не тормозит. Если позже захотите блог, страницу можно пересобрать генератором статических сайтов, не меняя сервер.
Что делать, если что-то пошло не так?
Сначала проверьте цепочку по порядку: открывается ли сайт по curl -k https://127.0.0.1:20443 с самого сервера (проблема в Nginx или нет), затем DNS-записи и Origin Rule в Cloudflare, затем firewall (ufw status). В 90% случаев причина — опечатка в порте или незапущенный Nginx после правки конфига.
Запускайте за 59 ₽ в месяц
Сайт-визитка — идеальный первый проект на своём сервере: час работы, и у вас страница на собственном домене с HTTPS. Тариф NAT Start за 59 ₽/мес выдаётся за 45–60 секунд, а когда визитка перерастёт в портфолио или блог, сервер останется тем же. Заказать NAT VPS на Cheap-Host →