env-vars.mdx 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. ---
  2. title: 环境变量
  3. description: 3x-ui 的 XUI_* 环境变量完整参考——涵盖数据库、面板、日志、内存、节点令牌加密以及隧道健康监测器。
  4. icon: Variable
  5. ---
  6. 3x-ui 从 `XUI_*` 环境变量中读取其运行时配置。使用脚本安装时,安装程序会将
  7. 这些变量写入服务环境文件(`/etc/default/x-ui`,或视发行版而定的
  8. `/etc/conf.d/x-ui` / `/etc/sysconfig/x-ui`);使用 Docker 时,则在
  9. `docker-compose.yml` 或 `docker run -e` 中设置。默认值已足够合理——只需设置
  10. 你需要更改的项,然后重启即可:`systemctl restart x-ui`。
  11. ## 数据库
  12. | Variable | Default | Description |
  13. | ------------------------ | ----------- | -------------------------------------------------------------------- |
  14. | `XUI_DB_TYPE` | `sqlite` | 后端:`sqlite`,或 `postgres`(也接受 `postgresql` / `pg`)。 |
  15. | `XUI_DB_FOLDER` | `/etc/x-ui` | SQLite 数据库文件(`x-ui.db`)所在的文件夹。 |
  16. | `XUI_DB_DSN` | — | PostgreSQL 连接字符串(当 `XUI_DB_TYPE=postgres` 时使用)。 |
  17. | `XUI_DB_MAX_OPEN_CONNS` | — | PostgreSQL 连接池中的最大打开连接数。 |
  18. | `XUI_DB_MAX_IDLE_CONNS` | — | PostgreSQL 连接池中的最大空闲连接数。 |
  19. 默认的 SQLite 数据库路径为 `/etc/x-ui/x-ui.db`。有关 SQLite ↔ PostgreSQL 的
  20. 细节,参见 [数据库](/docs/reference/database)。
  21. ## 面板
  22. | Variable | Default | Description |
  23. | ------------------------ | ------- | ------------------------------------------------------------------------ |
  24. | `XUI_PORT` | — | 覆盖面板端口(1–65535)。优先级高于已存储的设置。 |
  25. | `XUI_INIT_WEB_BASE_PATH` | `/` | **首次**启动时的初始 Web 根路径(例如 `/panel`)。 |
  26. | `XUI_ENABLE_FAIL2BAN` | `true` | 启用基于 Fail2ban 的 IP 限制强制执行。 |
  27. | `XUI_SKIP_HSTS` | `false` | 跳过 HSTS 标头——当 TLS 由反向代理终结时设为 `true`。 |
  28. ## 节点令牌加密
  29. 节点 API bearer 令牌以及已保存的 PIA 令牌默认以明文存储。静态加密需显式开启,
  30. 且采取失败即拒绝的策略:只要模式不是 `off`,面板在无法加载密钥时就拒绝启动。
  31. | Variable | Default | Description |
  32. | ------------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  33. | `NODE_TOKEN_ENCRYPTION` | `off` | `off`、`migration`(读取时接受明文或密文,写入一律加密)或 `required`(写入相同,但缺少密钥时启动失败)。注意此处没有 `XUI_` 前缀。 |
  34. | `XUI_NODE_TOKEN_KEY_FILE` | `/etc/x-ui/node_token_key.json` | JSON 密钥环,权限须为 `0600` 或更严格(Windows 上不检查,由 NTFS 权限保护)。优先加载。 |
  35. | `XUI_NODE_TOKEN_KEY` | — | 单个 base64 编码的 32 字节密钥,仅在密钥文件加载失败时读取。其密钥 ID 固定为 `env`,因此无法轮换。 |
  36. 密钥文件同时记录活动密钥和所有仍需用于解密的旧密钥:
  37. ```json
  38. { "active": "k1", "keys": { "k1": "<base64 32-byte key>" } }
  39. ```
  40. 使用 `openssl rand -base64 32` 生成密钥;密钥绝不接受通过命令行参数传入。启用某个
  41. 模式后,用活动密钥重新加密数据库中已有的记录:
  42. ```bash
  43. x-ui encrypt-tokens
  44. ```
  45. 该命令处理节点记录;PIA 令牌会在下次读取时重新加密。轮换密钥时,将新密钥加入
  46. `keys`,把 `active` 指向它,保留旧密钥用于解密,然后再次运行 `x-ui encrypt-tokens`。
  47. ## 日志与二进制文件
  48. | Variable | Default | Description |
  49. | ---------------- | ---------------- | ----------------------------------------------------------- |
  50. | `XUI_LOG_LEVEL` | `info` | `debug`、`info`、`notice`、`warning` 或 `error`。 |
  51. | `XUI_DEBUG` | `false` | 调试模式(强制将日志级别设为 `debug`)。 |
  52. | `XUI_LOG_FOLDER` | `/var/log/x-ui` | 日志输出目录。 |
  53. | `XUI_BIN_FOLDER` | `bin` | 存放 Xray-core 二进制文件及 geosite/geoip 文件的文件夹。 |
  54. ## 内存与性能分析
  55. 面板通过 `GOGC` 和定期释放来保持低内存占用。这些是高级调节项——除非你正在
  56. 为受限主机做调优,否则请保持不设置。
  57. | Variable | Default | Description |
  58. | ----------------------------- | ------- | ----------------------------------------------------------------- |
  59. | `XUI_GOGC` | — | Go GC 目标百分比;值越低 = 占用 RAM 越少,CPU 略增。 |
  60. | `XUI_MEMORY_RELEASE_INTERVAL` | — | 两次 `FreeOSMemory` 调用之间的分钟数;`0` 表示禁用。 |
  61. | `XUI_MEMORY_LIMIT` | — | Go 软内存限制,单位 **MiB**。 |
  62. | `GOMEMLIMIT` | — | Go 语法的软限制(例如 `400MiB`);优先级高于上一项。 |
  63. | `XUI_PPROF` | `false` | 在 `127.0.0.1:6060` 上暴露 pprof 性能分析。 |
  64. ## Xray
  65. | Variable | Default | Description |
  66. | ------------------------ | ------- | --------------------- |
  67. | `XRAY_VMESS_AEAD_FORCED` | `false` | 强制启用 VMess AEAD。 |
  68. ## 隧道健康监测器
  69. 可选的看门狗:它探测一个 URL(可选择**经由**本地 Xray 入站进行),并在反复
  70. 失败后重启 Xray。重启会断开所有已连接的客户端,因此请审慎启用。
  71. | Variable | Default | Description |
  72. | ----------------------------- | -------------------------------------------- | ----------------------------------------------------------------- |
  73. | `XUI_TUNNEL_HEALTH_MONITOR` | `false` | 启用监测器。 |
  74. | `XUI_TUNNEL_HEALTH_PROXY` | — | 用于发送探测的代理,例如 `socks5://127.0.0.1:1080`。留空 = 仅检查主机连通性。 |
  75. | `XUI_TUNNEL_HEALTH_URL` | `https://www.cloudflare.com/cdn-cgi/trace` | 要探测的 URL。 |
  76. | `XUI_TUNNEL_HEALTH_INTERVAL` | `30s` | 探测之间的间隔。 |
  77. | `XUI_TUNNEL_HEALTH_TIMEOUT` | `10s` | 单次探测的超时时间。 |
  78. | `XUI_TUNNEL_HEALTH_FAILURES` | `3` | 触发重启前的连续失败次数。 |
  79. | `XUI_TUNNEL_HEALTH_COOLDOWN` | `5m` | 两次重启之间的最小延迟。 |
  80. ## 无人值守安装
  81. | Variable | Description |
  82. | -------------------- | -------------------------------------------------------------------------------------------- |
  83. | `XUI_NONINTERACTIVE` | 设为 `1`(或在无 TTY 的环境下运行)即可在零提示的情况下完成安装;生成的凭据会写入 `/etc/x-ui/install-result.env`。参见 [安装](/docs/guide/installation#unattended--cloud-init)。 |