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

Устранение неполадок

Решения распространённых проблем с SSH, настройкой, репозиториями, сервисами и Docker.

Устранение неполадок

Распространённые проблемы и их решения. В случае сомнений начните с rdc doctor, чтобы выполнить комплексную диагностику.

Ошибка подключения SSH

  • Убедитесь, что можете подключиться вручную: ssh -i ~/.ssh/id_ed25519 deploy@203.0.113.50
  • Выполните rdc context scan-keys server-1 для обновления ключей хоста
  • Проверьте соответствие порта SSH: --port 22
  • Проверьте подключение: rdc machine test-connection --ip 203.0.113.50 --user deploy

Несоответствие ключа хоста

Если сервер был переустановлен или его SSH-ключи изменились, вы увидите “host key verification failed”:

rdc context scan-keys server-1

Эта команда получает новые ключи хоста и обновляет вашу конфигурацию.

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

  • Убедитесь, что SSH-пользователь имеет доступ sudo без пароля, или настройте NOPASSWD для необходимых команд
  • Проверьте доступное дисковое пространство на сервере
  • Запустите с --debug для подробного вывода: rdc context setup-machine server-1 --debug

Ошибка создания репозитория

  • Убедитесь, что настройка завершена: директория хранилища данных должна существовать
  • Проверьте дисковое пространство на сервере
  • Убедитесь, что бинарный файл renet установлен (при необходимости повторите настройку)

Сервисы не запускаются

  • Проверьте синтаксис Rediaccfile: он должен быть корректным Bash
  • Убедитесь, что файлы docker compose используют network_mode: host
  • Проверьте доступность Docker-образов (рассмотрите docker compose pull в prep())
  • Просмотрите логи контейнеров через Docker-сокет репозитория:
rdc term server-1 my-app -c "docker logs <container-name>"

Или просмотрите все контейнеры:

rdc machine containers server-1

Ошибки отказа в доступе

  • Операции с репозиториями требуют root-доступа на сервере (renet запускается через sudo)
  • Убедитесь, что ваш SSH-пользователь состоит в группе sudo
  • Проверьте правильность прав доступа к директории хранилища данных

Проблемы с Docker-сокетом

У каждого репозитория свой собственный Docker daemon. При ручном выполнении Docker-команд необходимо указать правильный сокет:

# С помощью rdc term (настроено автоматически):
rdc term server-1 my-app -c "docker ps"

# Или вручную с указанием сокета:
docker -H unix:///var/run/rediacc/docker-2816.sock ps

Замените 2816 на идентификатор сети вашего репозитория (можно найти в config.json или через rdc repo status).

Контейнеры созданы на неправильном Docker daemon

Если ваши контейнеры появляются на Docker daemon хост-системы вместо изолированного daemon репозитория, наиболее распространённая причина — использование sudo docker внутри Rediaccfile.

sudo сбрасывает переменные окружения, поэтому DOCKER_HOST теряется и Docker использует системный сокет (/var/run/docker.sock) по умолчанию. Rediacc блокирует это автоматически, но если вы столкнулись с этой проблемой:

  • Используйте docker напрямую — функции Rediaccfile уже выполняются с достаточными привилегиями
  • Если необходимо использовать sudo, используйте sudo -E docker для сохранения переменных окружения
  • Проверьте ваш Rediaccfile на наличие команд sudo docker и удалите sudo

Терминал не работает

Если rdc term не может открыть окно терминала:

  • Используйте встроенный режим с -c для прямого выполнения команд:
    rdc term server-1 -c "ls -la"
  • Принудительно используйте внешний терминал с --external, если встроенный режим вызывает проблемы
  • На Linux убедитесь, что установлен gnome-terminal, xterm или другой эмулятор терминала

Запуск диагностики

rdc doctor

Эта команда проверяет вашу среду, установку renet, конфигурацию контекста и статус аутентификации. Каждая проверка сообщает OK, Warning или Error с кратким пояснением.