> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Справочник CLI

> Запускайте ipmideck из командной строки: подкоманды, флаги привязки, значение по умолчанию 0.0.0.0:3000, самоподписанный HTTPS, демо-режим и коды выхода.

ipmideck поставляется с одной консольной командой, `ipmideck`, которая запускает сервер, сбрасывает
пароль администратора или генерирует самоподписанный сертификат. `ipmilink` это обратно совместимый
псевдоним той же команды, каждая подкоманда и флаг ниже работают идентично под любым из
имён.

<Note>
  CLI применяется только при прямом запуске ipmideck (установка pip или исходный код). Образ
  Docker запускает `uvicorn backend.main:app` напрямую и никогда не вызывает CLI, поэтому ни один
  из этих флагов, приоритет привязки или защита единственного экземпляра не применяются к контейнеру. Привязка контейнера задаётся его собственной командой запуска. См. [Установку](/ru/installation).
</Note>

## Запуск сервера

`start` это основная команда обслуживания. Голый вызов без подкоманды обслуживает идентично,
поэтому эти варианты эквивалентны:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start
  # or, with no subcommand:
  ipmideck
  ```

  ```cmd cmd theme={null}
  ipmideck start
  :: or, with no subcommand:
  ipmideck
  ```

  ```bash bash theme={null}
  ipmideck start
  # or, with no subcommand:
  ipmideck
  ```
</CodeGroup>

Без флагов ipmideck привязывается к **`0.0.0.0:3000`** по умолчанию, доступен на каждом интерфейсе,
на порту `3000`. Откройте `http://<your-ip>:3000`, как только он запущен.

Переопределите привязку с помощью `--host` и `--port`:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start --host 127.0.0.1 --port 8080
  ```

  ```cmd cmd theme={null}
  ipmideck start --host 127.0.0.1 --port 8080
  ```

  ```bash bash theme={null}
  ipmideck start --host 127.0.0.1 --port 8080
  ```
</CodeGroup>

## Подкоманды

| Подкоманда       | Что она делает                                                                                                |
| ---------------- | ------------------------------------------------------------------------------------------------------------- |
| `start`          | Запускает сервер (по умолчанию). Голый `ipmideck` без подкоманды также обслуживает.                           |
| `serve`          | Устаревший псевдоним `start`. Ведёт себя идентично; сохранён, чтобы существующие скрипты продолжали работать. |
| `reset-password` | Интерактивно создаёт или обновляет вход администратора, затем завершается без обслуживания.                   |

<Note>
  `serve` это устаревший псевдоним `start`, предпочитайте `start` (или голый `ipmideck`) в новых
  скриптах.
</Note>

## Флаги

Эти флаги верхнего уровня применяются к пути обслуживания. `--demo` и `--config` читаются перед любой
ветвью подкоманды, поэтому они также влияют на `reset-password` и `--gen-cert`.

| Флаг              | Эффект                                                                                                  |
| ----------------- | ------------------------------------------------------------------------------------------------------- |
| `--host <host>`   | Хост привязки. Значение по умолчанию из `config.yaml` или `0.0.0.0`. Явный флаг побеждает конфигурацию. |
| `--port <port>`   | Порт привязки. Значение по умолчанию из `config.yaml` или `3000`. Явный флаг побеждает конфигурацию.    |
| `--demo`          | Запуск в демо-режиме с симулированными данными.                                                         |
| `--config <path>` | Путь к загружаемому `config.yaml`.                                                                      |
| `--reload`        | Включить автоперезагрузку для разработки.                                                               |
| `--gen-cert`      | Сгенерировать самоподписанный cert + ключ в `data/certs/`, записать пути в `config.yaml` и выйти.       |

## Приоритет привязки

Хост и порт, к которым ipmideck фактически привязывается, разрешаются в этом порядке, наивысший приоритет первым:

1. Явный флаг `--host` / `--port` в командной строке.
2. Конфигурация, которая сама разрешает переменную окружения (`IPMIDECK_SERVER_HOST` / `IPMIDECK_SERVER_PORT`)
   над `config.yaml` над встроенным значением по умолчанию.
3. Жёстко заданный резервный вариант **`0.0.0.0:3000`**, используемый, если ранняя загрузка конфигурации завершается неудачей.

Иными словами: значение, которое вы сохраняете в `config.yaml`, **переопределяется переменной окружения `IPMIDECK_`
или флагом `--host` / `--port`** при следующей загрузке, окружение и CLI всегда побеждают.
Если `config.yaml` неправильно сформирован, ipmideck печатает предупреждение в stderr и возвращается к
`0.0.0.0:3000`.

<Note>
  Переменные окружения `IPMIDECK_SERVER_HOST` и `IPMIDECK_SERVER_PORT` используют
  префикс `IPMIDECK_`. См. [Конфигурацию](/ru/configuration) для полного списка переопределений.
</Note>

## HTTPS с --gen-cert

`--gen-cert` генерирует самоподписанный сертификат и ключ, затем выходит. Он **не** запускает
сервер и **не** включает HTTPS сам по себе:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck --gen-cert
  ```

  ```cmd cmd theme={null}
  ipmideck --gen-cert
  ```

  ```bash bash theme={null}
  ipmideck --gen-cert
  ```
