Сайт ↗
Разделы документации
Эксплуатация · 0.8.1

Подготовить VPS и домены

Однократная установка Docker, создание пользователя deploy, каталога данных и DNS для первого запуска.

На этой странице

Эта подготовка общая для Source, Archive и Registry. Нужен новый VPS с Ubuntu 24.04 LTS, x86_64 (linux/amd64), публичным IPv4 и доступом root из панели хостинга. Для двухсерверного размещения выполните подготовку на обоих VPS.

Замените 203.0.113.10 своим IP, example.com своим доменом, а example_project — техническим именем своего проекта. Путь постоянного каталога должен совпадать с Runtime directory в вашем профиле Deployment environments.

1. Подключитесь к новому серверу

На своём компьютере:

ssh root@203.0.113.10

При первом подключении SSH попросит подтвердить новый сервер. После входа команды этого раздела выполняются на VPS под root. Проверьте систему:

cat /etc/os-release
uname -m

Нужны Ubuntu 24.04 и x86_64. Оставьте этот терминал открытым до завершения подготовки.

2. Установите Docker и инструменты

На новом VPS под root:

apt-get update
apt-get install -y ca-certificates curl jq util-linux coreutils tar openssh-client python3 sudo git nano
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: amd64
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
docker version
docker compose version
docker buildx version

Docker должен отвечать без ошибки подключения к daemon. Нужны Compose v2, Buildx, Docker client и daemon с API 1.49 или новее. Это показывает docker version. Если сервер уже используется и Docker установлен, сначала проверьте его версию и совместимость пакетов.

Go, Node и сам Admingen на VPS не нужны: сборка Source использует Docker, а Archive/Registry получают уже собранное приложение.

3. Создайте пользователя и каталог данных

На VPS под root:

adduser --disabled-password --gecos "" deploy
usermod -aG docker deploy
install -d -o deploy -g deploy -m 700 /home/deploy/.ssh
install -d -o deploy -g deploy -m 700 /srv/admingen/example_project/production

Команды создания рассчитаны на нового пользователя. Если deploy уже существует, достаточно проверить его группу docker и права на каталог.

/srv/admingen/example_project/production — постоянный каталог БД, файлов и состояния. Пользователь deploy должен владеть им и иметь право записи. Исходники позже будут находиться отдельно, например в /home/deploy/projects/example-project. Не используйте символические ссылки в пути каталога данных.

Группа docker даёт привилегированный доступ к серверу. Выпуском должен управлять только доверенный пользователь. Администрирование ОС продолжайте из root-терминала: парольный sudo для deploy здесь не настроен.

4. Откройте сеть

В панели хостинга разрешите TCP 80 и 443 для приложения, а SSH — со своего компьютера. Проверьте также уже существующий firewall сервера. Порты 80/443 должны быть свободны: их займёт Nginx. PostgreSQL в интернет не открывайте. Учтите, что публикация портов Docker может обходить обычные правила UFW.

Серверу нужен исходящий интернет для Docker-образов и выпуска сертификатов. Для source нужны также зависимости сборки. При двух серверах frontend должен обращаться к API по HTTPS.

5. Направьте домены на VPS

В DNS-панели домена создайте записи:

Тип Имя Адрес
A admin IPv4 вашего VPS
A api Тот же IPv4

Для split admin направьте на frontend-VPS, api — на backend-VPS. Если используете Cloudflare: DNS → Records → Add record, Proxy status DNS only (серое облако), TTL Auto. У домена должны быть настроены nameservers этой DNS-панели.

Обновите конфликтующие A/CNAME, а не создавайте второй адрес. Если IPv6 не настроен, уберите старые AAAA только у этих двух имён. Другие записи домена не меняйте.

На своём компьютере проверьте ответы:

dig +short A admin.example.com
dig +short A api.example.com
dig +short AAAA admin.example.com
dig +short AAAA api.example.com

A должны вернуть нужные IPv4; при отсутствии IPv6 ответы AAAA должны быть пустыми. Дождитесь обновления DNS. При будущем provision Certbot выпустит HTTPS-сертификаты: для этого уже должны работать DNS и входящий порт 80. До развёртывания приложение в браузере не откроется. Корневой домен example.com эти шаги не публикуют.

Продолжайте выбранную инструкцию: Source, Archive или Registry.