Skip to main content

Docker (рекомендуется)

Linux. --network host необходим, чтобы контейнер мог достигать ваших BMC напрямую в вашей локальной сети по UDP-порту 623 (порт IPMI/RMCP+). Без сети хоста контейнер находится за NAT Docker и не может завершить сессию IPMI с вашим оборудованием.
Windows / macOS. Docker Desktop не поддерживает сеть хоста, поэтому вместо этого пробросьте порт:
Обе команды монтируют именованный том (ipmideck-data) на /data. Этот том содержит ваш config.yaml, базу данных SQLite и ключ шифрования, который защищает сохранённые учётные данные BMC, поэтому они переживают перезапуск, обновление или docker rm. Без -v вы получаете свежую пустую установку каждый раз, когда контейнер пересоздаётся. Как только контейнер запущен, откройте http://<your-ip>:3000 и следуйте мастеру настройки.
Опубликованный образ находится на Docker Hub по адресу hub.docker.com/r/devluigi06/ipmideck.

pip

Пакет pip требует, чтобы на хосте был установлен ipmitool, ipmideck вызывает ipmitool для каждой операции IPMI. Сначала установите его из менеджера пакетов вашего дистрибутива (например apt install ipmitool или dnf install ipmitool).
В Debian 12+ и Ubuntu 23.04+ простой pip install отказывается выполняться и завершается с ошибкой error: externally-managed-environment. Это ожидаемо, см. Установка в Debian и Ubuntu ниже.

Установка в Debian и Ubuntu (PEP 668)

В стандартной системе Debian 12+ или Ubuntu 23.04+ pip install ipmideck останавливается с сообщением:
Это не ошибка ipmideck. Дистрибутив резервирует системный Python для собственного менеджера пакетов, apt зависит от него и блокирует запись pip в него. Есть два поддерживаемых способа всё равно установить ipmideck.

pipx (рекомендуется)

pipx устанавливает консольное приложение Python в его собственное изолированное виртуальное окружение и делает получившуюся команду доступной глобально, ни разу не затрагивая системный Python. Это в точности то, чем является ipmideck, поэтому это путь, который мы рекомендуем:
pipx помещает исполняемый файл в ~/.local/bin. Debian и Ubuntu добавляют этот каталог в ваш PATH автоматически, как только он появляется, но только для новых сессий оболочки, поэтому самая первая установка печатает предупреждение, и ipmideck ещё не находится в оболочке, из которой вы её запустили:
Откройте новый терминал (или переподключитесь по SSH), и команда заработает. Если ваша оболочка всё ещё не может её найти, добавьте каталог явно и затем запустите новую оболочку:
Проверьте установку с помощью демо-режима, которому не нужно реальное оборудование:

venv

Виртуальное окружение обходит PEP 668 тем же способом и является правильным выбором, если вы работаете из исходного кода:
Команда ipmideck доступна, когда это окружение активировано.
pip install --break-system-packages ipmideck тоже работает, но записывает напрямую в системный Python и может сломать apt, если версия зависимости вступит в конфликт. Предпочитайте pipx или venv.

Где ipmideck хранит данные

ipmideck записывает свою конфигурацию и базу данных в каталог данных:
  • Docker: /data внутри контейнера (образ устанавливает IPMIDECK_DATA_DIR=/data; сохраните его с помощью тома).
  • pip в Linux: /data по умолчанию, куда обычный пользователь обычно не может писать.
  • pip в Windows: ./data, относительно каталога, из которого вы запускаете ipmideck.
В Linux запуск ipmideck от имени обычного пользователя без переопределения каталога данных завершается неудачей при старте с ошибкой PermissionError: [Errno 13] Permission denied: '/data'. Укажите IPMIDECK_DATA_DIR на каталог, которым вы владеете, как показано ниже.
Укажите каталог данных туда, где есть право записи:
Расположение можно переопределить на любой платформе с помощью переменной окружения IPMIDECK_DATA_DIR. Этот каталог содержит config.yaml, базу данных SQLite и файл ключа шифрования, используемый для защиты сохранённых учётных данных BMC. См. Конфигурацию и Запуск ipmideck для подробностей.

Запуск в качестве службы (Linux)

ipmideck start в терминале открывает интерактивную консоль и останавливается, когда вы закрываете сессию. Чтобы ipmideck продолжал работать в фоне и запускался при загрузке, запускайте его под systemd. Создайте выделенного пользователя, установите для него ipmideck с помощью pipx и дайте ему каталог данных, которым он владеет:
Затем напишите unit:
Включите и запустите его:
Под systemd нет присоединённого терминала, поэтому ipmideck пропускает интерактивную консоль и транслирует обычные журналы в journal (journalctl -u ipmideck -f), в точности как контейнер Docker. systemctl stop отправляет SIGTERM, что запускает то же корректное завершение, которое возвращает управление вентиляторами вашим BMC. См. Режим headless / non-TTY.

Следующие шаги