Настройка машины
На этой странице описывается процесс настройки первой машины: создание конфигурации, регистрация сервера, его подготовка и опциональная настройка инфраструктуры для публичного доступа.
Шаг 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
Эта команда:
- Загружает бинарный файл renet на сервер через SFTP
- Устанавливает Docker, containerd и cryptsetup (если отсутствуют)
- Создает системного пользователя
rediacc(UID 7111) - Создает директорию хранилища данных и подготавливает её для зашифрованных репозиториев
| Опция | Обязательно | По умолчанию | Описание |
|---|---|---|---|
--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> | Machine | Public IPv4 address, proxy entrypoints are only created for configured address families |
--public-ipv6 <ip> | Machine | Public IPv6 address, proxy entrypoints are only created for configured address families |
--base-domain <domain> | Machine | Базовый домен для приложений (например, example.com) |
--cert-email <email> | Config | Email для TLS-сертификатов Let’s Encrypt (общий для всех машин) |
--cf-dns-token <token> | Config | API-токен 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
Эта команда:
- Разворачивает бинарный файл renet на удалённой машине
- Настраивает обратный прокси Traefik, маршрутизатор и службы systemd
- Создаёт 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
Эта единственная команда:
- Создаёт VM у облачного провайдера через OpenTofu
- Ожидает SSH-подключения
- Регистрирует машину в вашей конфигурации
- Устанавливает renet и все зависимости
- Configures Traefik proxy and Cloudflare DNS (auto-detects base domain from sibling machines, or pass
--base-domainexplicitly)
| Опция | Описание |
|---|---|
--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-infra | Skip 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