Перейти к основному содержанию Перейти к навигации Перейти к нижнему колонтитулу

Настройка машины

Создание конфигурации, добавление машин, подготовка серверов и настройка инфраструктуры.

Настройка машины

На этой странице описывается процесс настройки первой машины: создание конфигурации, регистрация сервера, его подготовка и опциональная настройка инфраструктуры для публичного доступа.

Шаг 1: Создание конфигурации

Конфигурация, это именованный файл конфигурации, хранящий ваши SSH-учетные данные, определения машин и привязки репозиториев. Воспринимайте его как рабочее пространство проекта.

rdc config init --name my-infra --ssh-key ~/.ssh/id_ed25519
ОпцияОбязательноОписание
--ssh-key <path>ДаПуть к вашему приватному SSH-ключу. Тильда (~) раскрывается автоматически.
--renet-path <path>НетПользовательский путь к бинарному файлу renet на удаленных машинах. По умолчанию используется стандартное расположение установки.

Эта команда создает конфигурацию с именем my-infra и сохраняет её в ~/.config/rediacc/my-infra.json. Конфигурация по умолчанию (без указания имени) хранится как ~/.config/rediacc/rediacc.json.

Вы можете иметь несколько конфигураций (например, production, staging, dev). Переключайтесь между ними с помощью флага --config в любой команде.

Шаг 2: Добавление машины

Зарегистрируйте ваш удаленный сервер как машину в конфигурации:

rdc config machine add --name server-1 --ip 203.0.113.50 --user deploy
ОпцияОбязательноПо умолчаниюОписание
--ip <address>Да-IP-адрес или имя хоста удаленного сервера
--user <username>Да-Имя пользователя SSH на удаленном сервере
--port <port>Нет22Порт SSH
--datastore <path>Нет/mnt/rediaccПуть на сервере, где Rediacc хранит зашифрованные репозитории

После добавления машины rdc автоматически выполняет ssh-keyscan для получения ключей хоста сервера. Вы также можете выполнить это вручную:

rdc config machine scan-keys -m server-1

Для просмотра всех зарегистрированных машин:

rdc config machine list

Шаг 3: Настройка машины

Подготовьте удаленный сервер, установив все необходимые зависимости:

rdc config machine setup --name server-1

Эта команда:

  1. Загружает бинарный файл renet на сервер через SFTP
  2. Устанавливает Docker, containerd и cryptsetup (если отсутствуют)
  3. Создает системного пользователя rediacc (UID 7111)
  4. Создает директорию хранилища данных и подготавливает её для зашифрованных репозиториев
ОпцияОбязательноПо умолчаниюОписание
--datastore <path>Нет/mnt/rediaccДиректория хранилища данных на сервере
--datastore-size <size>Нет95%Какую долю доступного диска выделить для хранилища данных
--debugНетfalseВключить подробный вывод для диагностики

Настройку нужно выполнить только один раз для каждой машины. Повторный запуск безопасен при необходимости.

Управление ключами хоста

Если SSH-ключи хоста сервера изменились (например, после переустановки), обновите сохраненные ключи:

rdc config machine scan-keys -m server-1

Эта команда обновляет поле knownHosts в вашей конфигурации для данной машины.

Проверка SSH-подключения

После добавления машины убедитесь, что она доступна:

rdc term connect -m server-1 -c "hostname"

Открывает SSH-подключение к машине и выполняет команду. Если всё прошло успешно, ваша конфигурация SSH верна.

Для более подробной диагностики выполните:

rdc doctor

Только для облачного адаптера: команда rdc machine test-connection обеспечивает детальную диагностику SSH, но требует облачного адаптера. Для локального адаптера используйте rdc term или ssh напрямую.

Настройка инфраструктуры

Для машин, которым необходимо обслуживать публичный трафик, настройте параметры инфраструктуры:

Установка инфраструктуры

rdc config infra set -m server-1 \
  --public-ipv4 203.0.113.50 \
  --base-domain example.com \
  --cert-email admin@example.com \
  --cf-dns-token your-cloudflare-api-token
ОпцияОбластьОписание
--public-ipv4 <ip>MachinePublic IPv4 address, proxy entrypoints are only created for configured address families
--public-ipv6 <ip>MachinePublic IPv6 address, proxy entrypoints are only created for configured address families
--base-domain <domain>MachineБазовый домен для приложений (например, example.com)
--cert-email <email>ConfigEmail для TLS-сертификатов Let’s Encrypt (общий для всех машин)
--cf-dns-token <token>ConfigAPI-токен Cloudflare DNS для ACME DNS-01 проверок (общий для всех машин)
--tcp-ports <ports>MachineДополнительные TCP-порты для проброса через запятую (например, 25,143,465,587,993)
--udp-ports <ports>MachineДополнительные UDP-порты для проброса через запятую (например, 53)

