Наша тестовая страница работает локально. Теперь сделаем её доступной по публичному адресу — арендуем сервер, настроим безопасное подключение и выложим проект.
VPS (Virtual Private Server) — это виртуальный компьютер в дата-центре, который работает 24/7 и доступен по IP-адресу из интернета. Вы подключаетесь к нему из терминала и управляете так же, как своим компьютером.
Для нашего проекта хватит минимальной конфигурации: 1 ядро, 1 ГБ памяти, 10 ГБ диска. Это стоит примерно 200 руб/мес.
Подойдёт любой хостер: Beget, Timeweb, Selectel, Hetzner. Мы покажем на примере Beget Cloud, но шаги будут похожими.
Выбираем регион (ближайший к вам) и минимальный тариф.

Выбираем Ubuntu — последнюю LTS-версию из готовых решений.

При создании сервера хостер даст вам доступ под пользователем root — это стандартный пользователь с правами администратора, который может делать на сервере всё что угодно. Хостер попросит задать для него пароль.
Рекомендуем парольные фразы — их легко запомнить и сложно подобрать. Например: Brick-Under-Cloud-Moon7-Jazz. Для генерации используйте специализированные генераторы, например Keeper. Не просите нейронку генерировать пароли — у языковых моделей ограниченная случайность, и они могут выдавать одинаковые пароли разным людям.
Обязательно запишите пароль — в менеджере паролей, заметках или хотя бы в файле на компьютере. Если вы его потеряете, восстановить доступ может быть сложно, а в некоторых случаях придётся удалять сервер и создавать новый.

Даём серверу понятное имя и нажимаем «Создать».

