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

# Конфигурация панели

> Как конфигурируется панель Axottle: переменные окружения, файл axottle.env, порядок безопасного изменения настроек.

Панель Axottle конфигурируется **только через переменные окружения** с префиксом `AXOTTLE_*`. Отдельного конфигурационного файла в формате YAML/TOML нет: в production все переменные задаются в env-файле, который systemd передаёт процессу панели при запуске.

Конфигурация читается один раз — при старте процесса. Полный перечень переменных со значениями по умолчанию — на странице [Переменные окружения](/ru/reference/environment-variables).

<Info>Для кого: администратор, SRE. Требуемые права: root (или sudo) на сервере панели — env-файл доступен только привилегированным пользователям.</Info>

<Warning>
  Горячей перезагрузки конфигурации нет. Любое изменение любой переменной `AXOTTLE_*` вступает в силу **только после рестарта сервиса** `axottle`. Правка env-файла без рестарта не меняет поведение работающей панели.
</Warning>

## Где живёт конфигурация

| Что              | Где                                                   | Комментарий                                                                                                        |
| ---------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Env-файл панели  | `/etc/axottle/axottle.env`                            | Создаётся установщиком; права `640`, владелец `root:axottle`                                                       |
| Systemd-юнит     | `axottle.service`                                     | Подключает env-файл через `EnvironmentFile=`, запускает `/opt/axottle/bin/axottle serve` от пользователя `axottle` |
| Корень установки | `/opt/axottle`                                        | Бинарник, миграции, каталог данных, файлы установщика                                                              |
| Каталог данных   | `AXOTTLE_DATA_DIR` (в production `/opt/axottle/data`) | Состояние лицензии, журнал обновлений панели, локальные бэкапы                                                     |

Основные данные панель хранит в **PostgreSQL** (DSN задаётся переменной `AXOTTLE_DB_URL`). Миграции схемы применяются автоматически при каждом старте `axottle serve` — до того, как панель начнёт принимать трафик.

<Note>
  Команда сброса пароля администратора подключается к PostgreSQL напрямую и должна видеть конфигурацию установленной панели. Doctor также использует эту конфигурацию для проверок базы, но не прекращает диагностику, если PostgreSQL недоступен.
</Note>

## Безопасное изменение конфигурации

<Steps>
  <Step title="Сохраните текущую версию env-файла">
    ```bash theme={null}
    sudo cp /etc/axottle/axottle.env /etc/axottle/axottle.env.bak
    ```

    Копия понадобится для отката. Не храните резервные копии env-файла в общедоступных каталогах — файл содержит секреты.
  </Step>

  <Step title="Отредактируйте переменные">
    ```bash theme={null}
    sudo nano /etc/axottle/axottle.env
    ```

    Формат — строки вида `AXOTTLE_PORT=8080`, по одной переменной на строку. Реальные значения секретов здесь не показываем — используйте свои.
  </Step>

  <Step title="Перезапустите сервис">
    ```bash theme={null}
    sudo systemctl restart axottle
    ```

    Рестарт кратковременно прерывает доступ к панели и API. При старте панель автоматически применяет миграции БД.
  </Step>

  <Step title="Проверьте здоровье панели">
    ```bash theme={null}
    curl -s http://localhost:8080/health
    ```

    Ожидаемый ответ:

    ```json theme={null}
    {"status":"ok","timestamp":"2026-07-11T00:00:00Z","version":"<версия>"}
    ```

    Затем просмотрите логи на предмет ошибок старта:

    ```bash theme={null}
    axottle logs backend --tail 50
    ```
  </Step>
</Steps>

## Проверка

<Check>Панель считается успешно переконфигурированной, когда после рестарта `GET /health` возвращает `"status":"ok"`, `axottle status` показывает `running`, а в логах нет ошибок инициализации.</Check>

```bash theme={null}
axottle status
```

Пример вывода:

```text theme={null}
Status:      running
Version:     <версия>
DB:          connected
Setup done:  true
Uptime:      42s
```

Команда завершается с ненулевым кодом, если статус отличается от `running` — удобно для скриптов.

## Откат

<Steps>
  <Step title="Верните сохранённую копию">
    ```bash theme={null}
    sudo cp /etc/axottle/axottle.env.bak /etc/axottle/axottle.env
    ```
  </Step>

  <Step title="Перезапустите сервис и проверьте">
    ```bash theme={null}
    sudo systemctl restart axottle
    curl -s http://localhost:8080/health
    ```
  </Step>
</Steps>

## Ограничения и риски

* **Рестарт обязателен для любого изменения.** Изменённый env-файл без рестарта создаёт расхождение между «тем, что на диске» и «тем, что работает» — это частая причина путаницы при диагностике.
* **Секреты в env-файле.** `AXOTTLE_SECRET_KEY` — мастер-ключ шифрования хранилища секретов панели. Задайте сильное значение в production и ограничьте доступ к файлу (установщик выставляет `640 root:axottle` — не ослабляйте эти права). Подробнее — в [таблице переменных](/ru/reference/environment-variables#axottle_secret_key).
* **Ошибочный DSN базы** (`AXOTTLE_DB_URL`) не даст панели подняться. Проверяйте логи сразу после рестарта.

## Типовые ошибки

<AccordionGroup>
  <Accordion title="Изменил переменную, но поведение не поменялось">
    Скорее всего, сервис не перезапущен. Выполните `sudo systemctl restart axottle` и проверьте `systemctl status axottle`.
  </Accordion>

  <Accordion title="Панель не стартует после правки env-файла">
    Проверьте синтаксис файла (одна переменная на строку, без пробелов вокруг `=`), затем логи: `journalctl -u axottle -n 100`. Если причина не ясна — откатите файл из резервной копии и перезапустите сервис.
  </Accordion>

  <Accordion title="Doctor или сброс пароля не могут подключиться к базе">
    Запускайте команды на сервере панели через `sudo`. В TUI откройте **Doctor** и выберите **Attempt safe recovery** — инструмент попробует поднять PostgreSQL и повторит проверку. Если это не помогло, проверьте контейнер или службу PostgreSQL и конфигурацию `AXOTTLE_DB_URL` в env-файле установленной панели.
  </Accordion>
</AccordionGroup>

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Переменные окружения" icon="list-check" href="/ru/reference/environment-variables">
    Полная таблица всех переменных `AXOTTLE_*`.
  </Card>

  <Card title="CLI axottle" icon="terminal" href="/ru/reference/cli">
    Команды status, doctor, logs и другие.
  </Card>
</CardGroup>

<Note>Проверено для версии Axottle текущей ветки. Дата проверки: 2026-07-12.</Note>