Опции области Machine хранятся для каждой машины. Опции области Config (--cert-email, --cf-dns-token) являются общими для всех машин в конфигурации, задайте их один раз, и они применяются повсюду.

Просмотр инфраструктуры

rdc config infra show -m server-1

Применение на сервере

Сгенерируйте и разверните конфигурацию обратного прокси Traefik на сервере:

rdc config infra push -m server-1

Эта команда:

  1. Разворачивает бинарный файл renet на удалённой машине
  2. Настраивает обратный прокси Traefik, маршрутизатор и службы systemd
  3. Создаёт DNS-записи Cloudflare для поддомена машины (server-1.example.com и *.server-1.example.com), если задан --cf-dns-token

Шаг DNS выполняется автоматически и идемпотентно, создаёт недостающие записи, обновляет записи с изменёнными IP-адресами и пропускает записи, которые уже корректны. Если токен Cloudflare не настроен, DNS пропускается с предупреждением. Per-repo wildcard DNS records (for auto-routes) are created automatically when you run rdc repo up.

Облачное провизионирование

Вместо ручного создания виртуальных машин вы можете настроить облачного провайдера и позволить rdc автоматически провизионировать машины с помощью OpenTofu.

Предварительные требования

Установите OpenTofu: opentofu.org/docs/intro/install

Убедитесь, что ваша конфигурация SSH включает публичный ключ:

rdc config set --key ssh.privateKeyPath --value ~/.ssh/id_ed25519

Добавление облачного провайдера

rdc config provider add --name my-linode \
  --provider linode/linode \
  --token $LINODE_API_TOKEN \
  --region us-east \
  --type g6-standard-2
ОпцияОбязательноОписание
--provider <source>Да*Известный источник провайдера (например, linode/linode, hetznercloud/hcloud)
--source <source>Да*Пользовательский источник провайдера OpenTofu (для неизвестных провайдеров)
--token <token>ДаAPI-токен облачного провайдера
--region <region>НетРегион по умолчанию для новых машин
--type <type>НетТип/размер экземпляра по умолчанию
--image <image>НетОбраз ОС по умолчанию
--ssh-user <user>НетИмя пользователя SSH (по умолчанию: root)

* Требуется либо --provider, либо --source. Используйте --provider для известных провайдеров (встроенные значения по умолчанию). Используйте --source с дополнительными флагами --resource, --ipv4-output, --ssh-key-attr для пользовательских провайдеров.

Провизионирование машины

rdc machine provision --name prod-2 --provider my-linode

Эта единственная команда:

  1. Создаёт VM у облачного провайдера через OpenTofu
  2. Ожидает SSH-подключения
  3. Регистрирует машину в вашей конфигурации
  4. Устанавливает renet и все зависимости
  5. Configures Traefik proxy and Cloudflare DNS (auto-detects base domain from sibling machines, or pass --base-domain explicitly)
ОпцияОписание
--provider <name>Имя облачного провайдера (из add-provider)
--region <region>Переопределяет регион провайдера по умолчанию
--type <type>Переопределяет тип экземпляра по умолчанию
--image <image>Переопределяет образ ОС по умолчанию
--base-domain <domain>Base domain for infrastructure. Auto-detected from sibling machines if not specified
--no-infraSkip infrastructure configuration (proxy + DNS) entirely
--debugПоказывает подробный вывод провизионирования

Депровизионирование машины

rdc machine deprovision --name prod-2

Уничтожает VM через OpenTofu и удаляет её из вашей конфигурации. Требует подтверждения, если не используется --force. Работает только для машин, созданных с помощью machine provision.

Список провайдеров

rdc config provider list

Установка значений по умолчанию

Установите значения по умолчанию, чтобы не указывать их в каждой команде:

rdc config set --key machine --value server-1  # Машина по умолчанию
rdc config set --key team --value my-team  # Команда по умолчанию (облачный адаптер, экспериментальный)

После установки машины по умолчанию можно опускать -m server-1 в командах:

rdc repo create --name my-app -m my-server --size 10G

Несколько конфигураций

Управляйте несколькими средами с помощью именованных конфигураций:

# Создание отдельных конфигураций
rdc config init --name production --ssh-key ~/.ssh/id_prod
rdc config init --name staging --ssh-key ~/.ssh/id_staging

# Использование определенной конфигурации
rdc repo list -m server-1 --config production
rdc repo list -m staging-1 --config staging

Просмотр всех конфигураций:

rdc config list

Просмотр деталей текущей конфигурации:

rdc config show