</CodeGroup>

Он записывает пару cert + ключ в `data/certs/`, записывает их пути в блок `server` в
`config.yaml` и печатает три строки:

```text theme={null}
Generated: <path-to-cert>
Generated: <path-to-key>
Wrote cert_file/key_file to config.yaml. Set server.https=true and restart to serve over HTTPS.
```

Чтобы действительно обслуживать по HTTPS, установите `server.https: true` в `config.yaml` и перезапустите ipmideck. HTTPS никогда не включается автоматически.

## Демо-режим

`--demo` запускает ipmideck на симулированном оборудовании вместо реальных BMC, полезно для оценки
панели без подключённых серверов:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start --demo
  ```

  ```cmd cmd theme={null}
  ipmideck start --demo
  ```

  ```bash bash theme={null}
  ipmideck start --demo
  ```
</CodeGroup>

Демо-режим устанавливается очень рано, перед любой ветвью подкоманды, поэтому всё приложение (конфигурация и запущенный сервер) его видит.

## Сброс пароля администратора

`reset-password` интерактивно создаёт или обновляет вход администратора, затем выходит, ни разу не
запуская сервер:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck reset-password
  ```

  ```cmd cmd theme={null}
  ipmideck reset-password
  ```

  ```bash bash theme={null}
  ipmideck reset-password
  ```
</CodeGroup>

Он запрашивает `Username:`, а затем `New password:` (скрытый ввод). Если учётная запись уже
существует, он обновляет пароль этого пользователя и печатает `Password updated for <username>`; иначе
создаёт пользователя и печатает `User <username> created`.

## Автоперезагрузка для разработки

`--reload` это быстрый путь только для разработки: он передаёт управление собственному автоперезагружающему
супервизору uvicorn и возвращается. Он намеренно **пропускает защиту порта единственного экземпляра**, описанную
ниже, потому что перезагрузчик запускает свой собственный процесс супервизора.

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start --reload
  ```

  ```cmd cmd theme={null}
  ipmideck start --reload
  ```

  ```bash bash theme={null}
  ipmideck start --reload
  ```
</CodeGroup>

<Warning>
  `--reload` предназначен только для разработки. Поскольку он обходит защиту единственного экземпляра, запускайте его на
  хосте, где никакой другой экземпляр ipmideck ещё не привязан к тому же порту.
</Warning>

## Коды выхода

| Код выхода | Когда                                                                                                                                                                                                                           |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`        | Чистое завершение по `Ctrl+C` / SIGTERM, сервер останавливается корректно, без трассировки.                                                                                                                                     |
| `1`        | Порт уже используется на целевом хосте (возможно, запущен другой экземпляр), **или** привязка завершается неудачей, потому что адрес недоступен или не разрешён (например привилегированный порт или несуществующий интерфейс). |

На пути обслуживания (не `--reload`) ipmideck запускает защиту единственного экземпляра перед привязкой. Если
порт уже используется, он печатает ошибку в stderr и завершается с `1`. Если привязка завершается неудачей, потому что
адрес недоступен или не разрешён, он печатает отдельную ошибку и также завершается с `1`.

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

* [Конфигурация](/ru/configuration): ключи `config.yaml` и переопределения окружения `IPMIDECK_`.
* [Установка](/ru/installation): установите ipmideck с помощью Docker или pip.
* [Устранение неполадок](/ru/troubleshooting): ошибки подключения, порта и IPMI.
