mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-20 21:05:02 +03:00
3fc3992a46
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.
116 lines
11 KiB
Plaintext
116 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` | — | بازنویسی پورت پنل (۱ تا ۶۵۵۳۵). بر تنظیم ذخیرهشده اولویت دارد. |
|
||
| `XUI_INIT_WEB_BASE_PATH` | `/` | مسیر پایهی وب اولیه در **نخستین** اجرا (مثلاً `/panel`). |
|
||
| `XUI_ENABLE_FAIL2BAN` | `true` | فعالسازی اعمالِ محدودیت IP مبتنی بر Fail2ban. |
|
||
| `XUI_SKIP_HSTS` | `false` | رد کردن هدر HSTS — وقتی TLS توسط یک پروکسی معکوس خاتمه مییابد، `true` تنظیم کنید. |
|
||
|
||
## رمزگذاری توکن نود
|
||
|
||
توکنهای حامل (bearer) 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` یا محدودتر (در ویندوز بررسی نمیشود و مجوزهای NTFS از آن محافظت میکنند). نخست همین بارگذاری میشود. |
|
||
| `XUI_NODE_TOKEN_KEY` | — | یک کلید ۳۲ بایتی 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` | — | درصد هدف GC در 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). |
|