После создания хостер покажет IP-адрес сервера — он нам понадобится дальше.
SSH-ключ — это пара файлов: приватный (остаётся у вас) и публичный (кладётся на сервер). Вместо ввода пароля каждый раз сервер проверяет ваш ключ автоматически.
user@computer:~/landing$ ssh-keygen -t ed25519 -C "my-project" -f ~/.ssh/my-project -N ""Появятся два файла:
~/.ssh/my-project — приватный ключ (никому не показывать)~/.ssh/my-project.pub — публичный ключ (кладём на сервер)Посмотреть содержимое ключа:
user@computer:~/landing$ cat ~/.ssh/my-project.pubuser@computer:~/landing$ ssh-copy-id -i ~/.ssh/my-project root@<ваш-IP>user@computer:~/landing$ eval "$(ssh-agent -s)"user@computer:~/landing$ ssh-add ~/.ssh/my-projectuser@computer:~/landing$ ssh -i ~/.ssh/my-project root@<ваш-IP>Если всё работает, вы увидите командную строку сервера. Для выхода введите exit.
Свежий сервер нужно подготовить к работе. Вот что нужно сделать:
deploy — работать под root небезопасно, одна ошибка может сломать всю систему. Пользователю deploy задаём пароль, даём права администратора (sudo) и право устанавливать программыВсё это можно автоматизировать одним скриптом. Попросите вашего AI-агента сгенерировать setup-vps.sh в папке scripts, который поможет вам настроить сервер.
Попробуйте составить промпт самостоятельно. Это важный навык: чем точнее вы опишете задачу, тем лучше результат. Вот что нужно включить:
scripts/setup-vps.shНе бойтесь ошибиться — агент переспросит, если чего-то не хватит. А если скрипт не заработает с первого раза, покажите агенту ошибку — он исправит.
Вот пример того, как может выглядеть промпт:
Создай bash-скрипт scripts/setup-vps.sh для
настройки свежего сервера Ubuntu. Скрипт должен:
1. Обновить систему (apt update && upgrade)
2. Настроить firewall: открыть порты 22, 80, 443,
закрыть остальные
3. Создать пользователя deploy с правами sudo
4. Установить Docker и добавить deploy
в группу docker
5. Отключить вход по паролю (только после
проверки SSH-ключа)
Все параметры (IP сервера, путь к SSH-ключу,
имя пользователя) должны передаваться как
аргументы при запуске скрипта.
Добавь комментарии и сообщения перед каждым
шагом и после — чтобы при запуске было видно,
что прошло успешно, а где возникла проблема.
Если тебе что-то непонятно — задай вопросы
прежде чем писать скрипт.
Попросите агента добавить в скрипт комментарии и сообщения перед каждым шагом и после его выполнения — чтобы при запуске было видно, что прошло успешно, а где возникла проблема. Если что-то пошло не так — покажите вывод агенту, он поможет разобраться.
Если что-то из инструкций выше непонятно — спросите у агента. Например: «Я маркетолог, объясни мне простыми словами, что такое порты и зачем их закрывать». Спрашивайте, пока не станет понятно — в этом и смысл работы с AI-ассистентом.
Для того, чтобы запустить скрипт, сначала его нужно сделать исполняемым:
user@computer:~/landing$ chmod +x scripts/setup-vps.shВ начале скрипта агент должен написать описание — как пользоваться:
#!/usr/bin/env bash
#
# Настройка свежего Ubuntu-сервера.
# Запускается ЛОКАЛЬНО — подключается
# к серверу по SSH как root.
#
# Использование:
# ./scripts/setup-vps.sh <IP> <SSH_KEY>
# [USERNAME]
#
# Аргументы:
# IP — адрес сервера
# SSH_KEY — путь к публичному SSH-ключу
# USERNAME — имя пользователя
# (по умолчанию: deploy)
#
# Пример:
# ./scripts/setup-vps.sh 203.0.113.10 \
# ~/.ssh/id_ed25519.pub deploy
... код скрипта ...
Перед запуском попросите агента проверить скрипт по чеклисту:
Если всё хорошо — запускаем:
user@computer:~/landing$ ./scripts/setup-vps.sh <ваш-IP> ~/.ssh/my-project.pub deployПосле этого подключаемся уже под пользователем deploy:
user@computer:~/landing$ ssh -i ~/.ssh/my-project deploy@<ваш-IP>В терминале мы должны увидеть консоль сервера:
deploy@vps-server:~$
Это значит, что вы на сервере. Для выхода введите exit.
Для деплоя используем rsync — он копирует только изменённые файлы через SSH. Быстро и без лишних настроек.
Напиши bash-скрипт deploy.sh, который:
1. Копирует файлы проекта на сервер через rsync
(исключая node_modules, .git, dist)
2. Подключается по SSH и запускает
docker compose up -d --build
3. Выводит URL сайта
Переменные: IP сервера, пользователь deploy,
путь к SSH-ключу. Сделай скрипт исполняемым.
Наш агент заботливо написал, как пользоваться скриптом:
#!/usr/bin/env bash
#
# Деплой проекта на сервер.
# Запускается ЛОКАЛЬНО — копирует файлы
# и запускает Docker на сервере.
#
# Использование:
# ./scripts/deploy.sh <IP> <SSH_KEY> [USERNAME]
#
# Аргументы:
# IP — адрес сервера
# SSH_KEY — путь к приватному SSH-ключу
# USERNAME — имя пользователя
# (по умолчанию: deploy)
#
# Пример:
# ./scripts/deploy.sh 203.0.113.10 \
# ~/.ssh/id_ed25519 deploy
Запускаем деплой:
user@computer:~/landing$ ./scripts/deploy.sh <ваш-IP> ~/.ssh/my-project deployЕсли всё прошло успешно — сайт станет доступен по IP-адресу сервера по http (пока что не по https, до него мы ещё дойдём).

По аналогии попросите агента сгенерировать:
docker compose down)Эти скрипты помогут нам по нажатию одной команды управлять сервером, без ввода длинных команд.
Мы прошли полный цикл:
Теперь каждый раз, когда вы вносите изменения, достаточно запустить ./scripts/deploy.sh — и новая версия будет на сервере.