Files
3x-ui/docs/content/docs/ru/reference/env-vars.mdx
T
MHSanaei 3fc3992a46 fix(nodetoken): stop refusing every node-token key file on Windows
FileKeySource rejected any key file whose mode had group or other bits,
but Windows has no such bits: Stat reports every writable file as 0666.
On the Windows builds release.yml ships, the key file therefore never
loaded, not even one written 0600, and only XUI_NODE_TOKEN_KEY could
supply a key. The mode check now applies off Windows only, the stance
the DB permission tests already take; there the file's NTFS ACL guards
it, and env-vars.mdx says so in all four locales.

The load test is split so the half that must hold everywhere, an
owner-only file loading, also runs on Windows, and the rejection half
asserts the exact error instead of any error.
2026-09-27 15:55:42 +02:00

117 lines
11 KiB
Plaintext

---
title: Переменные окружения
description: Полный справочник по переменным окружения XUI_* в 3x-ui — база данных, панель, логирование, память, шифрование токенов узлов и монитор работоспособности туннеля.
icon: Variable
---
3x-ui читает свою конфигурацию во время выполнения из переменных окружения
`XUI_*`. При установке через скрипт инсталлятор записывает их в файл окружения
службы (`/etc/default/x-ui`, либо `/etc/conf.d/x-ui` / `/etc/sysconfig/x-ui` в
зависимости от дистрибутива); для Docker они задаются в `docker-compose.yml` или
через `docker run -e`. Значения по умолчанию разумны — задавайте только то, что
нужно изменить, после чего перезапустите: `systemctl restart x-ui`.
## База данных
| Variable | Default | Description |
| ------------------------ | ----------- | -------------------------------------------------------------------- |
| `XUI_DB_TYPE` | `sqlite` | Бэкенд: `sqlite` или `postgres` (также принимаются `postgresql` / `pg`). |
| `XUI_DB_FOLDER` | `/etc/x-ui` | Папка для файла базы данных SQLite (`x-ui.db`). |
| `XUI_DB_DSN` | — | Строка подключения к PostgreSQL (используется при `XUI_DB_TYPE=postgres`). |
| `XUI_DB_MAX_OPEN_CONNS` | — | Максимум открытых соединений в пуле PostgreSQL. |
| `XUI_DB_MAX_IDLE_CONNS` | — | Максимум простаивающих соединений в пуле PostgreSQL. |
Путь к базе данных SQLite по умолчанию — `/etc/x-ui/x-ui.db`. Подробности о
переходе SQLite ↔ PostgreSQL см. в разделе
[База данных](/docs/reference/database).
## Панель
| Variable | Default | Description |
| ------------------------ | ------- | ------------------------------------------------------------------------ |
| `XUI_PORT` | — | Переопределение порта панели (1–65535). Имеет приоритет над сохранённой настройкой. |
| `XUI_INIT_WEB_BASE_PATH` | `/` | Начальный базовый веб-путь при **первом** запуске (например, `/panel`). |
| `XUI_ENABLE_FAIL2BAN` | `true` | Включить ограничение по IP на основе Fail2ban. |
| `XUI_SKIP_HSTS` | `false` | Не отправлять заголовок HSTS — установите `true`, когда TLS терминируется обратным прокси. |
## Шифрование токенов узлов
API-токены узлов — и сохранённый токен PIA — по умолчанию хранятся в открытом
виде. Шифрование при хранении включается явно и отказывает безопасно: при любом
режиме, кроме `off`, панель не запустится, если не сможет загрузить ключ.
| Variable | Default | Description |
| ------------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `NODE_TOKEN_ENCRYPTION` | `off` | `off`, `migration` (чтение принимает открытый текст или шифротекст, запись всегда шифрует) или `required` (запись та же, но без ключа запуск не удастся). Префикса `XUI_` здесь нет. |
| `XUI_NODE_TOKEN_KEY_FILE` | `/etc/x-ui/node_token_key.json` | JSON-связка ключей с правами `0600` или строже (в Windows не проверяется: файл защищают права NTFS). Загружается первой. |
| `XUI_NODE_TOKEN_KEY` | — | Один 32-байтный ключ в base64, читается только при неудачной загрузке файла ключей. Его идентификатор фиксирован (`env`), поэтому ротация невозможна. |
Файл ключей задаёт активный ключ и все прежние ключи, ещё нужные для расшифровки:
```json
{ "active": "k1", "keys": { "k1": "<base64 32-byte key>" } }
```
Сгенерируйте ключ командой `openssl rand -base64 32`; ключи никогда не
принимаются в аргументах командной строки. После включения режима перешифруйте
строки, уже находящиеся в базе, активным ключом:
```bash
x-ui encrypt-tokens
```
Команда обрабатывает строки узлов; токен PIA перешифровывается при следующем
чтении. Для ротации добавьте новый ключ в `keys`, укажите его в `active`,
сохраните старый ключ для расшифровки и снова выполните `x-ui encrypt-tokens`.
## Логирование и бинарные файлы
| Variable | Default | Description |
| ---------------- | ---------------- | ----------------------------------------------------------- |
| `XUI_LOG_LEVEL` | `info` | `debug`, `info`, `notice`, `warning` или `error`. |
| `XUI_DEBUG` | `false` | Режим отладки (принудительно устанавливает уровень логирования `debug`). |
| `XUI_LOG_FOLDER` | `/var/log/x-ui` | Каталог для вывода логов. |
| `XUI_BIN_FOLDER` | `bin` | Папка для бинарного файла Xray-core и файлов geosite/geoip. |
## Память и профилирование
Панель удерживает потребление памяти низким за счёт `GOGC` и периодических
освобождений. Это продвинутые параметры — оставьте их незаданными, если только
вы не настраиваете хост с ограниченными ресурсами.
| Variable | Default | Description |
| ----------------------------- | ------- | ----------------------------------------------------------------- |
| `XUI_GOGC` | — | Целевой процент сборщика мусора Go; ниже = меньше RAM, чуть больше нагрузка на CPU. |
| `XUI_MEMORY_RELEASE_INTERVAL` | — | Минуты между вызовами `FreeOSMemory`; `0` отключает. |
| `XUI_MEMORY_LIMIT` | — | Мягкий лимит памяти Go в **MiB**. |
| `GOMEMLIMIT` | — | Мягкий лимит в синтаксисе Go (например, `400MiB`); имеет приоритет над предыдущим.|
| `XUI_PPROF` | `false` | Открыть профилирование pprof на `127.0.0.1:6060`. |
## Xray
| Variable | Default | Description |
| ------------------------ | ------- | --------------------- |
| `XRAY_VMESS_AEAD_FORCED` | `false` | Принудительно включить VMess AEAD. |
## Монитор работоспособности туннеля
Опциональный сторож: он опрашивает URL (опционально **через** локальный входящий
Xray) и перезапускает Xray после нескольких неудачных попыток подряд. Перезапуск
обрывает все подключённые клиенты, поэтому включайте его осознанно.
| Variable | Default | Description |
| ----------------------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| `XUI_TUNNEL_HEALTH_MONITOR` | `false` | Включить монитор. |
| `XUI_TUNNEL_HEALTH_PROXY` | — | Прокси, через который отправляется проба, например `socks5://127.0.0.1:1080`. Пусто = проверяется только доступность хоста. |
| `XUI_TUNNEL_HEALTH_URL` | `https://www.cloudflare.com/cdn-cgi/trace` | URL для опроса. |
| `XUI_TUNNEL_HEALTH_INTERVAL` | `30s` | Интервал между пробами. |
| `XUI_TUNNEL_HEALTH_TIMEOUT` | `10s` | Тайм-аут одной пробы. |
| `XUI_TUNNEL_HEALTH_FAILURES` | `3` | Количество неудач подряд до перезапуска. |
| `XUI_TUNNEL_HEALTH_COOLDOWN` | `5m` | Минимальная задержка между перезапусками. |
## Автоматическая установка
| Variable | Description |
| -------------------- | -------------------------------------------------------------------------------------------- |
| `XUI_NONINTERACTIVE` | Установите `1` (или запустите без TTY), чтобы выполнить установку без единого запроса; сгенерированные учётные данные записываются в `/etc/x-ui/install-result.env`. См. [Установку](/docs/guide/installation#unattended--cloud-init). |