[
  {
    "path": ".gitignore",
    "content": "*\n!.gitignore\n!package.json\n!tsconfig.json\n!src/\n!src/**\n!scripts/\n!scripts/build.js\n!.github/\n!.github/**\n!README_fa.md\n!README.md\n!RELEASE.md\n!NAT64Prefixes.md\n!docs\n!docs/**"
  },
  {
    "path": "README.md",
    "content": "<h1 align=\"center\">BPB Panel</h1>\n\n### 🌏 Readme in [Farsi](README_fa.md)\n\n<p align=\"center\">\n  <img src=\"docs/assets/images/panel-overview.jpg\">\n</p>\n<br>\n\n## Introduction\n\nThis project is aimed to provide a user panel to access FREE, SECURE and PRIVATE **VLESS**, **Trojan** and **Warp** configs and also a **private DoH** server. It ensures connectivity even when domains or Warp services are blocked by ISPs, offering two deployment options:\n\n- **Workers** deployment\n- **Pages** deployment\n\n🌟 If you found **BPB Panel** valuable, Your donations make all the difference 🌟\n\n### USDT (BEP20)\n\n```text\n0xbdf15d41C56f861f25b2b11C835bd45dfD5b792F\n```\n\n## Features\n\n1. **Free and Private**: No costs involved and the server is private.\n2. **Intuitive Panel:** Streamlined for effortless navigation, configuration and use.\n3. **Versatile Protocols:** Provides VLESS, Trojan and Wireguard (Warp) protocols.\n4. **Private DoH:** A ready to use DoH server, capable of customizing underlying DNS server.\n5. **Warp Pro configs:** Optimized Warp for crucial circumstances.\n6. **Fragment support:** Supports Fragment functionality for crucial network situations.\n7. **Comprehensive Routing Rules:** Bypassing Iran/China/Russia, Blocking QUIC, Porn, Ads, Malwares, Phishing and also bypassing sanctions.\n8. **Chain Proxy:** Capable of adding a chain proxy (VLESS, Trojan, Shadowsocks, socks and http) to fix IP.\n9. **Broad client compatibility:** Offers subscription links for Xray, Sing-box and Clash-Mihomo core clients.\n10. **Password-protected panel:** Provides secure and private panel with password protection.\n11. **Fully customizable:** Supports setting up clean IP-domains, Proxy IPs, DNS servers, choosing ports and protocols, Warp endpoints and more.\n\n## Limitations\n\n1. **UDP transport**: VLESS and Trojan protocols on workers do not handle **UDP** properly, so it is disabled by default (affecting features like Telegram video calls), UDP DNS is also unsupported. DoH is enabled by default for enhanced security.\n2. **Request limit**: each worker supports 100K requests per day for VLESS and Trojan, suitable for 2-3 users. You can use limitless Warp configs.\n\n## Getting started\n\n- [Installation methods](https://bia-pain-bache.github.io/BPB-Worker-Panel/installation/wizard/)\n- [Configuration](https://bia-pain-bache.github.io/BPB-Worker-Panel/configuration/)\n- [How to use](https://bia-pain-bache.github.io/BPB-Worker-Panel/usage/)\n- [FAQ](https://bia-pain-bache.github.io/BPB-Worker-Panel/faq/)\n\n## Supported Clients\n\n|       Client        |      Version      |  Fragment support  |  Warp Pro support  |\n| :-----------------: | :---------------: | :----------------: | :----------------: |\n|     **v2rayNG**     | 1.10.26 or higher | :heavy_check_mark: | :heavy_check_mark: |\n|     **MahsaNG**     |   14 or higher    | :heavy_check_mark: | :heavy_check_mark: |\n|     **v2rayN**      | 7.15.4 or higher  | :heavy_check_mark: | :heavy_check_mark: |\n|   **v2rayN-PRO**    |   1.9 or higher   | :heavy_check_mark: | :heavy_check_mark: |\n|    **Sing-box**     | 1.12.0 or higher  | :heavy_check_mark: |        :x:         |\n|    **Streisand**    | 1.6.64 or higher  | :heavy_check_mark: | :heavy_check_mark: |\n|   **Clash Meta**    |                   |        :x:         | :heavy_check_mark: |\n| **Clash Verge Rev** |                   |        :x:         | :heavy_check_mark: |\n|     **FLClash**     |                   |        :x:         | :heavy_check_mark: |\n|   **AmneziaVPN**    |                   |        :x:         | :heavy_check_mark: |\n|    **WG Tunnel**    |                   |        :x:         | :heavy_check_mark: |\n\n## Environment variables\n\n|   Variable   |               Usage                |     Mandatory      |\n| :----------: | :--------------------------------: | :----------------: |\n|   **UUID**   |             VLESS UUID             | :heavy_check_mark: |\n| **TR_PASS**  |          Trojan Password           | :heavy_check_mark: |\n| **PROXY_IP** | Proxy IP or domain (VLESS, Trojan) |        :x:         |\n|  **PREFIX**  |   NAT64 Prefixes (VLESS, Trojan)   |        :x:         |\n| **SUB_PATH** |         Subscriptions' URI         |        :x:         |\n| **FALLBACK** |  Fallback domain (VLESS, Trojan)   |        :x:         |\n| **DOH_URL**  |              Core DOH              |        :x:         |\n\n---\n\n## Stargazers Over Time\n\n[![Stargazers Over Time](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel.svg?variant=adaptive)](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel)\n\n---\n\n### Special Thanks\n\n- VLESS, Trojan [Cloudflare-workers/pages proxy script](https://github.com/yonggekkk/Cloudflare-workers-pages-vless) created by [yonggekkk](https://github.com/yonggekkk)\n- CF-vless code author [3Kmfi6HP](https://github.com/3Kmfi6HP/EDtunnel)\n- CF preferred IP program author [badafans](https://github.com/badafans/Cloudflare-IP-SpeedTest), [XIU2](https://github.com/XIU2/CloudflareSpeedTest)\n"
  },
  {
    "path": "README_fa.md",
    "content": "<h1 align=\"center\">پنل BPB</h1>\n\n#### 🌏 Readme in [English](README.md)\n\n<p align=\"center\">\n  <img src=\"docs/assets/images/panel-overview.jpg\">\n</p>\n<br>\n\n## معرفی\n\nاین پروژه یه پنل کاربری برای دسترسی به کانفیگ‌های رایگان، امن و خصوصی **VLESS**، **Trojan** و **Warp** ارائه می‌ده. حتی وقتی دامنه‌ها یا سرویس Warp توسط اپراتورها فیلتر شدن، اتصال رو تضمین می‌کنه. این پنل به دو روش راه‌اندازی می‌شه:\n\n- با **Cloudflare Workers**\n- با **Cloudflare Pages**\n\n🌟 اگه **پنل BPB** براتون مفید بوده، با حمایتتون بهم دلگرمی می‌دید 🌟\n\n### USDT (BEP20)\n\n```text\n0xbdf15d41C56f861f25b2b11C835bd45dfD5b792F\n```\n\n## ویژگی‌ها\n\n- **رایگان و شخصی**: بدون هیچ هزینه‌ای، سرور شما شخصی هست.\n- **پنل کاربری ساده**: کار باهاش راحته و تنظیمات و استفاده ازش خیلی آسونه.\n- **پروتکل‌های متنوع**: ارائه کانفیگ‌های VLESS، Trojan و Wireguard (Warp).\n- **DoH شخصی**: یک DoH شخصی با قابلیت تنظیم DNS زیرینایی.\n- **کانفیگ‌های Warp Pro**: کانفیگ‌های Warp بهینه‌شده برای شرایط خاص ایران.\n- **پشتیبانی از Fragment**: اتصال حتی در صورت فیلتر شدن دامنه.\n- **قوانین مسیریابی کامل**: دور زدن سایت‌های ایرانی، چینی و روسی، مسدود کردن QUIC، محتوای پورن، تبلیغات، بدافزارها، فیشینگ و در زدن سایت‌های تحریمی.\n- **زنجیره‌ی Proxy**: می‌تونید یه Proxy زنجیره‌ای از نوع VLESS، Trojan، Shadowsocks، Socks یا http اضافه کنید تا IP ثابت بشه.\n- **پشتیبانی از برنامه‌های مختلف**: لینک‌های اشتراک برای برنامه‌های با هسته‌های Xray، Sing-box و Clash-Mihomo.\n- **پنل امن با رمز عبور**: پنل محافظت شده با رمز عبور.\n- **سفارشی‌سازی کامل**: تنظیم IP تمیز، Proxy IP، سرورهای DNS، انتخاب پورت‌ها و پروتکل‌ها، Warp Endpoint و خیلی امکانات دیگه.\n\n## محدودیت‌ها\n\n- **اتصال UDP**: پروتکل‌های VLESS و Trojan روی Workerها نمی‌تونن UDP رو به‌خوبی پشتیبانی کنن، برای همین به‌صورت پیش‌فرض غیرفعاله (این روی امکاناتی مثل تماس تصویری تلگرام تأثیر می‌ذاره). DNSهای UDP هم پشتیبانی نمی‌شن. به جاش DoH فعاله که امن‌تره.\n- **محدودیت تعداد درخواست**: هر Worker برای VLESS و Trojan روزانه 100 هزار درخواست پشتیبانی می‌کنه، که برای 2-3 نفر کافیه. برای اتصال نامحدود می‌تونید از کانفیگ‌های Warp استفاده کنید.\n\n## شروع به کار\n\n- [روش‌های راه‌اندازی](https://bia-pain-bache.github.io/BPB-Worker-Panel/fa/installation/wizard/)\n- [راهنمای تنظیمات](https://bia-pain-bache.github.io/BPB-Worker-Panel/fa/configuration/)\n- [نحوه‌ی استفاده](https://bia-pain-bache.github.io/BPB-Worker-Panel/fa/usage/)\n- [پرسش‌های متداول (FAQ)](https://bia-pain-bache.github.io/BPB-Worker-Panel/en/faq/)\n\n## برنامه‌های پشتیبانی شده\n\n<div dir=\"rtl\">\n\n|       Client        |     Version      | پشتیبانی از Fragment | پشتیبانی از Warp Pro |\n| :-----------------: | :--------------: | :------------------: | :------------------: |\n|     **v2rayNG**     | 1.10.26 و بالاتر |  :heavy_check_mark:  |  :heavy_check_mark:  |\n|     **MahsaNG**     |   14 و بالاتر    |  :heavy_check_mark:  |  :heavy_check_mark:  |\n|     **v2rayN**      | 7.15.4 و بالاتر  |  :heavy_check_mark:  |  :heavy_check_mark:  |\n|   **v2rayN-PRO**    |   2.0 و بالاتر   |  :heavy_check_mark:  |  :heavy_check_mark:  |\n|    **Sing-box**     | 1.12.0 و بالاتر  |  :heavy_check_mark:  |         :x:          |\n|    **Streisand**    | 1.6.64 و بالاتر  |  :heavy_check_mark:  |  :heavy_check_mark:  |\n|   **Clash Meta**    |                  |         :x:          |  :heavy_check_mark:  |\n| **Clash Verge Rev** |                  |         :x:          |  :heavy_check_mark:  |\n|     **FLClash**     |                  |         :x:          |  :heavy_check_mark:  |\n|   **AmneziaVPN**    |                  |         :x:          |  :heavy_check_mark:  |\n|    **WG Tunnel**    |                  |         :x:          |  :heavy_check_mark:  |\n\n</div>\n\n## متغیرهای محیطی (داشبورد کلادفلر)\n\n<div dir=\"rtl\">\n\n|  نام متغیر   |           مورد استفاده            |       اجباری       |\n| :----------: | :-------------------------------: | :----------------: |\n|   **UUID**   |      UUID برای پروتکل VLESS       | :heavy_check_mark: |\n| **TR_PASS**  |        پسورد پروتکل Trojan        | :heavy_check_mark: |\n| **PROXY_IP** |   Proxy IP برای VLESS و Trojan    |        :x:         |\n|  **PREFIX**  | NAT64 Prefix برای VLESS و Trojan  |        :x:         |\n| **SUB_PATH** |     مسیر لینک‌های اشتراک شخصی     |        :x:         |\n| **FALLBACK** | دامنه‌ی پوششی برای VLESS و Trojan |        :x:         |\n| **DOH_URL**  |    DOH برای عملیات داخلی ورکر     |        :x:         |\n\n</div>\n\n---\n\n## تعداد ستاره‌ها به مرور زمان\n\n[![تعداد ستاره‌ها به مرور زمان](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel.svg?variant=adaptive)](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel)\n\n---\n\n### تشکر ویژه\n\n- نویسنده پروتکل‌های VLESS و Trojan [پروکسی Cloudflare-workers/pages](https://github.com/yonggekkk/Cloudflare-workers-pages-vless)\n- نویسنده کد CF-vless [3Kmfi6HP](https://github.com/3Kmfi6HP/EDtunnel)\n- نویسنده برنامه IP ترجیحی CF [badafans](https://github.com/badafans/Cloudflare-IP-SpeedTest)، [XIU2](https://github.com/XIU2/CloudflareSpeedTest)\n"
  },
  {
    "path": "RELEASE.md",
    "content": "# 💡 Bug fixes & Improvements\n\n- Due to nslookup issue for querying proxy IPs, the built-in proxy IPs list is now implemented and is accessible under `/proxy-ip` or by clicking provided shortcut in panel which lists Country, City and ISP. #1185\n\n- Fixed ECH config query. Be aware that ECH config query is delegated to Core DNS module (Local DNS) now, so this DNS server should be locally available. Optional `ECH Server Name` is also added. #1190\n\n> [!CAUTION]\n> Please note that `ECH Server Name` option is available in Xray for a while, however sing-box supports this feature from 1.13.0 and Clash supports it from v1.19.20. If you leave it empty, it uses your worker domain to query ECH config which works on all cores' stable versions right now. Also if you enter a Cloudflare domain, it should have ECH enabled on it, otherwise it won't work. To check this, visit [here](https://dns.google/query?name=&rr_type=HTTPS&ecs=) and resolve your desired domain, you should see an `ech` value in `Answer` field.\n\n> [!CAUTION]\n> ECH is still unstable in IRAN.\n\n> [!TIP]\n> ECH applies only to `Normal` subscription, not `Fragment`.\n\n- Fixed `ECH Server Name` bug #1224\n- Fixed ECH query DNS if local DNS is set to `localhost`\n- Fixed some typos, PR #1191\n- Reverted back URL configs to panel as `Raw` subscription. None of panel settings apply to these configs as you know and also they consume more worker requests than `Normal` configs and won't perform as others. They're not recommended to use and connections issues will not be supported anymore, please use `Normal` configs instead.\n\n> [!CAUTION]\n> You have to manually set DoH as remote DNS in your clients and disable MUX to use `Raw` configs.\n\n---\n\n## 💡 Other tips\n\n> [!NOTE]\n> These days Fragment on some ISPs stopped working in Iran, you can change `Fragment packet` to `1-1` instead of `tlshello` and test, also you can try to change `Fragment mode` to bypass IR-GFW.\n\n> [!CAUTION]\n> If you are upgrading from versions below 3.5.1 to 4, you should get subscriptions from panel again.\n\n> [!CAUTION]\n> sing-box client version should be 1.12.0 or higher.\n\n> [!CAUTION]\n> Xray clients should be updated to the latest version i.e. v2rayNG, v2rayN and Streisand.\n"
  },
  {
    "path": "docs/NAT64Prefixes.md",
    "content": "|    NAT64 Prefix     |     Location     |\n| :-----------------: | :--------------: |\n| [2a02:898:146:64::] |    Netherland    |\n| [2602:fc59:b0:64::] |        USA       |\n| [2602:fc59:11:64::] |        USA       |\n"
  },
  {
    "path": "docs/assets/scripts/lang-switch.js",
    "content": "document.addEventListener(\"DOMContentLoaded\", () => {\n    const langLink = document.querySelector('a[hreflang=\"fa\"], a[hreflang=\"en\"]');\n    if (!langLink) return;\n    const currentPath = window.location.pathname;\n    const base = \"/BPB-Worker-Panel\";\n\n    let newPath;\n    if (currentPath.startsWith(`${base}/fa/`)) {\n        newPath = currentPath.replace(`${base}/fa`, base);\n    } else {\n        newPath = currentPath.replace(base, `${base}/fa`);\n    }\n\n    langLink.setAttribute(\"href\", newPath);\n});\n"
  },
  {
    "path": "docs/assets/stylesheet/extra.css",
    "content": "h1 {\n    text-align: center;\n}\n\nimg {\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n}"
  },
  {
    "path": "docs/en/docs/configuration/common.md",
    "content": "# :material-cog-outline:{ .md .middle } Common settings\n\n![Common settings](../images/common-settings.jpg)\n\nThis section provides shared settings between all subscriptions and protocols.\n\n## Local DNS\n\nThe local DNS is mainly used for routing bypass rules. By default the local DNS server is set to Google DNS.\n\nMany DNS servers are available to use as Local DNS in shape of IP, however you can use **localhost** which uses your ISP DNS server which is fine for routing purposes.\n\n## Fake DNS\n\nYou may enable Fake DNS to reduce DNS query latency, but use caution, it may be incompatible with some applications or interfere with system DNS. If you're unsure about its functionality, avoid enabling it.\n\n## Anti Sanction DNS\n\nThis DNS server is used for **Sanction Rules** [explained here](./routing-rules.md). The default DNS server is [Shecan](https://shecan.ir/) (for iranian users). You should check whether it supports your desired domains before setting routing rules.\n\n!!! info\n    DNS server can be in shape of an IP (UDP DNS), TCP DNS, DOT or DoH.\n\n## Enabling IPv6\n\nThe panel provides IPv6 VLESS/Trojan configs by default. If your ISP doesn’t support IPv6, disable it to reduce the number of configs and also optimize DNS and routing settings for VLESS, Trojan and Warp configs.\n\n## Allow connections from LAN\n\nIf you enable this feature, others in you network (for example WiFi network) can use your proxy by knowing your device local IP. They can set a socks proxy on their device, set your local IP as address and these ports based on which client you are using:\n\n- v2ray: 10808\n- sing-box: 2080\n- Clash: 7890\n\nPlease note that this can be risky to use in office or public networks.\n\n## Log Level\n\nSpecifies the level of client logs. Normally it's \"warning\" which is enough to debug issues, however you may need to change it to submit issues in Github or check your proxy activity.\n"
  },
  {
    "path": "docs/en/docs/configuration/fragment.md",
    "content": "# :material-cog-outline:{ .md .middle } Fragment settings\n\nFragment solution almost solves Clean IP issue for Cloudflare CDN by hiding SNI from MitM, however, settings should be obtained based on ISP. Also please note that Fragment can be enabled for sing-box, however sing-box does not use fragment settings and has its own default settings.\n\n![Fragment settings](../images/fragment-settings.jpg)\n\nBy default settings are:\n\n- **Length**: 100-200\n- **Interval**: 1-1\n- **Packets**: tlshello\n\nYou can also switch Fragment modes and test based on network situation. Usually default or `Low` mode should be ok. Please note that by switching to `Medium`, `High` or `Severe` profiles, handshake ping goes higher but it can result in better and more stable connection in high situations. The `Best Fragment` config is always the best and smart solution, just connect and wait for at least 30 seconds.\n\nYou can set the parameters based on your ISP's situation.\n\n!!! info\n    Packets have multiple modes. However, `tlshello` only applies to **TLS configurations**; ports like 80, 8080, etc., are not affected.\n\n!!! tip \"Tip for Iranians\"\n    Currently, fragment performance is significantly more efficient on clients using the **Xray Knocker core**, specifically **MahsaNG** and **v2rayN PRO** clients. This core was developed and customized for conditions in Iran.\n\n!!! tip\n    If you cannot find the optimum fragment settings for your ISP, there is a **Best fragment** configuration available in the subscription. Simply connect to it and wait a short while; it tests nearly all valid fragment settings and automatically connects to the best one.\n\n!!! note\n    Fragment values have maximum limits. The Length cannot exceed 500, and the Interval cannot exceed 30ms.\n\n!!! warning\n    Max Split feature is recently added to Xray core and is a little bit tricky, so please read Xray documents first before setting any value.\n"
  },
  {
    "path": "docs/en/docs/configuration/index.md",
    "content": "# :material-cog-outline:{ .md .middle } Settings Configuration\n\n!!! tip\n    Please don't worry about incorrect configurations. There's a `Reset Settings` button next to the `Apply Settings` button that will reset the panel to default settings.\n\n!!! info\n    You must update your subscriptions after making any changes.\n\n<div class=\"grid cards\" markdown>\n\n- :material-cog-outline:{ .lg .middle } __Common__\n\n    ---\n\n    Configure shared settings across all protocols and subscriptions.\n\n    [:octicons-arrow-right-24: Getting started](common.md)\n\n- :material-cog-outline:{ .lg .middle } __VLESS - Trojan__\n\n    ---\n\n    Configure general VLESS and Trojan settings such as DNS Servers, Clean IPs, Ports, and more.\n\n    [:octicons-arrow-right-24: Getting started](vless-trojan.md)\n\n- :material-cog-outline:{ .lg .middle } __Fragment__\n\n    ---\n\n    Configure Fragment settings to mitigate ISP or regional disruptions.\n\n    [:octicons-arrow-right-24: Getting started](fragment.md)\n\n- :material-cog-outline:{ .lg .middle } __Warp__\n\n    ---\n\n    Common Warp settings for __Warp__ and __Warp PRO__ subscriptions, including Endpoints, Scanner, IPv6, etc.\n\n    [:octicons-arrow-right-24: Getting started](warp.md)\n\n- :material-cog-outline:{ .lg .middle } __Warp PRO__\n\n    ---\n\n    PRO settings designed to bypass Warp blockage by your ISP.\n\n    [:octicons-arrow-right-24: Getting started](warp-pro.md)\n\n- :material-cog-outline:{ .lg .middle } __Routing Rules__\n\n    ---\n\n    Add routing rules to bypass local websites, block Ads, block unwanted content, and more.\n\n    [:octicons-arrow-right-24: Getting started](routing-rules.md)\n\n</div>\n"
  },
  {
    "path": "docs/en/docs/configuration/routing-rules.md",
    "content": "# :material-cog-outline:{ .md .middle } Routing Rules\n\n![Routing Rules](../images/routing-rules.jpg)\n\n## Predefined rules\n\nUsing predefined routing rules, you can apply these settings to configs:\n\n* Connect directly to Iranian addresses without a proxy (no need to disconnect for visiting some websites, especially payment gateways).\n* Have direct access to Chinese websites.\n* Have direct access to Russian websites.\n* Block Iranian and foreign ads, up to 90 percent.\n* Block Porn content websites.\n* Block QUIC connections (due to network instability).\n* Block Malware (Read warning)\n* Block Phishing (Read warning)\n* Block Cryptominers (Read warning)\n\nDirect access to local addresses like 127.0.0.1 is set by default on configs and there's no need to manually add them.\n\n!!! warning\n    v2ray users should change Geo Assets to **Chocolate4U** and download assets if they wanna use `Malware`, `Phishing` and `Cryptominers` rules, otherwise configs won't connect.\n\n!!! warning\n    If you enable routing rules and the client does not connect, the primary reason is that the Geo asset is not updated. Go to the Geo assets settings in the v2rayNG menu and click the cloud or download icon to update them. If the update process is unsuccessful, you will not be able to connect. If you have tried everything and it still does not update, download the two files from the links below, and instead of clicking the update button, click the add button and import these two files:\n\n```title=\"GeoIP\"\nhttps://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat\n```\n\n```title=\"GeoSite\"\nhttps://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat\n```\n\n## Custom Rules\n\nThere are cases which predefined rules cannot help. For example, if you have blocked porn contents but a specific website was not on the list and is not blocked, you will need to use custom rules.\n\nYou can use three different formats in this section i.e. **Domain**, **IP** and **IP/CIDR**.\n\nPlease be aware that if you enter `google.com`, all of its subdomains will also be blocked or routed directly, such as `drive.google.com` or `mail.google.com`. Examples:\n\n```title=\"Domain\"\ngoogle.com\n```\n\n```title=\"IPv4\"\n192.168.1.1\n```\n\n```title=\"IPv6\"\n2606:4700::6810:85e5\n```\n\n```title=\"IPv4 CIDR\"\n192.168.1.1/32\n```\n\n```title=\"IPv6 CIDR\"\n2606:4700::6810:85e5/128\n```\n\n## Sanction Rules\n\nIn case you need some websites to just bypass sanctions and connect directly (without proxy), you can use this section.\nYou can set your desired DNS server [in common settings](./common.md) (which should be a transparent proxy also) and choose preset rules or fill in custom addresses. you can even use configs like `WorkerLess` which do not use any proxy and access sanctioned websites.\n\n!!! info\n    Please be aware that if you enter `google.com` in custom rules, all of its subdomains will also be routed directly, such as `drive.google.com` or `mail.google.com`.\n\n!!! note\n    When these rules are activated, you should make sure the DNS supports domain, for example if you activate `Microsoft` rule and the DNS does not support it, you will fail to connect to Microsoft domains. Please check DNS catalogue and make sure your target rule or domain is supported.\n"
  },
  {
    "path": "docs/en/docs/configuration/vless-trojan.md",
    "content": "# :material-cog-outline:{ .md .middle } VLESS and Trojan settings\n\n![VLESS and Trojan settings](../images/vless-trojan-settings.jpg)\n\n## Remote DNS\n\nBy default, the remote DNS is Google DNS over HTTPS (DoH). However, you can use other DoH or DoT servers, except Cloudflare DNS servers:\n\n!!! tip \"Well known DOH and DOT servers\"\n    - `https://dns.google/dns-query`\n    - `https://dns.adguard-dns.com/dns-query`\n    - `https://dns.quad9.net/dns-query`\n    - `tls://dns.google`\n\n## Chain Proxy\n\nAs noted, a Proxy IP fixes the IP for Cloudflare target addresses, but node IPs may differ for other targets. A **Chain Proxy** ensures a consistent IP for all targets. You can use a free config here, even if it’s blocked by your ISP, to permanently fix your IP to the Chain Proxy IP.\n\n### Supported protocols\n\n* VLESS\n* VMess\n* Trojan\n* Shadowsocks\n* Socks\n* Http\n\n### Supported Transports\n\n* TCP\n* TCP http header\n* Websocket\n* GRPC\n* Httpupgrade\n\n### Supported TLS\n\n* TLS\n* Reality\n\n!!! note\n    The Chain Proxy config must not be a worker itself, or the final IP will still change.\n\n!!! info\n    Socks and http configs should have username and password, Xray does not support raw configs.\n\n!!! info\n    Shadowsocks cannot have any transport like websocket, grpc... and cannot have TLS.\n\n!!! warning\n    VLESS, VMess and Trojan configs with `randomized` ALPN values are incompatible with Clash due to lack of Fingerprint\n\nThis setting applies to **Normal** and **Fragment** subscriptions. After applying, update the subscription. The chained configs will be added alongside original configs using 🔗 icon. This way, when Chain Proxy stops working, you still have access to original configs.\n\n## Clean IP/Domains\n\nFor non-**Normal** subscription, you may want to use clean IPs. The panel includes a scanner, downloadable as a zip file for your operating system. Run the CloudflareScanner, and results will be saved in `result.csv`, allowing you to select IPs based on delay and download speed. Windows is recommended for this process, and ensure your VPN is disconnected during the test. For advanced scanning, refer to [this guide](https://github.com/bia-pain-bache/Cloudflare-Clean-IP-Scanner/blob/master/README.md).\n\n!!! tip \"Tip for Iranian Users\"\n    On ISPs supporting IPv6 (e.g., Rightel, Irancell, Asiatech), enable IPv6 on your SIM card, activate the **Prefer IPv6** option in client settings, and use the last two or first default configs. IPv6 IPs generally perform better.\n\n!!! tip\n    When using **Fragment**, Clean IPs do not play a significant role, but some ISPs, like Rightel, may still require them.\n\nTo add custom configs alongside default ones, enter clean IPs or domains as shown in the section image and click **Apply**. Updated subscription will import these new configs, which are also added to **Best Ping** and **Best Fragment** configs.\n\n## Protocol Selection\n\nEnable either or both **VLESS** and **Trojan** protocols.\n\n## Port Selection\n\nSelect the required ports. TLS ports offer more secure configs, but during TLS disruptions or when **Fragment** underperforms, non-TLS configs can be a viable alternative.\n\n!!! note\n    Non-TLS configs require the panel to be deployed using the Workers method. HTTP ports will not appear in the panel if the Pages method is used or you set a custom domain.\n\n!!! info\n    Non-TLS configs are only added to **Normal** subscription.\n\n## Fingerprint\n\nHere you can select TLS fingerprint, default to randomized.\n\n## Best Interval\n\nBy default, **Best** configs test every 30 seconds to identify the optimal config or Fragment value. For low-speed networks during activities like video streaming or gaming, this may cause lag. Adjust the interval between 10 and 90 seconds as needed.\n\n## TCP Fast Open\n\nIf your device supports TCP Fast Open and your ISP does not interfere with TFO, you can enable the feature to enhance your connections. Please note that Linux users have to enable TFO before activating this feature.\n\n## ECH (Encrypted Client Hello)\n\nAs you may know there are several techniques to obfuscate connection SNI to bypass firewall. Fragment hides SNI, Custom domain changes SNI and finally ECH can change SNI to Cloudflare default ECH domain. The problem is that Cloudflare uses a default domain named `cloudflare-ech.com` for all CDN and Worker domains, so the blockage is easy for ISPs. This option will not be activated on `Fragment` subscription.\n\n### ECH Server Name\n\nIf you leave this field empty, the ECH config will be queried from your worker domain. however, if your worker domain is blocked, you can use another domains which have enabled ECH on Cloudflare CDN. To check this, visit [here](https://dns.google/query?name=&rr_type=HTTPS&ecs=) and resolve your desired domain, you should see an `ech` value in `Answer` field.\n\n!!! warning\n    Please note that `ECH Server Name` option is available in Xray for a while, however sing-box supports this feature from 1.13.0 and Clash supports it from v1.19.20. So if your client doesn't meet these versions, please leave it empty.\n\n## Proxy IP\n\n### Mode\n\nStarting with version 3.4.2 you can choose to use Proxy IP or NAT64 Prefix for connecting to Cloudflare CDN addresses.\n\n### Proxy IPs / Domains\n\nYou can change the Proxy IP via the panel by applying the change and updating the subscription. However, setting the Proxy IP through the Cloudflare dashboard or using wizard is recommended because:\n\n!!! note\n    Changing the Proxy IP via the panel requires updating the subscription if the IP stops working. This can disrupt donated configs, as users without an active subscription cannot update them. Use this method only for personal usage. Other methods don’t require subscription updates.\n\nYou can check available Proxy IPs by clicking the icon beside this field in panel or visiting `/proxy-ip` in browser, which lists IPs by region and ISP.\n\n!!! info\n    To use multiple Proxy IPs, fill in them below each other.\n\n### NAT64 Prefixes\n\nYou can change the Proxy IP mode and fill in NAT64 Prefixes via the panel by applying the changes and updating the subscription. However, setting the NAT64 prefixes through the Cloudflare dashboard or using wizard is recommended because:\n\n!!! note\n    Changing the NAT64 Prefixes via the panel requires updating the subscription if the IP stops working. This can disrupt donated configs, as users without an active subscription cannot update them. Use this method only for personal usage. Other methods don’t require subscription updates.\n\nYou can find available NAT64 Prefixes [in here](https://github.com/bia-pain-bache/BPB-Worker-Panel/blob/main/docs/NAT64Prefixes.md), which lists IPs by region and ISP.\n\n!!! info\n    To use multiple Prefixes, fill them in below each other.\n\n## Custom CDN\n\nUse a Custom CDN (e.g., Fastly, Gcore) to mask your Worker domain. Configure the following three sections:\n\n### Addresses\n\nThese are the IPs or clean IPs specific to the CDN. You must use the CDN’s own IPs, not Cloudflare’s. Enter domains, IPv4, or IPv6 addresses as shown, with IPv6 addresses enclosed in brackets, e.g., `[2a04:4e42:200::731]`.\n\n### Host\n\nThe host defined in the CDN that points to your Worker, such as a fake domain in Fastly.\n\n### SNI\n\nA fake domain or a site on the same CDN, e.g., `speedtest.net` (without `www`) for Fastly.\n\nAfter configuring these fields, related configs will be added to **Normal** subscription, tagged with a `C` flag to distinguish them.\n\n!!! info\n    Only ports 443 and 80 are supported for these configs.\n"
  },
  {
    "path": "docs/en/docs/configuration/warp-pro.md",
    "content": "# :material-cog-outline:{ .md .middle } Warp Pro settings\n\nThis section applies exclusively to the **Warp Pro** subscription, as detailed [here](../usage/warp-pro.md).  \n\n![Warp Pro settings](../images/warp-pro-settings.jpg)\n\n## Definitions\n\nSeveral common terms are used across all implementations of Warp noise (fake packets). Most cores, including **Xray**, **Xray Knocker**, and **Amnezia**, share at least two parameters:\n\n### Mode\n\nEach Warp noise implementation has a specific mode that determines in which shape noise is sent to the server to obfuscate the connection.\n\n### Count\n\nThe number of noise packets sent by the client to the server.\n\n### Size\n\nThe size of each noise packet, measured in bytes.\n\n### Delay\n\nThe interval between sending noise packets.\n\n## MahsaNG\n\n### MahsaNG Mode\n\n- **none**: No noise is applied, equivalent to a standard Warp config.\n- **quic**: Recommended by developers for conditions in Iran.\n- **random**: Generates noise randomly.\n- Custom mode: Allows use of a custom HEX string (e.g., `fe09ad5600bc...`).\n\n## Clash and Amnezia\n\nThis section applies to **Amnezia**, **WG Tunnel**, and **Clash-Mihomo** core clients, which share the same settings. You specify the number of noise packets and their minimum and maximum sizes. In the **Warp Pro** subscription table, you can also download a zip file for **Amnezia** and **WG Tunnel** configs, in addition to the subscriptions.\n\nThese settings are determined experimentally for each ISP through trial and error.\n\n## v2rayNG and v2rayN\n\n### v2ray Modes\n\nFour modes are available for **v2rayNG** and **v2rayN** clients: **base64**, **string**, **hex**, and **random**. In the Noise Count section, you can specify how many noise packets to include in the config. Multiple noises with different types can be added; they do not need to be uniform.\n\n### Noise Packet\n\nThe packet value must correspond to the selected mode:  \n\n- **Base64**: Requires a valid Base64 value.\n- **String**: Can be any string.\n- **Random**: Specify the string length.\n- **Hex**: Requires a Hex string.\n\nExample:\n\n```title=\"Base64\"\nNTUyMjU0NjItN2I4MC00YWFmLWE3NDgtNjZiYWZiNjlmNmQ2\n```\n\n```title=\"String\"\nsalamchetori123\n```\n\n```title=\"Random\"\n10-30\n```\n\n```title=\"Hex\"\n01d800f9373b2c418713aafde43021004ac3b89f\n```\n\n!!! tip\n    - Convert text to Base64 using [this tool](https://onlinebase64tools.com/base64-encode).\n    - Generate a Hex string with [this tool](https://onlinetools.com/random/generate-random-hexadecimal-numbers).\n\n### Applies To\n\nSpecifies which type of IPs the noise apply to. The default is IP which applies to both IPv4 and v6.\n"
  },
  {
    "path": "docs/en/docs/configuration/warp.md",
    "content": "# :material-cog-outline:{ .md .middle } Warp General settings\n\nThese settings apply to both **Warp** and **Warp Pro** subscriptions.  \n\n![Warp General settings](../images/warp-settings.jpg)\n\n## Remote DNS\n\nWarp remote DNS can be only of type IPv4 for performance and compatibility. The default DNS is Cloudflare public DNS which is a perfect candidate. It's highly recommended to use Cloudflare DNS servers if you insist on changing it, which have most compatibility and efficiency when used with Cloudflare Warp, like:\n\n- 1.1.1.2, 1.0.0.2 (Cloudflare security DNS)\n- 1.1.1.3, 1.0.0.3 (Cloudflare adult DNS)\n\n## Endpoints - Scanner\n\nEndpoints for Warp function similarly to Clean IPs for VLESS and Trojan. The panel provides a scanner that you can run on Termux (Android), Windows, macOS or Linux and input the results here. Note that the results are not 100% reliable, so testing is necessary. Please note that you have to exit any proxy app before testing, if you use v2rayN, you should completely exit it from taskbar, clearing proxy is not enough.\n\n!!! info\n    - Endpoints are formatted as IP:Port or Domain:Port and must be entered one per line.\n    - For IPv6 addresses, enclose them in square brackets. See the example below:\n\n    ```title=\"IPv4\"\n    123.45.8.6:1701\n    ```\n    ```title=\"IPv6\"\n    [2a06:98c1:3120::3]:939\n    ```\n    ```title=\"Domain\"\n    engage.cloudflareclient:2408\n    ```  \n\n## Fake DNS\n\nYou can enable Fake DNS for Warp configs to reduce DNS latency. However, use caution, as it may be incompatible with some applications or interfere with system DNS. If you're unsure about its functionality, avoid enabling it.\n\n## Enabling IPv6\n\nIf your ISP does not support IPv6, disable it to optimize DNS and proxy performance.\n\n## Best Interval\n\n**Warp** and **Warp Pro** subscriptions include **Best Ping** configs. By default, these test configs every 30 seconds to identify the optimal config or Endpoint for connection. On slower networks, this interval may cause lag during activities like video streaming or gaming. You can adjust the interval between 10 and 90 seconds.\n\n## Warp Accounts\n\nUpdating the accounts retrieves new Warp accounts from **Cloudflare**. This process does not affect connection speed or other settings.\n"
  },
  {
    "path": "docs/en/docs/faq.md",
    "content": "# :material-cloud-question-outline:{ .lg .middle } Frequently Asked Questions\n\n??? question \"Why don't v2ray configs connect?\"\n    If you enabled `Routing rules` and the VPN doesn't connect, the only reason is that the Geo assets are not updated. In the v2rayN(G) client menu, go to the `Asset files` section and tap the cloud or download icon to update. Note that it takes a while to update, you have to wait to see `success` for all files. If the update fails, it won't connect. If you tried everything and it still doesn't update, download the two files below from the links and instead of updating, tap the add button and import these two files:\n    ```title=\"GeoIP\"\n    https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat\n    ```\n    ```title=\"GeoSite\"\n    https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat\n    ```\n\n??? question \"Why don't Raw subscription configs connect or cannot open websites?\"  \n    To use these configs, disable `Mux` in the settings of whichever app you’re using. Also set remote DNS to DOH, DoT or TCP:\n    ```title=\"DoH\"\n    https://8.8.8.8/dns-query\n    ```\n    ```title=\"DoT\"\n    tls://8.8.8.8  \n    ```\n    ```title=\"TCP\"\n    tcp://8.8.8.8  \n    ```\n\n??? question \"Why configs connect in v2rayNG and not Streisand for example?\"\n    BPB tries adapting new cores' features ASAP, meanwhile some developers just upgrade cores to the latest version regardless of full features adaption and optimizations. So you should communicate such issues with their own developers.\n\n??? question \"Why Fragment configs speed is slow on my ISP?\"\n    Each ISP has its own prefered Fragment settings. Most are fine with the panel defaults, but these values may work well on yours. You may need to change Fragment profile to `Medium`, `High` or even manually change settings in `Custom` profile to achieve better results. Also MahsaNG is recommended to connect to fragment configs.\n\n??? question \"I extracted and used a Proxy IP regarding tutorials, why some sites or applications like X still won't work!\"  \n    There are many public IPs and some of them might be unstable. You need to test to find a good one.  \n\n??? question \"It worked when I set a proxy IP, but now it's not working!\"\n    If you use a single IP, it may stop working after some time and many sites won’t open. You need to redo the steps. Preferably, if you're not doing anything that needs a static IP, just use the panel default and don't use a single proxy IP.  \n\n??? question \"Why do I get an error when I go to the `panel/` address?\"\n    Follow the installation guide or use **Wizard**; KV, UUID or Trojan password are not properly configured.  \n\n??? question \"I deployed it but Cloudflare returns error 1101!\"\n    Your Cloudflare account has likely been flagged. Create a new Cloudflare account with an official email like Gmail and. Also, make sure the project name doesn't include the word \"bpb\".  \n    It is recommended to use **Wizard** for installation.  \n\n??? question \"Can I use this for trading?\"\n    If your Cloudflare IP is located in Germany (which it usually is), using a single Germany proxy IP should be fine. But preferably use the Chain Proxy method to stabilize the IP.  \n\n??? question \"Why I can't see non-TLS ports in panel?\"\n    To use non-TLS configs, you must deploy via Workers method and without a custom domain.  \n\n??? question \"Why doesn’t the Best Fragment config connect or work properly?\"\n    Turn off `Prefer IPv6` in settings.  \n\n??? question \"Why don't Telegram calls or Clubhouse work?\"\n    Cloudflare can't properly handle the UDP traffic. There is currently no effective solution. Use Warp configs instead.  \n\n??? question \"Why won't ChatGPT open?\"\n    Because the panel's default proxy IPs are public and many might appear suspicious to ChatGPT. Set a single clean Proxy IP regarding instructions or enable the `Bypass ChatGPT` option in the routing section of the panel.  \n\n??? question \"I forgot the panel password. What should I do?\"\n    Go to your Cloudflare dashboard, find the KV created for Worker or Pages, click view, go to the KV Pairs section. In the table, you’ll see a `pwd` key — the value next to it is your password.  \n\n??? question \"What happens if I don’t change the UUID and Trojan password?\"\n    From version 2.7.7 onward, setting these two parameters is mandatory and the panel won’t run without them.  \n\n??? question \"I used the Pages upload method but I get a 404.\"\n    Cloudflare takes about 4–5 minutes to register Pages domains. Give it time, refresh, and it should work.  \n\n??? question \"Why doesn’t the panel show the Block Ads checkbox?\"\n    Extensions like `uBlock`, `AdGuard` or even some browsers with built-in ad-block settings, can hide it. Disable them for the panel.\n\n??? question \"Why wizard is detected as Virus in windows?\"\n    The wizard app lacks `Code signing certificate` and has to download worker.js on you PC, customize it and deploy to Cloudflare which is a suspicious behaviour to Anti Viruses, known as Trojan/Downloader. So you have to temporarily disable Windows defender or any other Anti Virus program.\n\n??? question \"Why v2rayN cannot ping test configs?\"\n    Right now v2rayN is experiencing some issues with custom configs and BPB panel configs are all custom. No worries, just enable config and use it. You also have Best Ping config in all subscriptions which connects to best IP automatically, so you don't need to test all configs everytime.\n\n??? question \"Why sing-box throws error while importing subscription?\"\n    BPB only supports sing-box 1.12.0 or higher\n"
  },
  {
    "path": "docs/en/docs/index.md",
    "content": "# BPB Panel\n\n![Pages Application](images/panel-overview.jpg)\n\n## Introduction\n\nThis project is aimed to provide a user panel to access FREE, SECURE and PRIVATE **VLESS**, **Trojan** and **Warp** configs, It ensures connectivity even when domains or Warp services are blocked by ISPs, offering two deployment options:\n\n- **Workers** deployment\n- **Pages** deployment\n\n🌟 If you found **BPB Panel** valuable, Your donations make all the difference 🌟\n\n```title=\"USDT (BEP20)\"\n0xbdf15d41C56f861f25b2b11C835bd45dfD5b792F\n```\n\n## Features\n\n1. **Free and Private**: No costs involved and the server is private.\n2. **Intuitive Panel:** Streamlined for effortless navigation, configuration and use.\n3. **Versatile Protocols:** Provides VLESS, Trojan and Wireguard (Warp) protocols.\n4. **Private DoH:** A ready to use DoH server, capable of customizing underlying DNS server.\n5. **Warp Pro configs:** Optimized Warp for crucial circumstances.\n6. **Fragment support:** Supports Fragment functionality for crucial network situations.\n7. **Comprehensive Routing Rules:** Bypassing Iran/China/Russia, Blocking QUIC, Porn, Ads, Malwares, Phishing and also bypassing sanctions.\n8. **Chain Proxy:** Capable of adding a chain proxy (VLESS, Trojan, Shadowsocks, socks and http) to fix IP.\n9. **Broad client compatibility:** Offers subscription links for Xray, Sing-box and Clash-Mihomo core clients.\n10. **Password-protected panel:** Provides secure and private panel with password protection.\n11. **Fully customizable:** Supports setting up clean IP-domains, Proxy IPs, DNS servers, choosing ports and protocols, Warp endpoints and more.\n\n## Limitations\n\n1. **UDP transport**: VLESS and Trojan protocols on workers do not handle **UDP** properly, so it is disabled by default (affecting features like Telegram video calls), UDP DNS is also unsupported. DoH is enabled by default for enhanced security.\n2. **Request limit**: each worker supports 100K requests per day for VLESS and Trojan, suitable for 2-3 users. You can use limitless Warp configs.\n\n## Getting started\n\n- [Installation methods](installation/wizard.md)\n- [Configuration](configuration/index.md)\n- [How to use](usage/index.md)\n- [FAQ](faq.md)\n\n## Supported Clients\n\n|       Client        |      Version      | Fragment support | Warp Pro support |\n| :-----------------: | :---------------: | :--------------: | :--------------: |\n|     **v2rayNG**     | 1.10.26 or higher | :material-check: | :material-check: |\n|     **MahsaNG**     |   14 or higher    | :material-check: | :material-check: |\n|     **v2rayN**      | 7.15.4 or higher  | :material-check: | :material-check: |\n|   **v2rayN-PRO**    |   1.9 or higher   | :material-check: | :material-check: |\n|    **Sing-box**     | 1.12.0 or higher  | :material-check: | :material-close: |\n|    **Streisand**    | 1.6.64 or higher  | :material-check: | :material-check: |\n|   **Clash Meta**    |                   | :material-close: | :material-check: |\n| **Clash Verge Rev** |                   | :material-close: | :material-check: |\n|     **FLClash**     |                   | :material-close: | :material-check: |\n|   **AmneziaVPN**    |                   | :material-close: | :material-check: |\n|    **WG Tunnel**    |                   | :material-close: | :material-check: |\n\n## Environment variables\n\n|   Variable   |               Usage                |     Mandatory      |\n| :----------: | :--------------------------------: | :----------------: |\n|   **UUID**   |             VLESS UUID             | :heavy_check_mark: |\n| **TR_PASS**  |          Trojan Password           | :heavy_check_mark: |\n| **PROXY_IP** | Proxy IP or domain (VLESS, Trojan) |        :x:         |\n|  **PREFIX**  |   NAT64 Prefixes (VLESS, Trojan)   |        :x:         |\n| **SUB_PATH** |         Subscriptions' URI         |        :x:         |\n| **FALLBACK** |  Fallback domain (VLESS, Trojan)   |        :x:         |\n| **DOH_URL**  |              Core DOH              |        :x:         |\n\n---\n\n## Stargazers Over Time\n\n[![Stargazers Over Time](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel.svg?variant=adaptive)](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel)\n"
  },
  {
    "path": "docs/en/docs/installation/pages-manual.md",
    "content": "# :material-new-box:{ .md .middle } Pages manual installation (Direct Upload)\n\nIt is highly recommended to use [Wizard installation](./wizard.md) to avoid Cloudflare 1101 error, user errors and also save time to setup panel.\n\n## Steps\n\n### 1. Create Cloudflare Account\n\nIf you don’t have a Cloudflare account, create one [from here](https://dash.cloudflare.com/sign-up). You only need an email for registration. Due to Cloudflare’s restrictions, use a reputable email provider like Gmail.\n\n### 2. Create Pages Project\n\nDownload the Worker zip file [from here](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip).\n\nIn your Cloudflare account, navigate to the `Developer Platform` section, click `Create application`, select `Pages` tab and then `Use direct upload` > `Get started`.\n\nEnter a `Project Name`, which will form your panel’s domain.\n\n!!! danger\n    Choose a name that does not include the word `bpb`, as this may trigger Cloudflare’s detection and result in a `1101` error.\n\nClick `Create Project` and then Upload the downloaded zip file by clicking `Select from computer`, selecting `Upload zip`.\n\nNow click `Deploy site` and then `Continue to project`.\n\nYour project is created but not yet functional. From the `Deployment` page, in the `Production` section, click `Visit`.\n\n!!! warning\n    Cloudflare may take up to 5 minutes to set up the Pages domain. Don’t worry if the URL isn’t immediately accessible.\n\nYou’ll encounter an error indicating that the UUID and Trojan Password must be set. A link will be provided; open it in your browser and save it for the next step.\n\n![Pages Application](../images/generate-secrets.jpg)\n\n### 3. Create KV\n\nFrom the left menu, go to `Storage and Databases` > `KV`:\n\n![Pages Application](../images/nav-dash-kv.jpg)\n\nClick `Create`, assign a desired name, and click `Add`.\n\nReturn to the `Workers & Pages` section and open your Pages project. Go to the `Binding` section, as shown below:\n\n![Pages Application](../images/settings-functions.jpg)\n\nIn the `Bindings` section, click `Add` and select `KV Namespace`. Set the `Variable name` to `kv` (exactly as shown) and select the KV created earlier for `KV namespace`. Click `Save`.\n\n![Pages Application](../images/pages-bind-kv.jpg)\n\nThe KV setup is now complete.\n\n### 4. Set UUID, Trojan password and Subscription path\n\nClick `Copy all` from the `Secrets generator` page provided earlier, In Cloudflare dashboard go to `Settings` section, locate the `Variables and Secrets` section. Click `Add` and paste into the `Variable name` field and click `Save`. This will automatically add these 3 parameters to panel.\n\nClick `Create deployment` at the top of the page and upload the same zip file again, as done previously.\n\nReturn to the `Deployments` page, click `Visit` in the `Production` section, append `panel/` to the URL, and access the panel.\n\nAdditional configuration and tips are available in the [main guide](../configuration/index.md). The installation is complete, and the following advanced settings are optional.\n\n## Advanced configuration (Optional)\n\n### Fixing the Proxy IP\n\nBy default, the code uses multiple Proxy IPs randomly, assigning a new random IP for each connection to Cloudflare addresses (covering much of the web). This IP rotation may cause issues, particularly for traders. From version 2.3.5 onward, you can change the Proxy IP via the panel and update the subscription. However, the method below is recommended:\n\n!!! note\n    Changing the Proxy IP via the panel requires updating the subscription if the IP stops working, which can disrupt donated configurations, as users without an active subscription cannot update them. Use this method only for personal use. Other methods don’t require subscription updates.\n\nIn the project’s `Settings` section, open `Variables and Secrets`:\n\n![Pages Application](../images/pages-env-vars.jpg)\n\nClick `Add` and enter `PROXY_IP` (in capital letters) in the first box.\nYou can check available Proxy IPs by clicking the icon beside `Proxy IPs / Domains` field in the panel or visiting `/proxy-ip` in browser, which lists IPs by region and ISP.\n\n![Pages Application](../images/proxy-ips.jpg)\n\n!!! info\n    To use multiple Proxy IPs, fill them comma-separated.\n    ```title=\"Example\"\n    151.213.181.145, 5.163.51.41, bpb.yousef.isegaro.com\n    ```\n\nEnter the IPs in the `Value` field and click `Save`. Click `Create deployment` at the top of the page and upload the zip file again. The changes will take effect.\n\n### Fixing the NAT64 Prefixes\n\nBy default, the code uses multiple NAT64 prefixes randomly, assigning a new random prefix for each connection to Cloudflare addresses (covering much of the web). This IP rotation may cause issues, particularly for traders. From version 3.4.2 onward, you can change the prefixes via the panel and update the subscription. However, the method below is recommended:\n\n!!! note\n    Changing the NAT64 prefixes via the panel requires updating the subscription if the IP stops working, which can disrupt donated configurations, as users without an active subscription cannot update them. Use this method only for personal use. Other methods don’t require subscription updates.\n\nIn the project’s `Settings` section, open `Variables and Secrets`, click `Add` and enter `NAT64_PREFIX` (in capital letters) in the first box. Obtain IPs from the following link, which lists IPs from various regions and ISPs:\n\n```text\nhttps://github.com/bia-pain-bache/BPB-Worker-Panel/blob/main/NAT64Prefixes.md\n```\n\n!!! info\n    To use multiple IPs, fill them comma-separated.\n    ```title=\"Example\"\n    [2602:fc59:b0:64::], [2602:fc59:11:64::]\n    ```\n\nEnter the IPs in the `Value` field and click `Save`. Click `Create deployment` at the top of the page and upload the zip file again. The changes will take effect.\n\n### Setting Fallback Domain\n\nBy default, accessing the main Pages domain redirects to the Cloudflare speed test site. To change this, follow the same steps as for the Proxy IP, but set the variable name to `FALLBACK` and provide a domain (without `https://` or `http://`) as the value, e.g., `www.speedtest.net` or `npmjs.org`.\n\n### Changing the Subscription Path\n\nThe default subscription link path uses the same UUID as VLESS. For increased privacy, you can change this. Follow the same steps as above, but set the variable name to `SUB_PATH`. The secrets page or Secrets generator provides a `Random Subscription URI path` value, which you can use or replace with a custom value (using allowed characters).\n\n### Adding Custom Domain\n\nIn your Cloudflare dashboard, navigate to `Compute (Workers)` > `Workers & Pages` and select your panel. In the `Custom domains` tab, click `Set up a custom domain`. Enter a domain (you must own and have activated it on the same account). For example, if you own `bpb.com`, you can use the domain itself or a subdomain like `xyz.bpb.com`. Click `Continue` and then `Activate domain`.\n\nIn your domain zone, add a CNAME DNS Record for `xyz.bpb.com` pointing to your Pages domain. Cloudflare will connect the Pages to your domain after a short period. You can then access your panel via `https://xyz.bpb.com/panel` and retrieve new subscriptions.\n\n## Updating the Panel\n\nTo update your panel, download the new zip file [from here](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip). In your Cloudflare account, go to `Compute (Workers)` > `Workers & Pages`, select your Pages project, click `Create deployment`, and upload the new zip file.\n"
  },
  {
    "path": "docs/en/docs/installation/wizard.md",
    "content": "# :material-new-box:{ .md .middle } Workers and Pages installation - Wizard\n\nTo simplify the setup process and prevent user mistakes during creation, the [BPB Wizard](https://github.com/bia-pain-bache/BPB-Wizard) project was launched. It supports both Workers and Pages methods and is highly recommended to use.\n\n![Pages Application](../images/wizard.jpg)\n\n## 1. Cloudflare account\n\nTo use this method, all you need is a Cloudflare account. You can [sign up here](https://dash.cloudflare.com/sign-up/), and don’t forget to check your email afterward to verify your account.\n\n## 2. Install BPB Panel\n\n!!! warning\n    If you're connected to a VPN, disconnect it.\n\n### Windows - Linux - macOS\n\nBased on your operating system, [download the ZIP file](https://github.com/bia-pain-bache/BPB-Wizard/releases/latest), unzip it, and run the program.\n\n### Android\n\nAndroid users who have Termux installed on their phone can install the BPB Panel by just copying this code into Termux:\n\n```bash title=\"Termux - Linux\"\nbash <(curl -fsSL https://raw.githubusercontent.com/bia-pain-bache/BPB-Wizard/main/install.sh)\n```\n\n!!! warning  \n    Be sure to download and install Termux only from its [official source](https://github.com/termux/termux-app/releases/latest). Installing via Google Play might cause issues.\n\nThe first question asks whether you want to create a new panel or modify existing panels in the account.\n\nThen logs into your Cloudflare account, Asks for your permission, returns to the terminal and asks you a series of questions.\n\nIf you choose option 1, it will ask a series of configuration questions. You can use the default values or input your own. In the end, it opens the panel for you in your browser — that’s it.\n\n!!! note\n    For each setting it asks about, it has already generated a secure, personal value for you. You can simply press Enter to accept it and move on to the next question, or input your own values.\n\nIf you choose option 2, it lists deployed Workers and Pages projects and you can choose which one to modify.\n\n## Updating Panel\n\nJust run wizard and select option 2 for the first question. It will show you a list of project names in your account — you can choose any to update or delete.\n"
  },
  {
    "path": "docs/en/docs/installation/workers-manual.md",
    "content": "# :material-new-box:{ .md .middle } Workers manual installation\n\nIt is highly recommended to use [Wizard installation](./wizard.md) to avoid Cloudflare 1101 error, user errors and also save time to setup panel.\n\n## Installation\n\n### 1. Create Cloudflare Account\n\nIf you don’t have a Cloudflare account, create one [from here](https://dash.cloudflare.com/sign-up). You only need an email for registration. Due to Cloudflare’s restrictions, use a reputable email provider like Gmail.\n\n### 2. Create worker\n\nFirst, download the Worker code from [from here](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.js).\n\nIn your Cloudflare account, navigate to the `Developer Platform` tab and click `Create application`, from `Workers` tab find `Start with Hello World!` and `Get started`.\n\nEnter a desired name, which will form your panel’s domain and `Deploy`.\n\n!!! danger\n    Choose a name that does not include the word `bpb`, as this may trigger Cloudflare’s detection and result in a `1101` error.\n\nThen click `Edit code` here. In the left sidebar, delete the `worker.js` file and upload the new one. If it gives an error, delete the `package-lock.json` file too. Since the code has become large, copying and pasting on mobile is difficult — refer to the image below and upload it properly. On mobile, open the side menu, long-press the Explorer, and click `Upload...`.\n\n![Mobile upload](../images/worker-mobile-upload.jpg)\n\nFinally, `Deploy` the Worker.\n\n!!! tip\n    Note that the panel update process is exactly the same — you delete the old files, upload the new ones, and deploy. Previous settings remain safe, only the panel gets updated.\n\nFirst, at the top of the dashboard, click `Visit`. You’ll see an error saying you need to set the UUID and Trojan Password first. It includes a link (Secrets generator) — open it in your browser and keep it open for the next step.\n\n![Generate secrets](../images/generate-secrets.jpg)\n\n### 3. Create KV\n\nReturn to the Worker dashboard and follow these steps:\n\n![Workers dashboard](../images/nav-worker-dash.jpg)\n\nFrom here, go to the `KV` page:\n\n![KV dashboard](../images/nav-dash-kv.jpg)\n\nIn the KV section, click `Create`, give it a name (e.g., Test), and click `Add`.\n\nAgain, go to the `Developer Platform` section, open the Worker you just created, go to `Bindings`. Click `Add binding` and choose `KV Namespace`. From the dropdown, select the KV you just created (e.g., Test). What’s important is the first field — it **must** be set to `kv`. Then click `Deploy`.\n\n![Bind KV](../images/workers-bind-kv.jpg)\n\n### 4. Set UUID, Trojan password and Subscription path\n\nClick `Copy all` from the `Secrets generator` page provided earlier, In Cloudflare dashboard go to `Settings` section, locate the `Variables and Secrets` section. Click `Add` and paste into the `Variable name` field and click `Deploy`. This will automatically add these 3 parameters to panel.\n\nAgain click `Visit` in your worker dashboard, you see speedtest in browser, just add `/panel` to the end of address and see your panel:\n\nIt will ask you to set a new password and log in — that’s it.  \nInstallation is complete; the rest of the information below may not be needed by everyone.  \nFor settings tutorials and tips, refer to the [main guide](../configuration/index.md).\n\n## Advanced configuration (Optional)\n\n### Fixing the Proxy IP\n\nBy default, the code uses multiple Proxy IPs randomly, assigning a new random IP for each connection to Cloudflare addresses (covering much of the web). This IP rotation may cause issues, particularly for traders. From version 2.3.5 onward, you can change the Proxy IP via the panel and update the subscription. However, the method below is recommended:\n\n!!! note\n    Changing the Proxy IP via the panel requires updating the subscription if the IP stops working, which can disrupt donated configurations, as users without an active subscription cannot update them. Use this method only for personal use. Other methods don’t require subscription updates.\n\nTo change the Proxy IP, go to `Workers & Pages`, open your Worker, then go to `Settings` → `Variables and Secrets`:\n\n![Workers env variable](../images/workers-variables.jpg)\n\nClick `Add`, write `PROXY_IP` (uppercase) as the `Variable name`.\nYou can check available Proxy IPs by clicking the icon beside `Proxy IPs / Domains` field in the panel or visiting `/proxy-ip` in browser, which lists IPs by region and ISP.\n\n![Proxy IPs](../images/proxy-ips.jpg)\n\n!!! info\n    To use multiple Proxy IPs, enter them comma-separated.\n    ```title=\"Example\"\n    151.213.181.145, 5.163.51.41, bpb.yousef.isegaro.com\n    ```\n\nEnter the IPs in the `Value` field and click `Deploy`.\n\n### Fixing the NAT64 Prefixes\n\nBy default, the code uses multiple NAT64 prefixes randomly, assigning a new random prefix for each connection to Cloudflare addresses (covering much of the web). This IP rotation may cause issues, particularly for traders. From version 3.4.2 onward, you can change the prefixes via the panel and update the subscription. However, the method below is recommended:\n\n!!! note\n    Changing the NAT64 prefixes via the panel requires updating the subscription if the IP stops working, which can disrupt donated configurations, as users without an active subscription cannot update them. Use this method only for personal use. Other methods don’t require subscription updates.\n\nIn the project’s `Settings` section, open `Variables and Secrets`, click `Add` and enter `NAT64_PREFIX` (in capital letters) in the first box. Obtain IPs from the following link, which lists IPs from various regions and ISPs:\n\n```text\nhttps://github.com/bia-pain-bache/BPB-Worker-Panel/blob/main/NAT64Prefixes.md\n```\n\n!!! info\n    To use multiple IPs, fill them comma-separated.\n    ```title=\"Example\"\n    [2602:fc59:b0:64::], [2602:fc59:11:64::]\n    ```\n\nEnter the IPs in the `Value` field and click `Deploy`.\n\n### Setting Fallback Domain\n\nBy default, accessing the main Worker domain redirects to the Cloudflare speed test site. To change this, follow the same steps as for the Proxy IP, but set the variable name to `FALLBACK` and provide a domain (without `https://` or `http://`) as the value, e.g., `www.speedtest.net` or `npmjs.org`.  \n\n### Changing the Subscription Path\n\nThe default subscription link path uses the same UUID as VLESS. For increased privacy, you can change this. Follow the same steps as above, but set the variable name to `SUB_PATH`. The Secrets generator at `/secrets` provides a `Random Subscription URI path` value, which you can use or replace with a custom value (using allowed characters).\n\n### Adding Custom Domain\n\nGo to your Cloudflare dashboard, open your Worker from `Compute (Workers)` > `Workers & Pages`. Go to `Settings` and at the top, you’ll see `Domains & Routes`. Click `Add +`, then choose `Custom domain`.\n\nEnter a domain (you must own and have activated it on the same account).\n  \nSuppose your domain is `bpb.com`. You can enter the main domain or a subdomain, like `xyz.bpb.com`, then click `Add domain`.\n\nCloudflare will connect the Worker to your domain (this might take a while — they say up to 24 hours).\n\nThen click `Add +` again, but this time select `Route`. Choose your domain from the `Zone` section, and in the `Route` section, enter it like this:\n\n```title=\"Route\"\n*bpb.com/*\n```\n\nYou can then access your panel via `https://xyz.bpb.com/panel` and retrieve new subscriptions.\n\n!!! tip\n    - If you connect a domain to the Worker, your traffic becomes probably unlimited.\n    - Worker panels support non-TLS ports like 80, 8080, etc. But once you add a custom domain, those ports stop working and won’t be available in the panel.\n\n## Updating the Panel\n\nTo update your panel, download the new worker.js file [from here](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.js). In your Cloudflare account, go to `Compute (Workers)` > `Workers & Pages`, select your Worker project, edit it, delete old worker, upload new one and Deploy.\n"
  },
  {
    "path": "docs/en/docs/usage/doh.md",
    "content": "# :material-playlist-check:{ .md .middle } DNS over HTTPS (DoH)\n\nAs most of famous public DoH servers are blocked by firewalls, we can use domain fronting to successfully use them. BPB DoH only supports RFC 8484 standard DoH servers which typically are in `https://domain/dns-query` format. For example Google has two types of DoH `https://dns.google/dns-query` which is RFC 8484 and `https://dns.google/resolve` which is JSON API. BPB only supports the first type.\n\nTo change underlying DoH you can set an environment variable named `DOH_URL` in worker settings and set your desired DoH.\n\n!!! warning\n    Avoid using BPB DoH for `remote DNS`, otherwise you will waste your worker requests. It's better be use in browsers or DoH based clients like Intra, Rethink...\n"
  },
  {
    "path": "docs/en/docs/usage/fragment.md",
    "content": "# :material-playlist-check:{ .md .middle } Fragment subscription\n\n![Fragment subscription](../images/fragment-sub.jpg)\n\n!!! tip \"**Benefits of Fragment configs**\"\n    - Maintains connectivity even if the Custom Domain or Worker domain is blocked by the ISP.\n    - Enhances stability and speed across all ISPs, particularly those experiencing disruptions with Cloudflare.\n\n## Fragment for Xray\n\nThis applies to clients using the Xray core, such as v2rayNG, MansaNG, and v2rayN PRO. Imported configs are marked with an `F` flag in their names. This subscription provides the same number of configs as the **Normal** subscription, enhanced with fragment settings adjustable in the panel, plus **Best Fragment** and **Workerless** configs. Any panel setting changes are applied to all configs upon subscription update.\n\n???+ question \"What is the Workerless config?\"\n    The Workerless config unblocks many restricted websites and applications (e.g., YouTube, Twitter, Google Play...) without using a Worker. Note that this config does not change your local IP, so avoid using it for activities requiring security or anonymity. Fragment setting changes apply to this config, except for Chain Proxy.\n\n???+ question \"What is the Best Fragment config?\"\n    The Best Fragment config tests 18 different fragment settings, selecting the fastest based on your ISP’s performance. These modes are designed to cover all primary scenarios, with the config testing all modes every 30s and connecting to the optimal one. Advanced fragment settings are [explained here](../configuration/fragment.md).\n\n## Fragment for sing-box\n\nStarting from version 1.12.0 sing-box core and related clients support fragment, you can use this sub by official sing-box client like husi or v2rayN which has sing-box core embeded.\n"
  },
  {
    "path": "docs/en/docs/usage/index.md",
    "content": "# :material-lan-connect:{ .md .middle } How to use\n\nFirst, update your client to the latest version or refer to the table below. These are the tested and verified clients officially supported by the BPB project. You may use other clients at your own risk.\n\n|       Client        |      Version      | Fragment support | Warp Pro support |\n| :-----------------: | :---------------: | :--------------: | :--------------: |\n|     **v2rayNG**     | 1.10.11 or higher | :material-check: | :material-check: |\n|     **MahsaNG**     |   14 or higher    | :material-check: | :material-check: |\n|     **v2rayN**      | 7.14.6 or higher  | :material-check: | :material-check: |\n|   **v2rayN-PRO**    |   1.9 or higher   | :material-check: | :material-check: |\n|    **Sing-box**     | 1.12.0 or higher  | :material-check: | :material-close: |\n|    **Streisand**    | 1.6.60 or higher  | :material-check: | :material-check: |\n|   **Clash Meta**    |                   | :material-close: | :material-check: |\n| **Clash Verge Rev** |                   | :material-close: | :material-check: |\n|     **FLClash**     |                   | :material-close: | :material-check: |\n|   **AmneziaVPN**    |                   | :material-close: | :material-check: |\n|    **WG Tunnel**    |                   | :material-close: | :material-check: |\n\n**Warp** and **Warp Pro** subscriptions which provide **WireGuard** configs, need scanning some endpoints first. You can refer to [this guide](../configuration/warp.md) to learn how to scan some endpoints.\n\n<div class=\"grid cards\" markdown>\n\n- :material-playlist-check:{ .lg .middle } **Normal**\n\n    ---\n\n    Connect to **VLESS** and **Trojan** configs with fully bundled configurations, no need to configure manually.\n\n    [:octicons-arrow-right-24: Getting started](normal.md)\n\n- :material-playlist-check:{ .lg .middle } **Fragment**\n\n    ---\n\n    Connect even if your domain is blocked with fully bundled configurations.\n\n    [:octicons-arrow-right-24: Getting started](fragment.md)\n\n- :material-playlist-check:{ .lg .middle } **Raw**\n\n    ---\n\n    Connect to Raw **VLESS** and **Trojan** configs which don't include panel settings.\n\n    [:octicons-arrow-right-24: Getting started](raw.md)\n\n- :material-playlist-check:{ .lg .middle } **Warp**\n\n    ---\n\n    Connect to Cloudflare Warp servers after scanning some endpoints.\n\n    [:octicons-arrow-right-24: Getting started](warp.md)\n\n- :material-playlist-check:{ .lg .middle } **Warp Pro**\n\n    ---\n\n    Connect to Cloudflare Warp even if Warp is blocked in your region.\n\n    [:octicons-arrow-right-24: Getting started](warp-pro.md)\n\n- :material-playlist-check:{ .lg .middle } **DNS over HTTPS**\n\n    ---\n\n    Set DoH in your browser or use in DNS based clients like Intra.\n\n    [:octicons-arrow-right-24: Getting started](doh.md)\n\n</div>\n"
  },
  {
    "path": "docs/en/docs/usage/my-ip.md",
    "content": "# :material-fingerprint:{ .md .middle } My IP\n\n![My IP](../images/my-ip.jpg)\n\nAfter connecting to the proxy, refresh this section and check it to view your IPs. The table displays two rows:\n\n- The first row shows your node IP for Cloudflare target addresses. If a Proxy IP is set, this will be your IP for Cloudflare addresses, while other target addresses use a random Cloudflare IP. This allows you to verify if the Proxy IP is functioning.\n- If using Warp configs, both rows should display the same IP.\n\n!!! warning\n    Disable extensions like `uBlock` or `AdGuard`, Otherwise this section won't work properly.\n"
  },
  {
    "path": "docs/en/docs/usage/normal.md",
    "content": "# :material-playlist-check:{ .md .middle } Normal subscription\n\n![Normal subscription](../images/normal-sub.jpg)\n\nThis subscription applies all optimal VLESS and Trojan settings, DNS servers, routing rules etc., minimizing user errors. It also includes a **Best Ping** config.\n\n???+ question \"What is the **Best Ping** config?\"\n    This config aggregates all panel configs and checks every 30 seconds to identify and connect to the fastest one. If you’ve added Clean IPs, enabled the Trojan protocol, or selected additional ports, these are included in the **Best Ping** config too. This feature is also available in Fragment and Warp subscriptions.\n\nWith routing settings applied, this subscription blocks approximately 90% of Iranian and foreign ads, bypasses Iranian, Chinese, and Russian websites (eliminating the need to disable the VPN for payment gateways), bypasses LAN, blocks porn and QUIC protocol, and for Sing-box and Clash subscriptions, effectively blocks phishing and malware content.\n"
  },
  {
    "path": "docs/en/docs/usage/raw.md",
    "content": "# :material-playlist-check:{ .md .middle } Raw subscription\n\n![Raw subscription](../images/raw-sub.jpg)\n\nThe **Normal** subscription is strongly recommended over this subscription, as it automatically applies all panel settings without requiring manual configuration. Note that almost all of panel settings are not applied to this subscription and must be configured manually in the client.\n\n!!! warning\n    Raw configs consume more Worker requests compared to `Normal` configs and have more worker errors.\n\n!!! warning\n    You must set the remote DNS to a DoH, DoT, or TCP DNS server in your client, otherwise, this subscription’s configs will not work. Examples:\n    ```title=\"DoH\"\n    https://8.8.8.8/dns-query\n    ```\n    ```title=\"DoT\"\n    tls://8.8.8.8  \n    ```\n    ```title=\"TCP\"\n    tcp://8.8.8.8  \n    ```\n"
  },
  {
    "path": "docs/en/docs/usage/warp-pro.md",
    "content": "# :material-playlist-check:{ .md .middle } Warp Pro subscription\n\n![Warp Pro subscription](../images/warp-pro-sub.jpg)\n\nRecent advancements by the GFW-Knocker on Xray, Xray itself and Mihomo cores have enabled Warp unblocking, resulting in applications like **MahsaNG** and **v2rayN-PRO**. These developments optimize Warp connections for specific conditions in Iran, similar to efforts by the **Oblivion** team. The **Warp Pro** subscription has been added to the panel, with customizable settings.\n\nOptimal values for each ISP are determined experimentally and may vary over time, like fragment settings. The default values are tested and currently effective; you only need to scan and set clean Endpoints.\n\nYou can download Warp Pro configs as a zip file for use in the **WG Tunnel** client. In the client, click `+` and import the zip file; no additional settings are required for the configs to connect. For **Amnezia**, the process is similar, but Amnezia does not import zip files correctly. Extract the zip file first, then import each desired config into Amnezia and connect.\n"
  },
  {
    "path": "docs/en/docs/usage/warp.md",
    "content": "# :material-playlist-check:{ .md .middle } Warp subscriptions\n\n![Warp subscriptions](../images/warp-sub.jpg)\n\nThis subscription includes:\n\n- A **Warp** config, with node IPs from your region’s Cloudflare IPs.\n- A **Warp on Warp (WoW)** config, with node IPs from foreign Cloudflare IPs (primarily Germany).\n- A **Warp Best Ping** config, connecting to the fastest Warp config.\n- A **WoW Best Ping** config, connecting to the fastest WoW config.\n\nBy default, there is one Warp and one WoW config. Editing the `Endpoints` in the `Warp General` settings adds additional Warp and WoW configs based on the specified Endpoints.\n\nYou can download Warp WireGuard configs as a zip file to import into WireGuard clients. Note that most ISPs normally block Warp, so use this only if your ISP permits WireGuard protocol.\n\nFor optimal performance, use a scanner to identify Endpoints suitable for your ISP. The scanner script is available in the panel; copy and run it in Termux on Android or Linux terminal. The Normal Warp subscription may perform well on some operators like MTN-Irancell, but for others, use the **Warp Pro** subscription.\n"
  },
  {
    "path": "docs/en/mkdocs.yml",
    "content": "site_name: BPB Panel\nsite_url: https://bia-pain-bache.github.io\nrepo_url: https://github.com/bia-pain-bache/BPB-Worker-Panel\ncopyright: Copyright &copy; BPB\n\nuse_directory_urls: true\nsite_dir: ../../site\nextra_css:\n  - stylesheet/extra.css\nextra_javascript:\n  - scripts/lang-switch.js\n\ntheme:\n  name: material\n  custom_dir: ../assets\n  logo: favicon.ico\n  favicon: favicon.ico\n  direction: ltr\n  language: en\n  font:\n    text: Vazirmatn\n  palette:\n    - media: \"(prefers-color-scheme)\"\n      toggle:\n        icon: material/brightness-auto\n        name: Switch to light mode\n    - media: \"(prefers-color-scheme: light)\"\n      scheme: default \n      toggle:\n        icon: material/brightness-7\n        name: Switch to dark mode\n    - media: \"(prefers-color-scheme: dark)\"\n      scheme: slate\n      toggle:\n        icon: material/brightness-4\n        name: Switch to system preference\n  features:\n    - navigation.tabs\n    - navigation.tabs.sticky\n    - navigation.sections\n    - navigation.instant\n    - navigation.indexes\n    - navigation.top\n    - content.code.copy\n    - toc.integrate\n    - navigation.tracking\n\nmarkdown_extensions:\n  - admonition\n  - pymdownx.details\n  - pymdownx.superfences\n  - pymdownx.highlight:\n      anchor_linenums: true\n      line_spans: __span\n      pygments_lang_class: true\n  - pymdownx.inlinehilite\n  - pymdownx.snippets\n  - attr_list\n  - pymdownx.emoji:\n      emoji_index: !!python/name:material.extensions.emoji.twemoji\n      emoji_generator: !!python/name:material.extensions.emoji.to_svg\n  - md_in_html\n\nextra:\n  alternate:\n    - name: فارسی\n      lang: fa\n      link: /BPB-Worker-Panel/fa/\n  social:\n    - icon: fontawesome/brands/github\n      link: https://github.com/bia-pain-bache/BPB-Worker-Panel\n      name: Source code\n\nplugins:\n  - search\n\nnav:\n  - Home: index.md\n  - Installation:\n    - Wizard: installation/wizard.md\n    - Manual - Pages: installation/pages-manual.md\n    - Manual - Workers: installation/workers-manual.md\n  - Configuration:\n    - configuration/index.md\n    - Common: configuration/common.md\n    - VLESS - Trojan: configuration/vless-trojan.md \n    - Fragment: configuration/fragment.md\n    - Warp General: configuration/warp.md\n    - Warp PRO: configuration/warp-pro.md\n    - Routing rules: configuration/routing-rules.md\n  - Usage:\n    - usage/index.md\n    - Normal: usage/normal.md\n    - Fragment: usage/fragment.md\n    - Raw: usage/raw.md\n    - Warp: usage/warp.md\n    - Warp PRO: usage/warp-pro.md\n    - DoH: usage/doh.md\n    - My IP: usage/my-ip.md\n  - FAQ: faq.md"
  },
  {
    "path": "docs/fa/docs/configuration/common.md",
    "content": "# :material-cog-outline:{ .md .middle } تنظیمات مشترک یا Common\n\n![Common settings](../images/common-settings.jpg)\n\nاین بخش شامل تنظیماتی میشه که بین همه پروتکل‌ها و لینک‌های اشتراک ثابت هستن.\n\n## Local DNS\n\nاین DNS بیشتر برای مقاصد مسیریابی استفاده میشه و به‌صورت پیش‌فرض، سرور Local DNS از Google DNS استفاده می‌کنه.\n\nسرورهای DNS زیادی به‌صورت IP برای Local DNS در دسترسن، ولی می‌تونید از **localhost** استفاده کنید که از سرور DNS اپراتورتون استفاده می‌کنه و برای مسیریابی مناسبه.\n\n## DNS ضد تحریم\n\nاین سرور DNS برای [قوانین مسیریابی تحریم‌ها](./routing-rules.md) استفاده می‌شه. سرور DNS پیش‌فرض [Shecan](https://shecan.ir/) هست. قبل از تنظیم قوانین مسیریابی، باید بررسی کنید که آیا این DNS از دامنه‌های مورد نظر شما پشتیبانی می‌کنه یا نه.\n\n!!! info \"راهنمایی\"\n    سرور DNS می‌تونه به شکل IP (UDP DNS)، TCP DNS، DOT یا DoH باشه.\n\n## Fake DNS\n\nمی‌تونید Fake DNS رو فعال کنید تا تأخیر DNS کمتر بشه، ولی با احتیاط — ممکنه با بعضی برنامه‌ها سازگار نباشه یا با DNS سیستم تداخل ایجاد کنه. اگه از کارکردش مطمئن نیستید، فعالش نکنید.\n\n## فعال‌سازی IPv6\n\nپنل به‌صورت پیش‌فرض برای پروتکل‌های VLESS و Trojan کانفیگ‌های IPv6 ارائه می‌ده. اگه اپراتورتون از IPv6 پشتیبانی نمی‌کنه، غیرفعالش کنید تا تعداد کانفیگ‌ها کم بشه و همچنین تنظیمات DNS و مسیریابی برای همه پروتکل‌های VLESS، Trojan و Warp بهینه بشن.\n\n## Allow connections from LAN\n\nاگر این ویژگی رو فعال کنید، دیگران در شبکه شما (به عنوان مثال شبکه Wifi) می‌تونن با داشتن IP محلی دستگاه شما از پروکسی شما استفاده کنن. در اصل میتونن یه پروکسی socks روی دستگاه خودشون تنظیم کنن، IP محلی شما رو به عنوان آدرس و این پورت‌ها رو بر اساس برنامه‌ای که استفاده می‌کنید تنظیم کنن:\n\n- v2ray: 10808\n- sing-box: 2080\n- Clash: 7890\n\nلطفاً توجه داشته باشید که استفاده از این قابلیت در شبکه‌های اداری یا عمومی می‌تونه خطرناک باشه.\n\n## Log Level\n\nسطح گزارش‌های برنامه رو مشخص می‌کنه. بصورت پیشفرض \"warning\" هست که برای اشکال‌زدایی مشکلات کافیه، با این حال ممکنه لازم باشه برای ثبت issue در Github یا بررسی دقیق فعالیت پروکسی تغییرش بدید.\n"
  },
  {
    "path": "docs/fa/docs/configuration/fragment.md",
    "content": "# :material-cog-outline:{ .md .middle } تنظیمات Fragment\n\nراه‌حل Fragment تقریباً مشکل IP تمیز رو برای CDN Cloudflare با مخفی کردن SNI حل می‌کنه، ولی تنظیمات باید بر اساس اپراتور شما تعیین بشن. لطفا دقت کنید sing-box از فرگمنت پشتیبانی میکنه، اگرچه تنظیمات فرگمنت روش اعمال نمیشه و تنظیمات پیشفرض خودش رو داره.\n\n![Fragment settings](../images/fragment-settings.jpg)\n\nبه‌صورت پیش‌فرض، تنظیمات این‌جوریه:\n\n- **Length**: 100-200\n- **Interval**: 1-1\n- **Packets**: tlshello\n\nمی‌تونید پارامترها رو بر اساس وضعیت اپراتورتون تنظیم کنید. معمولاً حالت پیش‌فرض یا `Low` باید مناسب باشه. لطفاً توجه داشته باشید که با تغییر به حالتای `Medium` ،`High`و یا `Severe` ، پینگ handshake بالاتر می‌ره اما می‌تونه منجر به اتصال بهتر و پایدارتر بشه. استفاده از `Best Fragment` همیشه بهترین و هوشمندانه‌ترین راه حله، فقط متصل بشید و حداقل 30 ثانیه صبر کنید.\n\n!!! info \"راهنمایی\"\n\n    * Packetها چند حالت دارن. ولی `tlshello` فقط برای **کانفیگ‌های TLS** اعمال می‌شه؛ پورت‌هایی مثل 80، 8080 و غیره تحت تأثیر نیستن.\n\n!!! tip \"نکته\"\n    در حال حاضر، عملکرد Fragment توی برنامه‌هایی که از هسته **Xray Knocker** استفاده می‌کنن، مثل **MahsaNG** و **v2rayN PRO**، به‌مراتب بهتره. این هسته برای شرایط ایران توسعه داده شده و سفارشی‌سازی شده.\n\n!!! tip \"نکته\"\n    اگه نمی‌تونید تنظیمات بهینه Fragment رو برای اپراتورتون پیدا کنید، یه کانفیگ **Best Fragment** توی اشتراک در دسترسه. فقط بهش وصل بشید و کمی صبر کنید؛ تقریباً همه تنظیمات معتبر Fragment رو روی اپراتور شما تست می‌کنه و به‌صورت خودکار به بهترینش وصل می‌شه.\n\n!!! note \"یادداشت\"\n    مقادیر Fragment محدودیت‌ حداکثری دارن. Length نمی‌تونه بیشتر از 500 باشه و Interval نمی‌تونه بیشتر از 30 میلی‌ثانیه باشه.\n\n!!! warning \"هشدار\"\n    ویژگی Max Split اخیراً به هسته Xray اضافه شده و کمی پیچیده هست، بنابراین لطفاً قبل از تنظیم هر مقداری، اول اسناد Xray رو مطالعه کنید.\n"
  },
  {
    "path": "docs/fa/docs/configuration/index.md",
    "content": "# :material-cog-outline:{ .md .middle } راهنمای تنظیمات\n\n!!! tip \"نکته\"\n    نگران تنظیمات اشتباه نباشید. کنار دکمه `Apply Settings` یه دکمه `Reset Settings` هست که پنل رو به تنظیمات پیش‌فرض برمی‌گردونه.\n\n!!! info \"راهنمایی\"\n    بعد از هر تغییری، باید اشتراک‌هاتون رو به‌روزرسانی کنید.\n\n<div class=\"grid cards\" markdown> \n\n- :material-cog-outline:{ .lg .middle } __تنظیمات مشترک یا Common__\n\n    ---\n\n    شامل تنظیمات عمومی که برای همه پروتکل‌ها و لینکای اشتراک، مشترک هستن.\n\n    [:octicons-arrow-right-24: شروع](common.md)\n\n- :material-cog-outline:{ .lg .middle } __پروتکل‌های VLESS و Trojan__\n\n    ---\n\n    تنظیمات عمومی VLESS و Trojan مثل سرورهای DNS، Clean IPs، پورت‌ها و غیره رو پیکربندی کنید.\n\n    [:octicons-arrow-right-24: شروع](vless-trojan.md)\n\n- :material-cog-outline:{ .lg .middle } __تنظیمات Fragment__\n\n    ---\n\n    تنظیمات Fragment رو برای رفع اختلالات اپراتور یا رفع فیلتر دامنه پیکربندی کنید.\n\n    [:octicons-arrow-right-24: شروع](fragment.md)\n\n- :material-cog-outline:{ .lg .middle } __تنظیمات عمومی Warp__\n\n    ---\n\n    تنظیمات عمومی Warp برای اشتراک‌های __Warp__ و __Warp PRO__، شامل Endpointها، اسکنر، IPv6 و غیره.\n\n    [:octicons-arrow-right-24: شروع](warp.md)\n\n- :material-cog-outline:{ .lg .middle } __تنظیمات Warp PRO__\n\n    ---\n\n    تنظیمات PRO برای رفع فیلتر Warp توسط اپراتور شما.\n\n    [:octicons-arrow-right-24: شروع](warp-pro.md)\n\n- :material-cog-outline:{ .lg .middle } __قوانین مسیریابی یا Routing Rules__\n\n    ---\n\n    قوانین مسیریابی رو برای دور زدن وب‌سایت‌های محلی، بلاک تبلیغات، بلاک محتوای ناخواسته و غیره اضافه کنید.\n\n    [:octicons-arrow-right-24: شروع](routing-rules.md)\n\n</div>\n"
  },
  {
    "path": "docs/fa/docs/configuration/routing-rules.md",
    "content": "# :material-cog-outline:{ .md .middle } قوانین مسیریابی یا Routing Rules\n\n![Routing Rules](../images/routing-rules.jpg)\n\n## قوانین از پیش تعریف‌شده\n\nبا استفاده از قوانین مسیریابی از پیش تعریف‌شده، می‌تونید این تنظیمات رو برای کانفیگ‌ها اعمال کنید:\n\n* اتصال مستقیم به آدرس‌های ایرانی بدون پراکسی (نیازی به قطع اتصال برای بازدید از بعضی وب‌سایت‌ها، به‌ویژه درگاه‌های پرداخت، نیست).\n* دسترسی مستقیم به وب‌سایت‌های چینی.\n* دسترسی مستقیم به وب‌سایت‌های روسی.\n* مسدود کردن تبلیغات ایرانی و خارجی، تا 90 درصد.\n* مسدود کردن وب‌سایت‌های محتوای پورن.\n* مسدود کردن اتصال‌های QUIC (به دلیل ناپایداری شبکه).\n* مسدود کردن محتوای Malware یا بدافزارها\n* مسدود کردن محتوای Phishing یا کلاهبرداری\n* مسدود کردن محتوای Cryptominers\n\nاتصال مستقیم به آدرس‌های Local مثل 127.0.0.1 به صورت پیشفرض روی کانفیگ‌ها هست و نیازی به تنظیم نداره.\n\n!!! warning \"هشدار\"\n    کاربرای v2ray در صورتی که میخوان از گزینه‌های `Malware`، `Phishing` یا `Cryptominers` استفاده کنن، باید Geo Asset رو به **Chocolate4U** تغییر بدن و asset رو دانلود کنن، در غیر اینصورت کانفیگا وصل نمیشه.\n\n!!! warning \"هشدار\"\n    اگه قوانین مسیریابی رو فعال کنید و برنامه وصل نشه، دلیل اصلیش اینه که Geo asset به‌روز نیست. توی منوی v2rayNG به تنظیمات Geo assets برید و روی آیکون ابر یا دانلود کلیک کنید تا به‌روز بشه. اگه فرآیند به‌روزرسانی موفق نباشه، نمی‌تونید وصل بشید. اگه همه‌چیز رو امتحان کردید و بازم به‌روز نشد، دو فایل زیر رو از لینک‌ها دانلود کنید و به جای دکمه به‌روزرسانی، روی دکمه افزودن کلیک کنید و این دو فایل رو وارد کنید:\n\n```title=\"GeoIP\"\nhttps://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat\n```\n\n```title=\"GeoSite\"\nhttps://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat\n```\n\n## قوانین سفارشی یا Custom Rules\n\nبعضی وقت‌ها قوانین از پیش تعریف‌شده کافی نیستن. مثلاً، اگه محتوای پورن رو مسدود کردید ولی یه وب‌سایت خاص توی لیست نبود و مسدود نشده، باید از قوانین سفارشی استفاده کنید.\n\nتوی این بخش می‌تونید از سه فرمت مختلف استفاده کنید: دامنه، IP یا IP/CIDR.\n\nتوجه کنید که اگه `google.com` رو وارد کنید، همه زیردامنه‌هاش هم مسدود می‌شن یا مستقیم مسیریابی می‌شن، مثل `drive.google.com` یا `mail.google.com`. مثال‌ها:\n\n```title=\"دامنه\"\ngoogle.com\n```\n\n```title=\"IPv4\"\n192.168.1.1\n```\n\n```title=\"IPv6\"\n[2606:4700::6810:85e5]\n```\n\n```title=\"محدوده IPv4\"\n192.168.1.1/32\n```\n\n```title=\"محدوده IPv6\"\n[2606:4700::6810:85e5]/128\n```\n\n## قوانین تحریم‌ها\n\nدر صورتی که میخواید وب‌سایت‌های تحریمی رو مستقیم دور بزنید، می‌تونید از این بخش استفاده کنید. حتی با استفاده از کانفیگ Workerless یا کانفیگای Warp که IP ایران برمیگردونن و سایتای تحریمی باز نمیشه.\n\nمی‌تونید سرور DNS تحریم‌شکن مدنظرتون رو [در تنظیمات عمومی](./common.md) تغییر بدید و قوانین از پیش تعیین شده رو انتخاب کنید یا آدرس‌های سفارشی رو وارد کنید.\n\n!!! info \"راهنمایی\"\n    توجه کنید که اگه توی قوانین سفارشی `google.com` رو وارد کنید، همه زیر دامنه‌هاش مثل `drive.google.com` یا `mail.google.com` هم مستقیم مسیریابی می‌شن.\n\n!!! note \"یادداشت\"\n    وقتی یک قانون یا دامنه رو در این قسمت برای دور زدن تحریمها فعال میکنید، باید قبلش مطمئن بشید اون DNS این دامنه‌ها رو پشتیبانی میکنه. برای مثال ممکنه دامنه‌های Microsoft رو فعال کنید ولی DNS پیشفرض این دامنه‌ها رو پشتیبانی نکنه. برای اطمینان قبل از فعال کردن یک قانون یا وارد کردن دامنه، به وبسایت اون DNS برید و دامنه رو سرچ کنید تا از پشتیبانی اون دامنه مطمئن باشید.\n"
  },
  {
    "path": "docs/fa/docs/configuration/vless-trojan.md",
    "content": "# :material-cog-outline:{ .md .middle } تنظیمات VLESS و Trojan\n\n![VLESS و Trojan settings](../images/vless-trojan-settings.jpg)\n\n## Remote DNS\n\nبه‌صورت پیش‌فرض، Remote DNS از Google DNS با پروتکل DoH  دیگه استفاده می‌کنه، اگرچه می‌تونید از سرورهای معروف DoH یا DoT استفاده کنید، مثل:\n\n!!! tip \"چند DNS معروف\"\n    - `https://dns.google/dns-query`\n    - `https://dns.adguard-dns.com/dns-query`\n    - `https://dns.quad9.net/dns-query`\n    - `tls://dns.google`\n\n## Chain Proxy\n\nهمون‌طور که گفته شد، Proxy IP باعث ثابت شدن IP برای آدرس‌های هدف Cloudflare می‌شه، ولی IP شما برای بقیه آدرس‌ها ممکنه فرق کنه. **Chain Proxy** یه IP ثابت برای همه آدرس‌ها تضمین می‌کنه. اینجا می‌تونید از یه کانفیگ رایگان استفاده کنید، حتی اگه توسط اپراتورتون فیلتر شده باشه، تا IP شما به IP این کانفیگ تغییر کنه.\n\n### پروتکل‌های پشتیبانی شده\n\n* VLESS\n* VMess\n* Trojan\n* Shadowsocks\n* Socks\n* Http\n\n### انواع Transport پشتیبانی شده\n\n* TCP\n* TCP http header\n* Websocket\n* GRPC\n* Httpupgrade\n\n### انواع TLS پشتیبانی شده\n\n* TLS\n* Reality\n\n!!! note \"یادداشت\"\n    کانفیگ Chain Proxy نباید خودش Worker باشه، وگرنه IP نهایی بازم تغییر می‌کنه.\n\n!!! info\n    کانفیگ‌های Socks و http باید username و password داشته باشن، هسته Xray این رو اجباری کرده.\n\n!!! info \"راهنمایی\"\n    کانفیگ Shadowsocks باید ساده باشه و نمیتونه از نوع websocket، grpc و غیره باشه و همچنین نمیتونه TLS داشته باشه.\n\n!!! warning \"هشدار\"\n    کانفیگ‌های VLESS، VMess و Trojan با مقادیر ALPN `randomized` با Clash سازگار نیستن چون از این Fingerprint پشتیبانی نمی‌کنه.\n\nزنجیره پروکسی فقط روی اشتراک‌های **Normal** و **Fragment** اعمال میشن، فراموش نکنید بعد از تنظیم در پنل اشتراک رو بروزرسانی کنید. کانفیگ‌های زنجیره‌ای با آیکون 🔗 به کانفیگ‌های اصلی اضافه میشن، بنابراین وقتی کانفیگ Chain Proxy قطع بشه کماکان به کانفیگای اصلی دسترسی دارید.\n\n## Clean IP/Domains\n\nبرای اشتراک‌ بدون **Fragment**، شاید بخواید از Clean IPs استفاده کنید. پنل یه اسکنر داره که به‌صورت فایل زیپ برای سیستم‌عاملتون قابل دانلوده. CloudflareScanner رو اجرا کنید، نتایج توی `result.csv` ذخیره می‌شن و می‌تونید IPها رو بر اساس تأخیر و سرعت دانلود انتخاب کنید. ویندوز برای این کار توصیه می‌شه و حین تست مطمئن بشید VPN خاموشه. برای اسکن پیشرفته، به [این راهنما](https://github.com/bia-pain-bache/Cloudflare-Clean-IP-Scanner/blob/master/README.md) مراجعه کنید.\n\n!!! tip \"نکته\"\n    توی اپراتورهایی که از IPv6 پشتیبانی می‌کنن (مثل رایتل، ایرانسل، آسیاتک)، IPv6 رو توی سیم‌کارتتون فعال کنید، گزینه **Prefer IPv6** رو توی تنظیمات برنامه فعال کنید و از دو کانفیگ آخر یا کانفیگ‌ پیش‌فرض اول استفاده کنید. IPهای v6 معمولاً عملکرد بهتری دارن.\n\n!!! tip \"نکته\"\n    وقتی از **Fragment** استفاده می‌کنید، Clean IPs نقش زیادی ندارن، ولی بعضی اپراتورها مثل رایتل ممکنه بازم بهشون نیاز داشته باشن.\n\nبرای اضافه کردن کانفیگ‌های سفارشی در کنار کانفیگ‌های پیش‌فرض، IP یا دامنه‌های تمیز رو همون‌طور که توی تصویر بخش نشون داده شده وارد کنید و روی **Apply** کلیک کنید. بعد از به‌روز‌رسانی اشتراک این کانفیگ‌های جدید اضافه میشن و به کانفیگ‌های **Best Ping** و **Best Fragment** هم اضافه می‌شن.\n\n## انتخاب Protocol\n\nیکی یا هر دو پروتکل **VLESS** و **Trojan** رو فعال کنید.\n\n## انتخاب Port\n\nپورت‌های مورد نیاز رو انتخاب کنید. پورت‌های TLS کانفیگ‌های امن‌تری ارائه می‌دن، ولی حین اختلالات TLS یا وقتی **Fragment** خوب کار نمی‌کنه، کانفیگ‌های غیر TLS می‌تونن جایگزین خوبی باشن.\n\n!!! note \"یادداشت\"\n    کانفیگ‌های غیر TLS نیاز دارن که پنل با روش Workers ساخته بشه. اگه از روش Pages استفاده شده باشه یا دامنه شخصی برای پنل گذاشته باشید، پورت‌های none TLS توی پنل نشون داده نمی‌شن.\n\n!!! info \"راهنمایی\"\n    کانفیگ‌های غیر TLS فقط به اشتراک‌ **Normal** اضافه می‌شن.\n\n## انتخاب Fingerprint\n\nاز این قسمت میتونید Fingerprint یا اثر انگشت TLS رو انتخاب کنید که بصورت پیشفرض روی randomized هست.\n\n## Best Interval\n\nبه‌صورت پیش‌فرض، کانفیگ‌های **Best** هر 30 ثانیه تست می‌کنن تا بهترین کانفیگ یا مقدار Fragment رو پیدا کنن. توی شبکه‌های کم‌سرعت حین کارهایی مثل تماشای ویدیو یا بازی، این ممکنه باعث لگ بشه. بازه زمانی رو بین 10 تا 90 ثانیه بر اساس نیاز تنظیم کنید.\n\n## TCP Fast Open\n\nدر صورتیکه سخت‌افزار و سیستم عامل شما از TCP Fast Open پشتیبانی میکنه و شبکه شما هم اختلالی روی این ویژگی ایجاد نمیکنه، میتونید این گزینه رو فعال کنید که بهبود قابل توجهی هم ایجاد میکنه. دقت داشته باشید کاربران لینوکس باید این ویژگی رو روی سیستم‌عاملشون فعال کنن.\n\n## فعالسازی ECH\n\nحتما در جریان هستید که روش‌های مختلفی برای پنهان‌سازی SNI اتصال وجود داره تا بشه فایروال‌ها رو دور زد. Fragment میاد SNI رو مخفی می‌کنه، دامنه سفارشی SNI رو تغییر می‌ده و در نهایت ECH می‌تونه SNI رو به دامنه پیش‌فرض ECH کلادفلر تغییر بده. مشکل اینجاست که کلادفلر از یک دامنه پیش‌فرض به نام `cloudflare-ech.com` برای همه دامنه‌های CDN و Worker استفاده می‌کنه، پس مسدود کردنش برای ISPها خیلی آسونه. این گزینه روی اشتراک Fragment فعال نمی‌شه.\n\n### ECH Server Name\n\nاگر این فیلد رو خالی بذارید، پیکربندی ECH از دامنه‌ی ورکر شما بدست میاد. با این حال، اگر دامنه‌ی ورکر شما مسدود شده باشه، می‌تونید از دامنه‌های دیگه که پشت CDN کلادفلر  قرار دارن و ECH رو  فعال کردن استفاده کنید. برای بررسی این موضوع، به [اینجا](https://dns.google/query?name=&rr_type=HTTPS&ecs=) مراجعه کنید و دامنه‌ی مورد نظر خودتون رو چک کنید، باید مقدار `ech` رو در بخش `Answer` مشاهده کنید.\n\n!!! warning \"هشدار\"\n    لطفاً توجه داشته باشید که گزینه  `ECH Server Name`مدتی هست که روی Xray موجوده، اما sing-box از نسخه ۱.۱۳.۰ و Clash از نسخه ۱.۱۹.۲۰ از این ویژگی پشتیبانی می‌کنن. بنابراین اگر هسته برنامه شما با این نسخه‌ها سازگار نیست، لطفاً خالی بذارید.\n\n## Proxy IP\n\n### انتخاب Mode\n\nاز نسخه 3.4.2 به بعد میتونید انتخاب کنید که از Proxy IP برای آدرس‌های پشت CDN کلادفلر استفاده بشه یا NAT64 Prefixes.\n\n### Proxy IPs / Domains\n\n می‌تونید Proxy IP رو از طریق پنل تغییر بدید و با اعمال تغییرات، اشتراک رو به‌روزرسانی کنید. ولی توصیه می‌شه Proxy IP رو از طریق داشبورد Cloudflare یا ویزارد تنظیم کنید، چون:\n\n!!! note \"یادداشت\"\n    تغییر Proxy IP از طریق پنل نیاز به به‌روزرسانی اشتراک داره اگه IP از کار بیفته. این می‌تونه کانفیگ‌های اهدایی رو مختل کنه، چون کاربرایی که اشتراک فعال ندارن نمی‌تونن به‌روزرسانی کنن. این روش فقط برای استفاده شخصی خوبه. روش‌های دیگه نیازی به به‌روزرسانی اشتراک ندارن.\n\nمی‌تونید  Proxy IP های موجود رو با کلیک روی آیکون کنار این فیلد در پنل یا مراجعه به `/proxy-ip` در مرورگر ببینید، که IP ها رو بر اساس منطقه و ISP فهرست می‌کنه.\n\n!!! info \"راهنمایی\"\n    برای استفاده از چند Proxy IP، اونا رو زیر هم وارد کنید.\n\n### NAT64 Prefixes\n\n می‌تونید NAT64 Prefix رو از طریق پنل تغییر بدید و با اعمال تغییرات، اشتراک رو به‌روزرسانی کنید. ولی توصیه می‌شه NAT64 Prefix رو از طریق داشبورد Cloudflare یا Wizard تنظیم کنید، چون:\n\n!!! note \"یادداشت\"\n    تغییر NAT64 Prefix از طریق پنل نیاز به به‌روزرسانی اشتراک داره اگه IP از کار بیفته. این می‌تونه کانفیگ‌های اهدایی رو مختل کنه، چون کاربرایی که اشتراک فعال ندارن نمی‌تونن به‌روزرسانی کنن. این روش فقط برای استفاده شخصی خوبه. روش‌های دیگه نیازی به به‌روزرسانی اشتراک ندارن.\n\nمیتونید یک یا چند NAT64 Prefix [از اینجا](https://github.com/bia-pain-bache/BPB-Worker-Panel/blob/main/docs/NAT64Prefixes.md) انتخاب کنید که IPها رو بر اساس منطقه و ISP لیست کرده.\n\n!!! info \"راهنمایی\"\n    برای استفاده از چند IP، اونا رو زیر هم وارد کنید.\n\n## Custom CDN\n\nبرای اینکه از یه Custom CDN (مثل Fastly، Gcore) برای مخفی کردن دامنه Worker خودتون استفاده کنید باید سه بخش زیر رو پیکربندی کنید:\n\n### Addresses\n\nاینا IPها یا IPهای تمیز  مخصوص CDN هستن. باید از IPهای خود CDN استفاده کنید، نه Cloudflare. دامنه‌ها، آدرس‌های IPv4 یا IPv6 رو همون‌طور که نشون داده شده وارد کنید، با آدرس‌های IPv6 توی کروشه، مثلاً `[2a04:4e42:200::731]`.\n\n### Host\n\nهاستی که توی CDN تعریف شده و به Worker شما اشاره می‌کنه، مثل یه دامنه جعلی توی Fastly.\n\n### SNI\n\nیه دامنه جعلی یا یه سایت روی همون CDN، مثلاً `speedtest.net` (بدون `www`) برای Fastly.\n\nبعد از پیکربندی این قسمت‌ها، کانفیگ‌های مرتبط به اشتراک‌ **Normal** اضافه می‌شن و با علامت `C` مشخص می‌شن.\n\n!!! info \"راهنمایی\"\n    فقط پورت‌های 443 و 80 برای این کانفیگ‌ها پشتیبانی می‌شن.\n"
  },
  {
    "path": "docs/fa/docs/configuration/warp-pro.md",
    "content": "# :material-cog-outline:{ .md .middle } تنظیمات Warp Pro\n\nاین بخش فقط برای اشتراک **Warp Pro** اعمال می‌شه، همون‌طور که [اینجا](../usage/warp-pro.md) توضیح داده شده.\n\n![Warp Pro settings](../images/warp-pro-settings.jpg)\n\n## تعریف‌ها\n\nچند اصطلاح رایج توی همه پیاده‌سازی‌های نویز Warp استفاده می‌شن. بیشتر هسته‌ها، از جمله **Xray**، **Xray Knocker** و **Amnezia**، حداقل دو تا از این پارامترا رو دارن:\n\n### Mode\n\nهر پیاده‌سازی نویز Warp یه حالت خاص داره که تعیین می‌کنه نویز به چه شکلی به سرور فرستاده بشه تا اتصال مخفی بشه.\n\n### Count\n\nتعداد بسته‌های نویز که برنامه به سرور می‌فرسته.\n\n### Size\n\nاندازه هر بسته نویز، به بایت.\n\n### Delay\n\nبازه زمانی بین فرستادن بسته‌های نویز.\n\n## MahsaNG\n\n### MahsaNG Mode\n\n* **none**: هیچ نویزی اعمال نمی‌شه، مثل یه کانفیگ Warp معمولی.\n* **quic**: توسط توسعه‌دهنده‌ها برای شرایط ایران توصیه شده.\n* **random**: نویز به‌صورت تصادفی تولید می‌شه.\n* حالت سفارشی: امکان استفاده از یه رشته HEX سفارشی (مثل `fe09ad5600bc...`).\n\n## Clash و Amnezia\n\nاین بخش برای برنامه‌های **Amnezia**، **WG Tunnel** و **Clash-Mihomo** اعمال می‌شه که تنظیمات مشترکی دارن. شما تعداد بسته‌های نویز و حداقل و حداکثر اندازه‌شون رو مشخص می‌کنید. از جدول اشتراک **Warp Pro**، علاوه بر اشتراک‌ها می‌تونید یه فایل زیپ برای کانفیگ‌های **Amnezia** و **WG Tunnel** هم دانلود کنید.\n\nاین تنظیمات برای هر اپراتور با آزمون و خطا تعیین می‌شن.\n\n## v2rayNG و v2rayN\n\n### v2ray Mode\n\nچهار حالت برای برنامه‌های **v2rayNG** و **v2rayN** در دسترسه: **base64**، **string**، **hex** و **random**. توی بخش Noise Count، می‌تونید مشخص کنید چندتا از این نویز توی کانفیگ باشه. می‌شه چند نویز با انواع مختلف اضافه کرد؛ لازم نیست یکسان باشن.\n\n### Noise Packet\n\nمقدار packet باید با mode انتخاب‌شده مطابقت داشته باشه:\n\n* **Base64**: نیاز به یه مقدار معتبر Base64 داره.\n* **String**: می‌تونه هر رشته‌ای باشه.\n* **Random**: فقط طول رشته رو مشخص می‌کنید.\n* **Hex**: نیاز به یه رشته Hex داره.\n\nمثال:\n\n```title=\"Base64\"\nNTUyMjU0NjItN2I4MC00YWFmLWE3NDgtNjZiYWZiNjlmNmQ2\n```\n\n```title=\"String\"\nsalamchetori123\n```\n\n```title=\"Random\"\n10-30\n```\n\n```title=\"Hex\"\n01d800f9373b2c418713aafde43021004ac3b89f\n```\n\n!!! tip \"نکته\"\n    - برای تبدیل متن به Base64 میتونید از [این ابزار](https://onlinebase64tools.com/base64-encode) استفاده کنید.\n    - برای تولید رشته Hex میتونید از [این ابزار](https://onlinetools.com/random/generate-random-hexadecimal-numbers) استفاده کنید.\n\n### Applies To\n\nمشخص میکنه نویزی که تعریف کردید به کدوم نوع از IP اضافه بشه، بصورت پیشفرض روی IP هست که هم به IPv4 و هم به v6 اضافه میشه.\n"
  },
  {
    "path": "docs/fa/docs/configuration/warp.md",
    "content": "# :material-cog-outline:{ .md .middle } تنظیمات عمومی Warp\n\nاین تنظیمات برای اشتراک‌های **Warp** و **Warp Pro** اعمال می‌شن.\n\n![Warp General settings](../images/warp-settings.jpg)\n\n## Remote DNS\n\nاین DNS برای سازگاری بیشتر و عملکرد بهتر باید از نوع IPv4 باشه و اکیدا توصیه میکنم اگر قصد تعویضش رو دارید از DNS های خود کلادفلر استفاده کنید چون با Warp کلادفلر سازگاری و عملکرد بهتری دارن، برای مثال:\n\n- 1.1.1.2، 1.0.0.2 (DNS امنیتی Cloudflare)\n- 1.1.1.3، 1.0.0.3 (DNS بزرگسالان Cloudflare)\n\n## Endpoints - Scan Endpoint\n\nEndpoint ها برای Warp مثل IP تمیز برای VLESS و Trojan عمل می‌کنن. پنل یه اسکنر ارائه میده که می‌تونید توی Termux (اندروید)، Windows، macOS یا Linux اجرا کنید و نتایج رو اینجا وارد کنید. توجه کنید که نتایج 100% قابل اعتماد نیستن، پس تست کردن لازمه. در ضمن حواستون باشه که قبل از اسکن تمام برنامه‌های فیلترشکن ر. ببندید، اگر از v2rayN استفاده میکنید از نوارابزار پایین باید Exit کنید، قطع کردن پروکسی کافی نیست.\n\n!!! info \"راهنمایی\"\n    - Endpoint ها باید به‌صورت IP:Port یا Domain:Port باشن و باید خط به خط وارد بشن.\n    - برای آدرس‌های IPv6، اونا رو توی کروشه بذارید. مثال‌های زیر رو ببینید:\n    ```title=\"IPv4\"\n    123.45.8.6:1701\n    ```\n    ```title=\"IPv6\"\n    [2a06:98c1:3120::3]:939\n    ```\n    ```title=\"Domain\"\n    engage.cloudflareclient:2408\n    ```\n\n## Fake DNS\n\nمی‌تونید Fake DNS رو برای کانفیگ‌های Warp فعال کنید تا تأخیر DNS کمتر بشه. ولی با احتیاط، چون ممکنه با بعضی برنامه‌ها سازگار نباشه یا با DNS سیستم تداخل ایجاد کنه. اگه از کارکردش مطمئن نیستید، فعالش نکنید.\n\n## IPv6\n\nاگه اپراتورتون از IPv6 پشتیبانی نمی‌کنه، غیرفعالش کنید تا عملکرد DNS و پراکسی بهینه بشه.\n\n## Best Interval\n\nاشتراک‌های **Warp** و **Warp Pro** شامل کانفیگ‌های **Best Ping** هستن. به‌صورت پیش‌فرض، این کانفیگ‌ها هر 30 ثانیه تست می‌شن تا بهترین کانفیگ یا Endpoint برای اتصال پیدا بشه. توی شبکه‌های کند، این بازه ممکنه حین کارهایی مثل تماشای ویدیو یا بازی آنلاین باعث لگ بشه. می‌تونید بازه رو بین 10 تا 90 ثانیه تنظیم کنید.\n\n## Warp Accounts\n\nبه‌روزرسانی، اکانت‌های جدید Warp رو از **Cloudflare** می‌گیره. این فرآیند روی سرعت اتصال و تنظیمات تأثیری نداره.\n"
  },
  {
    "path": "docs/fa/docs/faq.md",
    "content": "# :material-cloud-question-outline:{ .md .middle } سوالات متداول\n\n??? question \"چرا کانفیگ‌های v2ray وصل نمیشن؟\"\n    اگر `Routing` فعال کردید و VPN متصل نشد تنها دلیلش آپدیت نبودن Geo asset هست. از منوی برنامه‌ی v2rayNG وارد قسمت `Asset files` بشید و اون علامت ابر یا دانلود رو بزنید تا آپدیت بشن، اگر آپدیت ناموفق باشه وصل نمیشید. توجه داشته باشید آپدیت شدن فایل‌ها ممکنه زمان ببره، باید صبر کنید تا برای تک تک فایل‌ها پیام `success` رو ببینید. اگر هر کاری کردید آپدیت نشد دو تا فایل از دو تا لینک زیر دانلود کنید و بجای آپدیت زدن، دکمه اضافه کردن رو بزنید و این دوتا فایل رو وارد کنید:\n    ```title=\"GeoIP\"\n    https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat\n    ```\n    ```title=\"GeoSite\"\n    https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat\n    ```\n\n??? question \"‌چرا کانفیگ‌های اشتراک Raw وصل نمیشن یا هیچ سایتی رو باز نمی‌کنن؟\"\n    برای استفاده از این کانفیگ ها `Mux` رو از تنظیمات هر اپلیکیشنی که استفاده میکنید خاموش کنید.\n    همینطوردر تنظیمات برنامه remote DNS به یکی از اشکال زیر  باشه:\n    ```title=\"DoH\"\n    https://8.8.8.8/dns-query\n    ```\n    ```title=\"DoT\"\n    tls://8.8.8.8  \n    ```\n    ```title=\"TCP\"\n    tcp://8.8.8.8  \n    ```\n\n??? question \"چرا کانفیگا مثلا روی v2rayNG وصل میشن ولی روی Streisand وصل نمیشن؟\"\n    سعی من بر این هست که سریعا تغییرات جدید هسته‌ها رو پیاده‌سازی کنم، در همین حال بعضی از برنامه‌ها فقط میان هسته رو آپدیت میکنن بدون اینکه تغییراتش رو به درستی اعمال کنن و این مشکلات پیش میاد. بنابراین در چنین مواردی باید مشکل رو با خود توسعه دهنده برنامه مطرح کنید.\n\n??? question \"چرا کانفیگ فرگمنت روی اپراتور من سرعتش کمه؟\"\n    هر اپراتوری تنظیمات فرگمنت بهینه خودش رو داره. اکثرا با پیشفرض پنل اوکی هستن ولی ممکنه روی اپراتور شما این مقادیر بهینه نباشه، میتونید از مودهای دیگه مثل Medium و High استفاده کنید یا روی مود Custom تنظیمات دستی وارد کنید. در نظر داشته باشید اپ MahsaNG هم فرگمنتش بهتر کار میکنه.\n\n??? question \"من از اون لینک آموزش Proxy IP گذاشتم ولی بعضی سایت‌ها یا برنامه‌ها مثل توییتر رو باز نمیکنه!\"\n    تعداد این IP ها زیاده و ممکنه تعداد زیادیشون پایدار نباشن. باید تست کنید تا یه خوبشو پیدا کنید.\n\n??? question \"وقتی proxy IP گذاشتم کار میکرد ولی الان از کار افتاده!\"\n    اگر از تک IP استفاده کنید احتمالا بعد یه مدت دوباره از کار میافته و خیلی سایتا باز نمیشن. باید از اول این مراحلو برید. ترجیحا اگر کار خاصی انجام نمیدید که نیاز به IP ثابت داشته باشه بذارید پیشفرض پنل بمونه، Proxy IP تکی نذارید.\n\n??? question \"چرا وقتی میرم به آدرس `panel/` ارور میده؟\"\n    طبق آموزش راه‌اندازی کنید، KV یا UUID یا Trojan Pasword درست تنظیم نشده.\n\n??? question \"دپلوی کردم ولی ارور 1101 میده کلادفلر!\"\n    اکانت کلادفلر شما شناسایی شده، با یک ایمیل رسمی مثل Gmail یه اکانت جدید کلادفلر بسازید، در ضمن در اسم پروژه کلمه‌ی bpb نباشه.\n    [روش ساخت خودکار](installation/wizard.md) ارائه شده که از همه‌ی روش‌ها بیشتر توصیه میشه. در حال حاضر از این روش اقدام کنید.\n\n??? question \"آیا میتونم ازش برای ترید استفاده کنم؟\"\n    اگر IP کلادفلر شما آلمان هست (که معمولا همینطوره) از Proxy IP تکی آلمان استفاده کنید احتمالا مشکلی نداشته باشه ولی ترجیحا از روش Chain Proxy استفاده کنید برای فیکس کردن IP.\n\n??? question \"چرا در پنل پورت‌های none TLS رو ندارم؟\"\n    دقت کنید برای استفاده از کانفیگ‌های non TLS باید فقط از طریق Workers بدون دامنه‌ شخصی (Custom Domain) دپلوی کرده باشید.\n\n??? question \"کانفیگ Best Fragment چرا وصل نمیشه یا پینگ میده کار نمیکنه؟\"\n    از تنظیمات `Prefer IPv6` رو خاموش کنید.\n\n??? question \"چرا تماس صوتی Telegram یا clubhouse کار نمیکنه؟\"\n    کلادفلر نمیتونه درست ترافیک UPD رو برقرار کنه، در حال حاضر راه حل موثری براش نیست. از کانفیگ‌های Warp استفاده کنید.\n\n??? question \"چرا ChatGPT باز نمیشه؟\"\n    بخاطر اینکه Proxy IP های پیشفرض پنل عمومی هستن و ممکنه خیلیاشون برای ChatGPT مشکوک باشن. با توجه به آموزش‌ها یه IP مناسب پیدا کنید یا اینکه گزینه‌ی Bypass ChatGPT رو در قسمت routing پنل فعال کنید.\n\n??? question \"پسورد پنل یادم نمیاد چیکار کنم؟\"\n    به داشبورد کلادفلر برید، از قسمت KV اون KV که برای Worker یا Pages ساختید رو پیدا کنید و view رو بزنید، به قسمت KV Pairs برید، توی جدول یه pwd میبینید، مقدار روبروش پسوردتونه.\n\n??? question \"اگر UUID و پسورد Trojan رو عوض نکنم چی میشه؟\"\n    از وزژن 2.7.7 به بعد تنظیم این دو پارامتر الزامیه و پنل بدون این‌ها بالا نماد.\n\n??? question \"از روش آپلود Pages ساختم ولی 404 میاد.\"\n    کلادفلر برای ثبت دامنه‌های Pages کمی زمان در حدود 4-5 دقیقه نیاز داره، بنابراین بهش زمان بدید و برگردید رفرش کنید درست میشه.\n\n??? question \"چرا پنل تیک Block Ads رو نشون نمیده؟\"\n    افزونه‌های uBlock یا AdGuard یا حتی بعضی مرورگرهایی که تنظیمات حذف تبلیغات دارن این کارو میکنن. برای پنل غیرفعال کنید.\n\n??? question \"چرا ویندوز BPB Wizard رو ویروس تشخیص میده؟\"\n    برنامه Wizard فاقد امضای دیجیتال هست و علاوه بر اون باید کد ورکر رو روی سیستم شما دانلود کنه، شخصی‌سازیش کنه و آپلود کنه روی کلادفلرتون که این رفتار از نظر آنتی‌ویروس‌ها مشکوکه و الگویی شبیه ویروس‌های Trojan downloader داره. بنابراین باید موقتا Windows defender یا ویروس‌یاب خودتون رو غیرفعال کنید، از حالت زیپ خارج کنید و بعد اجراش کنید.\n\n??? question \"چرا v2rayN تست سرعت و پینگ کانفیگ‌ها رو نمیده؟\"\n    در حال حاضر v2rayN نمیتونه به درستی برای کانفیگ‌های کاستوم تست بگیره و کانفیگ‌های پنل همگی کاستوم هستن. اما نگران نباشید، کافیه فقط کانفیگ رو انتخاب کنید و وصل بشید. برای اطمینان بیشتر از تست سرعت و پینگ میتونید از کانفیگ Best Ping استفاده کنید که بصورت خودکار مرتب همه IP ها رو تست میکنه و به سریع‌ترین وصل میشه که شما رو از تست دستی سرعت بی‌نیاز میکنه.\n\n??? question \"چرا وقتی میخوام ساب sing-box رو وارد کنم ارور میده\"\n    کانفیگ‌های BPB فقط از sing-box نسخه 1.12.0 و بالاتر پشتیبانی میکنن.\n"
  },
  {
    "path": "docs/fa/docs/index.md",
    "content": "# پنل BPB\n\n![پنل BPB](images/panel-overview.jpg)\n\n## معرفی\n\nاین پروژه یه پنل کاربری برای دسترسی به کانفیگ‌های رایگان، امن و خصوصی **VLESS**، **Trojan** و **Warp** ارائه می‌ده. حتی وقتی دامنه‌ها یا سرویس Warp توسط اپراتورها فیلتر شدن، اتصال رو تضمین می‌کنه. این پنل به دو روش راه‌اندازی می‌شه:\n\n- با **Cloudflare Workers**\n- با **Cloudflare Pages**\n\n🌟 اگه **پنل BPB** براتون مفید بوده، با حمایتتون بهم دلگرمی می‌دید 🌟\n\n```title=\"USDT (BEP20)\"\n0xbdf15d41C56f861f25b2b11C835bd45dfD5b792F\n```\n\n## ویژگی‌ها\n\n- **رایگان و شخصی**: بدون هیچ هزینه‌ای، سرور شما شخصی هست.\n- **پنل کاربری ساده**: کار باهاش راحته و تنظیمات و استفاده ازش خیلی آسونه.\n- **پروتکل‌های متنوع**: ارائه کانفیگ‌های VLESS، Trojan و Wireguard (Warp).\n- **DoH شخصی**: یک DoH شخصی با قابلیت تنظیم DNS زیربنایی.\n- **کانفیگ‌های Warp Pro**: کانفیگ‌های Warp بهینه‌شده برای شرایط خاص ایران.\n- **پشتیبانی از Fragment**: اتصال حتی در صورت فیلتر شدن دامنه.\n- **قوانین مسیریابی کامل**: دور زدن سایت‌های ایرانی، چینی و روسی، مسدود کردن QUIC، محتوای پورن، تبلیغات، بدافزارها، فیشینگ و در زدن سایت‌های تحریمی.\n- **زنجیره‌ی Proxy**: می‌تونید یه Proxy زنجیره‌ای از نوع VLESS، Trojan، Shadowsocks، Socks یا http اضافه کنید تا IP ثابت بشه.\n- **پشتیبانی از برنامه‌های مختلف**: لینک‌های اشتراک برای برنامه‌های با هسته‌های Xray، Sing-box و Clash-Mihomo.\n- **پنل امن با رمز عبور**: پنل محافظت شده با رمز عبور.\n- **سفارشی‌سازی کامل**: تنظیم IP تمیز، Proxy IP، سرورهای DNS، انتخاب پورت‌ها و پروتکل‌ها، Warp Endpoint و خیلی امکانات دیگه.\n\n## محدودیت‌ها\n\n- **اتصال UDP**: پروتکل‌های VLESS و Trojan روی Workerها نمی‌تونن UDP رو به‌خوبی پشتیبانی کنن، برای همین به‌صورت پیش‌فرض غیرفعاله (این روی امکاناتی مثل تماس تصویری تلگرام تأثیر می‌ذاره). DNSهای UDP هم پشتیبانی نمی‌شن. به جاش DoH فعاله که امن‌تره.\n- **محدودیت تعداد درخواست**: هر Worker برای VLESS و Trojan روزانه 100 هزار درخواست پشتیبانی می‌کنه، که برای 2-3 نفر کافیه. برای اتصال نامحدود می‌تونید از کانفیگ‌های Warp استفاده کنید.\n\n## شروع به کار\n\n- [روش‌های راه‌اندازی](installation/wizard.md)\n- [راهنمای تنظیمات](configuration/index.md)\n- [نحوه‌ی استفاده](usage/index.md)\n- [پرسش‌های متداول (FAQ)](faq.md)\n\n## برنامه‌های پشتیبانی‌شده\n\n|       Client        |      Version      | پشتیبانی از Fragment | پشتیبانی از Warp Pro |\n| :-----------------: | :---------------: | :------------------: | :------------------: |\n|     **v2rayNG**     | 1.10.26 یا بالاتر |   :material-check:   |   :material-check:   |\n|     **MahsaNG**     |   14 یا بالاتر    |   :material-check:   |   :material-check:   |\n|     **v2rayN**      | 7.15.4 یا بالاتر  |   :material-check:   |   :material-check:   |\n|   **v2rayN-PRO**    |   1.9 یا بالاتر   |   :material-check:   |   :material-check:   |\n|    **Sing-box**     | 1.11.2 یا بالاتر  |   :material-close:   |   :material-close:   |\n|    **Streisand**    | 1.6.64 یا بالاتر  |   :material-check:   |   :material-check:   |\n|   **Clash Meta**    |                   |   :material-close:   |   :material-check:   |\n| **Clash Verge Rev** |                   |   :material-close:   |   :material-check:   |\n|     **FLClash**     |                   |   :material-close:   |   :material-check:   |\n|   **AmneziaVPN**    |                   |   :material-close:   |   :material-check:   |\n|    **WG Tunnel**    |                   |   :material-close:   |   :material-check:   |\n\n## متغیرهای محیطی (داشبورد کلادفلر)\n\n|  نام متغیر   |           مورد استفاده            |       اجباری       |\n| :----------: | :-------------------------------: | :----------------: |\n|   **UUID**   |      UUID برای پروتکل VLESS       | :heavy_check_mark: |\n| **TR_PASS**  |        پسورد پروتکل Trojan        | :heavy_check_mark: |\n| **PROXY_IP** |   Proxy IP برای VLESS و Trojan    |        :x:         |\n|  **PREFIX**  | NAT64 Prefix برای VLESS و Trojan  |        :x:         |\n| **SUB_PATH** |     مسیر لینک‌های اشتراک شخصی     |        :x:         |\n| **FALLBACK** | دامنه‌ی پوششی برای VLESS و Trojan |        :x:         |\n| **DOH_URL**  |    DOH برای عملیات داخلی ورکر     |        :x:         |\n\n---\n\n## تعداد ستاره‌ها به مرور زمان\n\n[![تعداد ستاره‌ها به مرور زمان](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel.svg?variant=adaptive)](https://starchart.cc/bia-pain-bache/BPB-Worker-Panel)\n"
  },
  {
    "path": "docs/fa/docs/installation/pages-manual.md",
    "content": "# :material-new-box:{ .md .middle } راه‌اندازی دستی Pages با آپلود مستقیم\n\nبه شدت توصیه میکنم از [روش نصب خودکار](./wizard.md) برای ساخت پنل استفاده کنید تا از خطاهای کلادفلر مثل 1101، خطاهای موقع ساخت و همچنین اتلاف وقت جلوگیری کنید.\n\n## مراحل ساخت\n\n### ۱. ساخت حساب کاربری Cloudflare\n\nاگه اکانت Cloudflare ندارید، از [اینجا](https://dash.cloudflare.com/sign-up) یه اکانت بسازید. فقط یه ایمیل برای ثبت‌نام لازمه. به خاطر محدودیت‌های Cloudflare، بهتره از یه ارائه‌دهنده ایمیل معتبر مثل Gmail استفاده کنید.\n\n### ۲. ساخت پروژه Pages\n\nفایل زیپ Worker رو از [اینجا](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip) دانلود کنید.\n\nتوی اکانت  Cloudflare از نوارابزار سمت چپ به بخش  `Compute & AI` برید و `Workers & Pages` رو انتخاب کنید `Create application` رو بزنید. اون پایین نوشته `Looking to deploy Pages?`. اینجا `Get started` رو بزنید و از صفحه‌ای که باز میشه `Drag and drop your files` رو استارت کنید.\n\nیه `Project Name` وارد کنید که دامنه پنل شما رو تشکیل می‌ده.\n\n!!! danger \"خطر\"\n    اسمی انتخاب کنید که کلمه `bpb` توش نباشه، چون ممکنه Cloudflare اکانتتون رو شناسایی کنه و خطای `1101` بده.\n\nروی `Create Project` کلیک کنید و بعد در قسمت آپلود `file` رو انتخاب کنید و فایل زیپی که دانلود کردید رو آپلود کنید.\n\nحالا روی `Deploy site` و بعد `Continue to project` کلیک کنید.\n\nپروژه‌تون ساخته شده، ولی هنوز کار نمی‌کنه. از صفحه `Deployment`، توی بخش `Production`، روی `Visit` کلیک کنید.\n\n!!! warning \"هشدار\"\n    Cloudflare ممکنه تا 5 دقیقه طول بکشه تا دامنه Pages رو راه‌اندازی کنه. اگه URL فوراً در دسترس نبود، نگران نباشید.\n\nیه ارور می‌بینید که می‌گه باید UUID و Trojan Password رو تنظیم کنید. یه لینک ارائه شده؛ اونو توی مرورگر باز کنید و برای مرحله بعد نگه دارید.\n\n![Pages Application](../images/generate-secrets.jpg)\n\n### ۳. ساخت KV\n\nمطابق تصویر از نوارابزار به صفحه `Workers KV` برید:\n\n![KV dashboard](../images/nav-dash-kv.jpg)\n\nروی `Create Instance` کلیک کنید، یه اسم بذارید (مثلاً Test) و `Create` رو بزنید.\n\nبرگردید به بخش `Workers & Pages` و پروژه Pages که ساختید رو باز کنید. به بخش `Settings` برید، همون‌طور که توی تصویر زیر نشون داده شده:\n\n![Pages Application](../images/settings-functions.jpg)\n\nتوی بخش `Bindings`، روی `Add` کلیک کنید و `KV namespace` رو انتخاب کنید. `Variable name` رو حتماً `kv` (دقیقاً به همین شکل) بذارید و برای `KV namespace` اون KV که قبلاً ساختید رو انتخاب کنید. روی `Save` کلیک کنید.\n\n![Pages Application](../images/pages-bind-kv.jpg)\n\nتنظیمات KV تموم شد.\n\n### ۴. تنظیم UUID ، پسورد Trojanو مسیر امن لینک‌های اشتراک\n\nبه صفحه `Secrets generator` که از قبل باز کرده بودید برید و `Copy all` رو بزنید. به داشبورد کلادفلر برگردید، توی همون بخش `Settings`، قسمت `Variables and Secrets` رو پیدا کنید. روی `Add` کلیک کنید. توی خونه `Variable name`  کپی کنید و `Save` رو بزنید. این کار بصورت خودکار هر 3 متغیر رو به پنل شما اضافه میکنه.\n\nاز بالای صفحه روی `Create deployment` کلیک کنید و همون فایل زیپ رو دوباره مثل قبل آپلود کنید.\n\nبرگردید به صفحه `Deployments`، توی بخش `Production` روی `Visit` کلیک کنید، `panel/` رو به آخر URL اضافه کنید و وارد پنل بشید.\n\nتنظیمات و نکات اضافی توی [راهنمای اصلی](../configuration/index.md) هست. نصب تموم شده و تنظیمات پیشرفته زیر اختیاریه.\n\n## تنظیمات پیشرفته (اختیاری)\n\n### ثابت کردن Proxy IP\n\nبه‌صورت پیش‌فرض، این کد از تعداد زیادی Proxy IP به‌صورت تصادفی استفاده می‌کنه و برای هر اتصال به آدرس‌های Cloudflare (که بخش زیادی از وب رو شامل می‌شه) یه IP جدید انتخاب می‌کنه. این تغییر IP ممکنه برای بعضی‌ها، مخصوصاً تریدرها، مشکل‌ساز باشه. از نسخه 2.3.5 به بعد، می‌تونید Proxy IP رو از طریق پنل تغییر بدید و اشتراک رو آپدیت کنید. ولی روش زیر توصیه می‌شه:\n\n!!! note \"یادداشت\"\n    اگه Proxy IP رو از طریق پنل تغییر بدید و اون IP از کار بیفته، باید IP دیگه‌ای بذارید و اشتراک رو آپدیت کنید. این یعنی اگه کانفیگ اهدا کرده باشید، کاربرا نمی‌تونن کانفیگ رو آپدیت کنن چون اشتراک ندارن. برای همین، این روش فقط برای استفاده شخصی خوبه. روش‌های دیگه نیازی به آپدیت اشتراک ندارن.\n\nتوی بخش `Settings` پروژه، قسمت `Variables and Secrets` رو باز کنید:\n\n![Pages Application](../images/pages-env-vars.jpg)\n\nروی `Add` کلیک کنید و توی خونه اول `PROXY_IP` (با حروف بزرگ) رو وارد کنید.\nمی‌تونید  Proxy IP های موجود رو با کلیک روی آیکون کنار فیلد `Proxy IPs / Domains` در پنل یا مراجعه به `/proxy-ip` در مرورگر ببینید، که IP ها رو بر اساس منطقه و ISP فهرست می‌کنه.\n\n![Pages Application](../images/proxy-ips.jpg)\n\n!!! info \"راهنمایی\"\n    برای استفاده از چند Proxy IP، اونا رو با کاما جدا کنید، مثلاً:\n    > 151.213.181.145, 5.163.51.41, bpb.yousef.isegaro.com\n\nIPها رو توی قسمت `Value` وارد کنید و `Save` کنید. از بالای صفحه روی `Create deployment` کلیک کنید و فایل زیپ رو دوباره آپلود کنید. تغییرات اعمال می‌شه.\n\n### ثابت کردن NAT64 Prefix\n\nبه‌صورت پیش‌فرض، این کد از تعدادی NAT64 Prefix  به‌صورت تصادفی استفاده می‌کنه و برای هر اتصال به آدرس‌های Cloudflare (که بخش زیادی از وب رو شامل می‌شه) یه IP جدید انتخاب می‌کنه. این تغییر IP ممکنه برای بعضی‌ها، مخصوصاً تریدرها، مشکل‌ساز باشه. از نسخه 3.4.2 به بعد، می‌تونیداز پنل  Mode روی NAT64  قرار بدید و NAT64 Prefix  رو از طریق پنل تغییر بدید و اشتراک رو آپدیت کنید. ولی روش زیر توصیه می‌شه:\n\n!!! note \"یادداشت\"\n    اگه NAT64 Prefix رو از طریق پنل تغییر بدید و اون IP از کار بیفته، باید IP دیگه‌ای بذارید و اشتراک رو آپدیت کنید. این یعنی اگه کانفیگ اهدا کرده باشید، کاربرا نمی‌تونن کانفیگ رو آپدیت کنن چون اشتراک ندارن. برای همین، این روش فقط برای استفاده شخصی خوبه. روش‌های دیگه نیازی به آپدیت اشتراک ندارن.\n\nتوی بخش `Settings` پروژه، قسمت `Variables and Secrets` رو باز کنید، روی `Add` کلیک کنید و توی خونه اول `PREFIX` (با حروف بزرگ) رو وارد کنید. IPها رو می‌تونید از لینک زیر بگیرید که IPهای مناطق و ISPهای مختلف رو نشون می‌ده:\n\n```text\nhttps://github.com/bia-pain-bache/BPB-Worker-Panel/blob/main/NAT64Prefixes.md\n```\n\n!!! info \"راهنمایی\"\n    برای استفاده از چند IP، اونا رو با ویرگول جدا کنید، مثلاً:\n    > [2602:fc59:b0:64::], [2602:fc59:11:64::]\n\nIPها رو توی قسمت `Value` وارد کنید و `Save` کنید. از بالای صفحه روی `Create deployment` کلیک کنید و فایل زیپ رو دوباره آپلود کنید. تغییرات اعمال می‌شه.\n\n### تنظیم دامنه Fallback\n\nبه‌صورت پیش‌فرض، وقتی دامنه اصلی Pages رو باز می‌کنید، به سایت تست سرعت Cloudflare می‌ره. برای تغییرش، همون مراحل Proxy IP رو دنبال کنید، ولی اسم متغیر رو `FALLBACK` بذارید و یه دامنه (بدون `https://` یا `http://`) به‌عنوان مقدار وارد کنید، مثلاً `www.speedtest.net` یا `npmjs.org`.\n\n### تغییر مسیر اشتراک‌ها\n\nمسیر پیش‌فرض لینک‌های اشتراک همون UUID هست که برای VLESS استفاده می‌شه. برای افزایش حریم خصوصی، می‌تونید این مسیر رو تغییر بدید. همون مراحل بالا رو دنبال کنید، ولی اسم متغیر رو `SUB_PATH` بذارید. توی صفحه Secrets generator، یه گزینه `Random Subscription URI path` هست که یه مسیر براتون تولید می‌کنه؛ می‌تونید ازش استفاده کنید یا یه مقدار دلخواه (با کاراکترهای مجاز) بذارید.\n\n### افزودن دامنه اختصاصی\n\nتوی داشبورد Cloudflare، از نوارابزار سمت چپ به `Compute & AI` > `Workers & Pages` برید و پنلتون رو انتخاب کنید. توی تب `Custom domains`، روی `Set up a custom domain` کلیک کنید. یه دامنه وارد کنید (باید قبلاً دامنه رو خریده باشید و توی همین اکانت فعال کرده باشید). مثلاً اگه دامنه `bpb.com` دارید، می‌تونید خود دامنه یا یه زیردامنه مثل `xyz.bpb.com` رو وارد کنید. روی `Continue` و بعد `Activate domain` کلیک کنید.\n\nتوی رکوردهای DNS دامنه‌تون، یه CNAME DNS Record برای `xyz.bpb.com` اضافه کنید که به دامنه Pages اشاره کنه. Cloudflare بعد از یه مدت کوتاه Pages رو به دامنه‌تون متصل می‌کنه. بعدش می‌تونید از آدرس `https://xyz.bpb.com/panel` وارد پنلتون بشید و اشتراک‌های جدید بگیرید.\n\n## به‌روزرسانی پنل\n\nبرای به‌روزرسانی پنل، فایل زیپ جدید رو از [اینجا](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip) دانلود کنید. توی اکانت Cloudflare، از نوارابزار سمت چپ به `Compute & AI` > `Workers & Pages` برید، پروژه Pages رو انتخاب کنید، روی `Create deployment` کلیک کنید و فایل زیپ جدید رو آپلود کنید.\n"
  },
  {
    "path": "docs/fa/docs/installation/wizard.md",
    "content": "# :material-new-box:{ .md .middle } راه‌اندازی خودکار Workers و Pages\n\nبرای ساده‌تر کردن فرآیند راه‌اندازی و جلوگیری از اشتباهات کاربرها، پروژه [BPB Wizard](https://github.com/bia-pain-bache/BPB-Wizard) راه‌اندازی شده. این ابزار از هر دو روش Workers و Pages پشتیبانی می‌کنه و استفاده ازش خیلی توصیه می‌شه.\n\n![ویزارد BPB](../images/wizard.jpg)\n\n## ۱. حساب Cloudflare\n\nبرای استفاده از این روش، فقط به یه حساب Cloudflare نیاز دارید. می‌تونید [از اینجا ثبت‌نام کنید](https://dash.cloudflare.com/sign-up/). بعدش یادتون نره ایمیلتون رو چک کنید تا حساب رو تأیید کنید.\n\n## ۲. نصب پنل BPB\n\n!!! warning\n    اگه به VPN وصل هستید، قطعش کنید.\n\n### Windows و macOS\n\nبر اساس سیستم‌عاملتون، [فایل ZIP رو دانلود کنید](https://github.com/bia-pain-bache/BPB-Wizard/releases/latest)، از حالت فشرده خارج کنید و برنامه رو اجرا کنید.\n\n### Android (Termux) و Linux\n\nکاربرای اندروید که Termux رو روی گوشیشون نصب کردن، می‌تونن با کپی کردن کد زیر توی Termux پنل BPB رو نصب کنن:\n\n```bash title=\"Termux - Linux\"\nbash <(curl -fsSL https://raw.githubusercontent.com/bia-pain-bache/BPB-Wizard/main/install.sh)\n```\n\n!!! warning\n    حتماً Termux رو فقط از [منبع رسمی](https://github.com/termux/termux-app/releases/latest) دانلود و نصب کنید. نصب از گوگل پلی ممکنه مشکلاتی ایجاد کنه.\n\nاولین سؤال اینه که می‌خواید یه پنل جدید بسازید یا پنل‌های موجود توی حساب رو ویرایش کنید.\n\nبعدش وارد حساب Cloudflare شما می‌شه و ازتون اجازه دسترسی میخواد، به ترمینال برمی‌گرده و چندتا سؤال ازتون می‌پرسه.\n\nاگه گزینه ۱ رو انتخاب کرده باشید، یه سری سؤال درباره تنظیمات می‌پرسه. می‌تونید از مقادیر پیش‌فرض استفاده کنید یا مقادیر خودتون رو وارد کنید. در نهایت، پنل رو توی مرورگرتون باز می‌کنه — همین!\n\n!!! note\n    برای هر تنظیماتی که می‌پرسه، یه مقدار امن و شخصی‌سازی‌شده از قبل براتون ساخته. می‌تونید فقط Enter بزنید تا همون رو قبول کنه و بره سؤال بعدی، یا مقادیر خودتون رو وارد کنید.\n\nاگه گزینه ۲ رو انتخاب کرده باشید، لیست پروژه‌های Workers و Pages ساخته شده رو نشون می‌ده و می‌تونید انتخاب کنید کدوم رو ویرایش کنید.\n\n## به‌روزرسانی پنل\n\nفقط Wizard رو اجرا کنید و برای سؤال اول گزینه ۲ رو انتخاب کنید. یه لیست از اسم پروژه‌های توی حسابتون نشون می‌ده — می‌تونید هر کدوم رو به آخرین نسخه آپدیت کنید یا کلا حذف کنید.\n"
  },
  {
    "path": "docs/fa/docs/installation/workers-manual.md",
    "content": "# :material-new-box:{ .md .middle } راه‌اندازی دستی Workers\n\nبه شدت توصیه میکنم از [روش نصب خودکار](./wizard.md) برای ساخت پنل استفاده کنید تا از خطاهای کلادفلر مثل 1101، خطاهای موقع ساخت و همچنین اتلاف وقت جلوگیری کنید.\n\n## مراحل راه‌اندازی\n\n### ۱. ساخت حساب کاربری Cloudflare\n\nاگه اکانت Cloudflare ندارید، از [اینجا](https://dash.cloudflare.com/sign-up) یه اکانت بسازید. فقط یه ایمیل برای ثبت‌نام لازمه. به خاطر محدودیت‌های Cloudflare، بهتره از یه ارائه‌دهنده ایمیل معتبر مثل Gmail استفاده کنید.\n\n### ۲. ساخت Worker\n\nاول، کد Worker رو از [اینجا](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.js) دانلود کنید.\n\nتوی اکانت  Cloudflare از نوارابزار سمت چپ به بخش  `Compute & AI` برید و `Workers & Pages` رو انتخاب کنید `Create application` رو بزنید و `Start with Hello World!` رو بزنید.\n\nیه اسم دلخواه وارد کنید که دامنه پنل شما رو تشکیل می‌ده و `Deploy` کنید.\n\n!!! danger \"خطر\"\n    اسمی انتخاب کنید که کلمه `bpb` توش نباشه، چون ممکنه Cloudflare اکانتتون رو شناسایی کنه و خطای `1101` بده.\n\nبعد روی `Edit code` کلیک کنید. توی نوار کناری سمت چپ، فایل `worker.js` رو حذف کنید و فایل جدیدی که دانلود کردید رو آپلود کنید. چون کد بزرگ شده، کپی و پیست کردن توی موبایل سخته، به تصویر زیر نگاه کنید و درست آپلود کنید. توی موبایل، منوی کناری رو باز کنید، روی Explorer کلیک طولانی کنید و `Upload...` رو بزنید.\n\n![Mobile upload](../images/worker-mobile-upload.jpg)\n\nدر نهایت، Worker رو `Deploy` کنید و صبر کنید تا پیغام سبز `Version saved` رو ببینید.\n\n!!! tip \"نکته\"\n    توجه کنید که فرآیند به‌روزرسانی پنل دقیقاً همینه، فایل‌ قدیمی رو حذف می‌کنید، فایل‌ جدید رو آپلود می‌کنید و Deploy می‌کنید. تنظیمات دست‌‌‌‌نخورده می‌مونن، فقط پنل بروزرسانی می‌شه.\n\nاول، بالای داشبورد روی `Visit` کلیک کنید. یه ارور می‌بینید که می‌گه باید اول UUID و Trojan Password رو تنظیم کنید. یه لینک (Secrets generator) داره، اونو توی مرورگر باز کنید و برای مرحله بعد نگه دارید.\n\n![Generate secrets](../images/generate-secrets.jpg)\n\n### ۳. ساخت KV\n\nبرگردید به داشبورد Worker و این مراحل رو دنبال کنید:\n\n![Workers dashboard](../images/nav-worker-dash.jpg)\n\nمطابق تصویر از نوارابزار به صفحه `Workers KV` برید:\n\n![KV dashboard](../images/nav-dash-kv.jpg)\n\nروی `Create Instance` کلیک کنید، یه اسم بذارید (مثلاً Test) و `Create` رو بزنید.\n\nدوباره از نوارابزار به بخش `Workers & Pages`  برید، Worker  که ساختید رو باز کنید، به  `Bindings`برید و `Add binding`  رو بزنید و `KV namespace` رو انتخاب کنید و `Add Binding` رو بزنید. از منوی کشویی، KV که تازه ساختید (مثلاً Test) رو انتخاب کنید. مهم اینه که خونه اول یا `Variable name` باید حتماً `kv` باشه. بعد دوباره ` Add Binding` رو بزنید.\n\n![Bind KV](../images/workers-bind-kv.jpg)\n\n### ۴. تنظیم UUID ، پسورد Trojanو مسیر امن لینک‌های اشتراک\n\nبه صفحه `Secrets generator` که از قبل باز کرده بودید برید و `Copy all` رو بزنید. به داشبورد کلادفلر برگردید، توی همون بخش `Settings`، قسمت `Variables and Secrets` رو پیدا کنید. روی `Add` کلیک کنید. توی خونه `Variable name`  کپی کنید و `Deploy` رو بزنید. این کار بصورت خودکار هر 3 متغیر رو به پنل شما اضافه میکنه.\n\nدوباره توی داشبورد Worker روی `Visit` کلیک کنید، توی مرورگر speedtest رو می‌بینید، فقط `/panel` رو به آخر آدرس اضافه کنید و پنلتون رو ببینید:\n\nازتون می‌خواد یه رمز جدید بذارید و وارد بشید — همین!  \nنصب تموم شده؛ بقیه اطلاعات پایین شاید برای همه لازم نباشه.  \nبرای آموزش تنظیمات و نکات، به [راهنمای اصلی](../configuration/index.md) مراجعه کنید.\n\n## تنظیمات پیشرفته (اختیاری)\n\n### ثابت کردن Proxy IP\n\nبه‌صورت پیش‌فرض، این کد از تعداد زیادی Proxy IP به‌صورت تصادفی استفاده می‌کنه و برای هر اتصال به آدرس‌های Cloudflare (که بخش زیادی از وب رو شامل می‌شه) یه IP جدید انتخاب می‌کنه. این تغییر IP ممکنه برای بعضی‌ها، مخصوصاً تریدرها، مشکل‌ساز باشه. از نسخه 2.3.5 به بعد، می‌تونید Proxy IP رو از طریق پنل تغییر بدید و اشتراک رو آپدیت کنید. ولی روش زیر توصیه می‌شه:\n\n!!! note \"یادداشت\"\n    اگه Proxy IP رو از طریق پنل تغییر بدید و اون IP از کار بیفته، باید IP دیگه‌ای بذارید و اشتراک رو آپدیت کنید. این یعنی اگه کانفیگ اهدا کرده باشید، کاربرا نمی‌تونن کانفیگ رو آپدیت کنن چون اشتراک ندارن. برای همین، این روش فقط برای استفاده شخصی خوبه. روش‌های دیگه نیازی به آپدیت اشتراک ندارن.\n\nبرای تغییر Proxy IP، به `Workers & Pages` برید، Worker خودتون رو باز کنید، بعد به `Settings` → `Variables and Secrets` برید:\n\n![Workers env variable](../images/workers-variables.jpg)\n\nروی `Add` کلیک کنید، `PROXY_IP` (با حروف بزرگ) رو به‌عنوان `Variable name` بنویسید.\nمی‌تونید  Proxy IP های موجود رو با کلیک روی آیکون کنار فیلد `Proxy IPs / Domains` در پنل یا مراجعه به `/proxy-ip` در مرورگر ببینید، که IP ها رو بر اساس منطقه و ISP فهرست می‌کنه.\n\n![Proxy IPs](../images/proxy-ips.jpg)\n\n!!! info \"راهنمایی\"\n    برای استفاده از چند Proxy IP، اونا رو با کاما جدا کنید، مثلاً:\n    > 151.213.181.145, 5.163.51.41, bpb.yousef.isegaro.com\n\nIPها رو توی قسمت `Value` وارد کنید و `Deploy` کنید.\n\n### ثابت کردن NAT64 Prefix\n\nبه‌صورت پیش‌فرض، این کد از تعدادی NAT64 Prefix  به‌صورت تصادفی استفاده می‌کنه و برای هر اتصال به آدرس‌های Cloudflare (که بخش زیادی از وب رو شامل می‌شه) یه IP جدید انتخاب می‌کنه. این تغییر IP ممکنه برای بعضی‌ها، مخصوصاً تریدرها، مشکل‌ساز باشه. از نسخه 3.4.2 به بعد، می‌تونیداز پنل  Mode روی NAT64  قرار بدید و NAT64 Prefix  رو از طریق پنل تغییر بدید و اشتراک رو آپدیت کنید. ولی روش زیر توصیه می‌شه:\n\n!!! note \"یادداشت\"\n    اگه NAT64 Prefix رو از طریق پنل تغییر بدید و اون IP از کار بیفته، باید IP دیگه‌ای بذارید و اشتراک رو آپدیت کنید. این یعنی اگه کانفیگ اهدا کرده باشید، کاربرا نمی‌تونن کانفیگ رو آپدیت کنن چون اشتراک ندارن. برای همین، این روش فقط برای استفاده شخصی خوبه. روش‌های دیگه نیازی به آپدیت اشتراک ندارن.\n\nتوی بخش `Settings` پروژه، قسمت `Variables and Secrets` رو باز کنید، روی `Add` کلیک کنید و توی خونه اول `PREFIX` (با حروف بزرگ) رو وارد کنید. IPها رو می‌تونید از لینک زیر بگیرید که IPهای مناطق و ISPهای مختلف رو نشون می‌ده:\n\n```text\nhttps://github.com/bia-pain-bache/BPB-Worker-Panel/blob/main/NAT64Prefixes.md\n```\n\n!!! info \"راهنمایی\"\n    برای استفاده از چند IP، اونا رو با ویرگول جدا کنید، مثلاً:\n    > [2602:fc59:b0:64::], [2602:fc59:11:64::]\n\nIPها رو توی قسمت `Value` وارد کنید و `Deploy` کنید.\n\n### تنظیم دامنه Fallback\n\nبه‌صورت پیش‌فرض، وقتی دامنه اصلی Worker رو باز می‌کنید، به سایت تست سرعت Cloudflare می‌ره. برای تغییرش، همون مراحل Proxy IP رو دنبال کنید، ولی اسم متغیر رو `FALLBACK` بذارید و یه دامنه (بدون `https://` یا `http://`) به‌عنوان مقدار وارد کنید، مثلاً `www.speedtest.net` یا `npmjs.org`.\n\n### تغییر مسیر اشتراک‌ها\n\nمسیر پیش‌فرض لینک‌های اشتراک همون UUID هست که برای VLESS استفاده می‌شه. برای افزایش حریم خصوصی، می‌تونید این مسیر رو تغییر بدید. همون مراحل بالا رو دنبال کنید، ولی اسم متغیر رو `SUB_PATH` بذارید. Secrets generator توی `/secrets` یه مقدار `Random Subscription URI path` می‌ده که می‌تونید ازش استفاده کنید یا یه مقدار دلخواه (با کاراکترهای مجاز) بذارید.\n\n### افزودن دامنه اختصاصی\n\nتوی داشبورد Cloudflare، از `Compute & AI` > `Workers & Pages` ورکر خودتون رو باز کنید. به `Settings` برید و بالای صفحه، `Domains & Routes` رو می‌بینید. روی `Add +` کلیک کنید، بعد `Custom domain` رو انتخاب کنید.\n\nیه دامنه وارد کنید (باید دامنه رو داشته باشید و توی همین اکانت فعال کرده باشید).  \nفرض کنید دامنه‌تون `bpb.com` هست. می‌تونید دامنه اصلی یا یه زیردامنه مثل `xyz.bpb.com` رو وارد کنید، بعد روی `Add domain` کلیک کنید.\n\nCloudflare Worker رو به دامنه‌تون متصل می‌کنه (ممکنه یه کم طول بکشه — می‌گن تا 24 ساعت).\n\nبعد دوباره روی `Add +` کلیک کنید، ولی این بار `Route` رو انتخاب کنید. از بخش `Zone` دامنه‌تون رو انتخاب کنید و توی بخش `Route` به این شکل وارد کنید:\n\n```title=\"Route\"\n*bpb.com/*\n```\n\nبعدش می‌تونید از آدرس `https://xyz.bpb.com/panel` وارد پنلتون بشید و اشتراک‌های جدید بگیرید.\n\n!!! tip \"نکته\"\n    - اگه یه دامنه به Worker وصل کنید، احتمالاً ترافیک شما نامحدود می‌شه.\n    - پنل‌های Worker از پورت‌های غیر TLS مثل 80، 8080 و غیره پشتیبانی می‌کنن. ولی وقتی دامنه اختصاصی اضافه می‌کنید، این پورت‌ها کار نمی‌کنن و توی پنل در دسترس نیستن.\n\n## به‌روزرسانی پنل\n\nبرای به‌روزرسانی پنل، فایل worker.js جدید رو از [اینجا](https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.js) دانلود کنید. توی اکانت Cloudflare، از نوارابزار به `Compute & AI` > `Workers & Pages` برید، پروژه Worker رو انتخاب کنید، ویرایش کنید، فایل قدیمی رو حذف کنید، فایل جدید رو آپلود کنید و Deploy کنید.\n"
  },
  {
    "path": "docs/fa/docs/usage/doh.md",
    "content": "# :material-playlist-check:{ .md .middle } DNS over HTTPS (DoH)\n\nاز اونجایی که بیشتر سرورهای عمومی معروف DoH توسط فایروال‌ها مسدود شدن، می‌تونیم از domain fronting استفاده کنیم تا بتونیم با موفقیت فایروال رو دور بزنیم. BPB DoH فقط از سرورهای استاندارد DoH بر اساس RFC 8484 پشتیبانی می‌کنه که معمولاً در فرمت `https://domain/dns-query` هستن. مثلاً گوگل دو نوع DoH داره: `https://dns.google/dns-query` که RFC 8484 هست و `https://dns.google/resolve` که API JSON هست. BPB فقط از نوع اول پشتیبانی می‌کنه.\n\nبرای تغییر DoH اصلی، می‌تونید یک متغیر محیطی به نام `DOH_URL` رو در تنظیمات worker تعریف کنید و DoH دلخواهتون رو اونجا وارد کنید.\n\n!!! warning \"هشدار\"\n    از BPB DoH برای remote DNS استفاده نکنید، وگرنه درخواست‌های worker‌تون رو هدر می‌دید. بهتره در مرورگرها یا کلاینت‌های مبتنی بر DoH مثل Intra و Rethink ازش استفاده کنید.\n"
  },
  {
    "path": "docs/fa/docs/usage/fragment.md",
    "content": "# :material-playlist-check:{ .md .middle } اشتراک Fragment\n\n![Fragment subscription](../images/fragment-sub.jpg)\n\n!!! tip \"**مزایای کانفیگ‌های Fragment**\"\n    - حتی اگه دامنه اختصاصی یا دامنه Worker توسط ISP فیلتر بشه، بازم وصل می‌شه.\n    - پایداری و سرعت رو برای همه اپراتورها، به‌خصوص اونایی که با Cloudflare مشکل دارن، بهبود می‌ده.\n\n## Fragment برای Xray\n\nاین بخش برای برنامه‌هایی که از هسته Xray استفاده می‌کنن، مثل v2rayNG، MahsaNG و v2rayN PRO، کاربرد داره. کانفیگ‌های واردشده با یه علامت `F` توی اسمشون مشخص شدن. این اشتراک همون تعداد کانفیگ‌های اشتراک **Normal** رو داره، اما با تنظیمات Fragment که توی پنل قابل تنظیمن، به‌علاوه کانفیگ‌های **Best Fragment** و **Workerless**. هر تغییری توی تنظیمات پنل با به‌روزرسانی اشتراک روی همه کانفیگ‌ها اعمال می‌شه.\n\n???+ question \"کانفیگ Workerless چیه؟\"\n    کانفیگ Workerless بدون استفاده از Worker، خیلی از وب‌سایت‌ها و برنامه‌های محدودشده (مثل YouTube، Twitter، Google Play و...) رو باز می‌کنه. توجه کنید که این کانفیگ IP شما رو تغییر نمی‌ده، پس برای فعالیت‌هایی که به امنیت یا ناشناس بودن نیاز دارن، مناسب نیست. تنظیمات پنل روی این کانفیگ اعمال می‌شه، به جز Chain Proxy.\n\n???+ question \"کانفیگ Best Fragment چیه؟\"\n    کانفیگ Best Fragment هجده تنظیم مختلف Fragment رو تست می‌کنه و بر اساس عملکرد اپراتور شما، سریع‌ترین رو انتخاب می‌کنه. این حالت‌های Fragment برای پوشش همه سناریوهای ممکن طراحی شدن و کانفیگ هر 30 ثانیه همه حالت‌ها رو تست می‌کنه و به بهترینش متصل می‌شه. جزئیات پیشرفته تنظیمات Fragment رو می‌تونید [اینجا](../configuration/fragment.md) ببینید.\n\n## Fragment برای sing-box\n\nاز نسخه 1.12.0 به بعد شما میتونید از این ساب استفاده کنید، روی تمامی برنامه‌هایی که از هسته sing-box استفاده میکنن هم قابل استفاده هست مثل husi یا v2rayN که هسته sing-box هم داره.\n"
  },
  {
    "path": "docs/fa/docs/usage/index.md",
    "content": "# :material-lan-connect:{ .md .middle } نحوه استفاده\n\nقبل از هر چیز برنامه خودتون رو به آخرین نسخه بروزرسانی کنید و یا به جدول زیر مراجعه کنید. اینها برنامه‌های تست شده و معتبر برای استفاده از BPB هستن و پشتیبانی میشن، میتونید با مسئولیت خودتون از برنامه‌های دیگه استفاده کنید.\n\n|       Client        |      Version      | پشتیبانی از Fragment | پشتیبانی از Warp Pro |\n| :-----------------: | :---------------: | :------------------: | :------------------: |\n|     **v2rayNG**     | 1.10.11 یا بالاتر |   :material-check:   |   :material-check:   |\n|     **MahsaNG**     |   14 یا بالاتر    |   :material-check:   |   :material-check:   |\n|     **v2rayN**      | 7.14.6 یا بالاتر  |   :material-check:   |   :material-check:   |\n|   **v2rayN-PRO**    |   1.9 یا بالاتر   |   :material-check:   |   :material-check:   |\n|    **Sing-box**     | 1.11.2 یا بالاتر  |   :material-close:   |   :material-close:   |\n|    **Streisand**    | 1.6.60 یا بالاتر  |   :material-check:   |   :material-check:   |\n|   **Clash Meta**    |                   |   :material-close:   |   :material-check:   |\n| **Clash Verge Rev** |                   |   :material-close:   |   :material-check:   |\n|     **FLClash**     |                   |   :material-close:   |   :material-check:   |\n|   **AmneziaVPN**    |                   |   :material-close:   |   :material-check:   |\n|    **WG Tunnel**    |                   |   :material-close:   |   :material-check:   |\n\nاز طرف دیگه، اشتراک‌های **Warp** و **Warp Pro** که کانفیگ‌های **WireGuard** ارائه می‌دن، نیاز به اسکن Endpoints دارن. می‌تونید به [این راهنما](../configuration/warp.md) مراجعه کنید تا یاد بگیرید چطور Endpoint رو اسکن کنید.\n\n<div class=\"grid cards\" markdown>\n\n- :material-playlist-check:{ .lg .middle } **اشتراک Normal**\n\n    ---\n\n    اتصال به کانفیگ‌های **VLESS** و **Trojan** با تنظیمات کامل، بدون نیاز به تنظیم دستی.\n\n    [:octicons-arrow-right-24: شروع](normal.md)\n\n- :material-playlist-check:{ .lg .middle } **اشتراک Fragment**\n\n    ---\n\n    اتصال حتی اگه دامنه‌تون بلاک شده باشه، با تنظیمات کامل.\n\n    [:octicons-arrow-right-24: شروع](fragment.md)\n\n- :material-playlist-check:{ .lg .middle } **اشتراک Raw یا خام**\n\n    ---\n\n    کانفیگ‌های خام **VLESS** و **Trojan** بدون اعمال تنظیمات پنل.\n\n    [:octicons-arrow-right-24: شروع](raw.md)\n\n- :material-playlist-check:{ .lg .middle } **اشتراک Warp**\n\n    ---\n\n    اتصال به سرورهای Cloudflare Warp بعد از اسکن چند Endpoint.\n\n    [:octicons-arrow-right-24: شروع](warp.md)\n\n- :material-playlist-check:{ .lg .middle } **اشتراک Warp Pro**\n\n    ---\n\n    اتصال به Cloudflare Warp حتی اگه Warp روی اپراتورتون فیلتر شده باشه.\n\n    [:octicons-arrow-right-24: شروع](warp-pro.md)\n\n- :material-playlist-check:{ .lg .middle } **DNS over HTTPS**\n\n    ---\n\n    برای استفاده در مرورگر یا برنامه‌های بر پایه DNS مثل Intra و Rethink\n\n    [:octicons-arrow-right-24: شروع](doh.md)\n\n</div>\n"
  },
  {
    "path": "docs/fa/docs/usage/my-ip.md",
    "content": "# :material-fingerprint:{ .md .middle } IP من\n\n![My IP](../images/my-ip.jpg)\n\nبعد از اتصال به پراکسی، دکمه رفرش رو بزنید و این بخش رو چک کنید تا IPهاتون رو ببینید. جدول دو ردیف نشون می‌ده:\n\n* ردیف اول IP شما رو برای آدرس‌های هدف Cloudflare نشون می‌ده. اگه Proxy IP تنظیم شده باشه، این IP برای آدرس‌های Cloudflare استفاده می‌شه، ولی برای بقیه آدرس‌های هدف، یه IP تصادفی از Cloudflare استفاده می‌شه. اینطوری می‌تونید چک کنید که Proxy IP درست کار می‌کنه یا نه.\n* اگه از کانفیگ‌های Warp استفاده می‌کنید، هر دو ردیف باید یه IP یکسان رو نشون بدن.\n\n!!! warning \"هشدار\"\n    برای اینکه این بخش کار کنه، افزونه‌هایی مثل `uBlock` یا `AdGuard` رو غیرفعال کنید.\n"
  },
  {
    "path": "docs/fa/docs/usage/normal.md",
    "content": "# :material-playlist-check:{ .md .middle } اشتراک Normal\n\n![Normal subscription](../images/normal-sub.jpg)\n\nاین اشتراک به‌صورت خودکار تنظیمات بهینه VLESS و Trojan، سرورهای DNS، قوانین مسیریابی و غیره رو اعمال می‌کنه تا خطاهای کاربر به حداقل برسه. همچنین شامل یه کانفیگ **Best Ping** هم می‌شه.\n\n???+ question \"کانفیگ **Best Ping** چیه؟\"\n    این کانفیگ همه کانفیگ‌های پنل رو جمع‌آوری می‌کنه و هر 30 ثانیه بررسی می‌کنه تا سریع‌ترینشون رو پیدا کنه و بهش متصل بشه. اگه IPهای تمیز اضافه کرده باشید، پروتکل Trojan رو فعال کرده باشید یا پورت‌های اضافی انتخاب کرده باشید، اینا هم توی کانفیگ **Best Ping** لحاظ می‌شن. این قابلیت توی اشتراک‌های Fragment و Warp هم در دسترسه.\n\nبا اعمال تنظیمات مسیریابی، این اشتراک حدود 90٪ تبلیغات ایرانی و خارجی رو بلاک می‌کنه، وب‌سایت‌های ایرانی، چینی و روسی رو دور می‌زنه (پس نیازی نیست برای درگاه‌های پرداخت VPN رو خاموش کنید)، LAN رو دور می‌زنه، محتوای پورن و پروتکل QUIC رو بلاک می‌کنه و برای اشتراک‌های Sing-box و Clash، محتوای فیشینگ و بدافزار رو به‌خوبی بلاک می‌کنه.\n"
  },
  {
    "path": "docs/fa/docs/usage/raw.md",
    "content": "# :material-playlist-check:{ .md .middle } اشتراک Raw یا خام\n\n![Raw subscription](../images/raw-sub.jpg)\n\nدر مقایسه با این کانفیگ‌ها، اشتراک **Normal** به شدت توصیه می‌شه، چون همه تنظیمات پنل رو به‌صورت خودکار اعمال می‌کنه و نیازی به پیکربندی دستی نداره. توجه کنید که اکثرتنظیمات پنل  در این اشتراک اعمال نمی‌شن و باید به‌صورت دستی در برنامه تنظیم بشن.\n\n!!! warning \"هشدار\"\n    این کانفیگ‌ها به نسبت بقیه اشتراک‌ها تعداد درخواست ورکر بیشتری هدر میدن و خطای ورکر بیشتری هم ایجاد می‌کنن،\n\n!!! warning \"هشدار\"\n    حتماً باید Remote DNS  رو در برنامه‌تون روی یک سرور DNS از نوع DoH، DoT یا TCP تنظیم کنید، وگرنه کانفیگ‌های این اشتراک کار نمی‌کنن. چند مثال:\n    ```title=\"DoH\"\n    https://8.8.8.8/dns-query\n    ```\n    ```title=\"DoT\"\n    tls://8.8.8.8  \n    ```\n    ```title=\"TCP\"\n    tcp://8.8.8.8  \n    ```\n\n!!! warning \"هشدار\"\n    برای استفاده از این اشتراک، باید Mux رو در برنامه‌ای که استفاده می‌کنید غیرفعال کنید.\n"
  },
  {
    "path": "docs/fa/docs/usage/warp-pro.md",
    "content": "# :material-playlist-check:{ .md .middle } اشتراک Warp Pro\n\n![Warp Pro subscription](../images/warp-pro-sub.jpg)\n\nپیشرفت‌های اخیر تیم‌های Xray و GFW-Knocker و Mihomo روی هسته‌های Xray و Clash باعث شده که Warp در ایران بشه و برنامه‌هایی مثل **MahsaNG**، **v2rayN-PRO** و **Clash Meta** به وجود بیان. این پیشرفت‌ها اتصالات Warp رو برای شرایط خاص ایران بهینه می‌کنن، شبیه کارهایی که تیم **Oblivion** انجام داده. اشتراک **Warp Pro** به پنل اضافه شده و تنظیماتش قابل سفارشی‌سازیه.\n\nمقادیر بهینه برای هر اپراتور به‌صورت تجربی بدست میان و ممکنه با گذشت زمان تغییر کنن، مثل تنظیمات Fragment. مقادیر پیش‌فرض تست شدن و در حال حاضر کار می‌کنن؛ فقط کافیه Endpoints تمیز رو اسکن و تنظیم کنید.\n\nمی‌تونید کانفیگ‌های Warp Pro رو به‌صورت فایل زیپ دانلود کنید و توی برنامه **WG Tunnel** استفاده کنید. توی برنامه، روی `+` کلیک کنید و فایل زیپ رو وارد کنید؛ هیچ تنظیمات اضافی برای اتصال کانفیگ‌ها لازم نیست. برای **Amnezia** هم روند مشابهه، ولی Amnezia فایل زیپ رو درست وارد نمی‌کنه. اول فایل زیپ رو استخراج کنید، بعد هر کانفیگ دلخواه رو توی Amnezia وارد کنید و متصل بشید.\n"
  },
  {
    "path": "docs/fa/docs/usage/warp.md",
    "content": "# :material-playlist-check:{ .md .middle } اشتراک‌ Warp\n\n![Warp subscriptions](../images/warp-sub.jpg)\n\nاین اشتراک شامل موارد زیره:\n\n* کانفیگ **Warp** با IPهای نود از IPهای Cloudflare منطقه شما.\n* کانفیگ **Warp on Warp (WoW)** با IPهای نود از IPهای Cloudflare خارجی (عمدتاً آلمان).\n* کانفیگ **Warp Best Ping** که به سریع‌ترین کانفیگ Warp متصل می‌شه.\n* کانفیگ **WoW Best Ping** که به سریع‌ترین کانفیگ WoW متصل می‌شه.\n\n!!! info \"راهنمایی\"\n    به‌صورت پیش‌فرض، یه کانفیگ Warp و یه کانفیگ WoW وجود داره که در ایران وصل نمیشن. با ویرایش **Endpoints** توی تنظیمات **Warp General**، می‌تونید بر اساس Endpoints مشخص‌شده، کانفیگ‌های Warp و WoW بیشتری اضافه کنید.\n\n    میتونید برای این کار با مراجعه به [دستورالعمل‌ها](../configuration/warp.md) از اسکنر استفاده کنید.\n\nمی‌تونید کانفیگ‌های Warp WireGuard رو به‌صورت فایل زیپ دانلود کنید و توی برنامه‌های WireGuard وارد کنید. توجه کنید که اکثر ISPها معمولاً Warp رو بلاک می‌کنن، پس فقط اگه اپراتور شما پروتکل WireGuard رو آزاد گذاشته، از این استفاده کنید.\n\nاشتراک Normal Warp ممکنه برای بعضی اپراتورها مثل MTN-Irancell خوب کار کنه، ولی برای بقیه، از اشتراک **Warp Pro** استفاده کنید.\n"
  },
  {
    "path": "docs/fa/mkdocs.yml",
    "content": "site_name: BPB Panel\nsite_url: https://bia-pain-bache.github.io\nrepo_url: https://github.com/bia-pain-bache/BPB-Worker-Panel\ncopyright: Copyright &copy; BPB\n\nuse_directory_urls: true\nsite_dir: ../../site/fa\nextra_css:\n  - stylesheet/extra.css\nextra_javascript:\n  - scripts/lang-switch.js\n\ntheme:\n  name: material\n  custom_dir: ../assets\n  logo: favicon.ico\n  favicon: favicon.ico\n  direction: rtl\n  language: fa\n  font:\n    text: Vazirmatn\n  palette:\n    - media: \"(prefers-color-scheme)\"\n      toggle:\n        icon: material/brightness-auto\n        name: Switch to light mode\n    - media: \"(prefers-color-scheme: light)\"\n      scheme: default \n      toggle:\n        icon: material/brightness-7\n        name: Switch to dark mode\n    - media: \"(prefers-color-scheme: dark)\"\n      scheme: slate\n      toggle:\n        icon: material/brightness-4\n        name: Switch to system preference\n  features:\n    - navigation.tabs\n    - navigation.tabs.sticky\n    - navigation.sections\n    - navigation.instant\n    - navigation.indexes\n    - navigation.top\n    - content.code.copy\n    - toc.integrate\n    - navigation.tracking\n\nmarkdown_extensions:\n  - admonition\n  - pymdownx.details\n  - pymdownx.superfences\n  - pymdownx.highlight:\n      anchor_linenums: true\n      line_spans: __span\n      pygments_lang_class: true\n  - pymdownx.inlinehilite\n  - pymdownx.snippets\n  - attr_list\n  - pymdownx.emoji:\n      emoji_index: !!python/name:material.extensions.emoji.twemoji\n      emoji_generator: !!python/name:material.extensions.emoji.to_svg\n  - md_in_html\n  \nextra:\n  alternate:\n    - name: English\n      lang: en\n      link: /BPB-Worker-Panel/\n  social:\n    - icon: fontawesome/brands/github\n      link: https://github.com/bia-pain-bache/BPB-Worker-Panel\n      name: Source code\n\nplugins:\n  - search\n\nnav:\n  - خانه: index.md\n  - راه‌اندازی:\n    - خودکار: installation/wizard.md\n    - Pages دستی: installation/pages-manual.md\n    - Workers دستی: installation/workers-manual.md\n  - راهنمای تنظیمات:\n    - configuration/index.md\n    - تنظیمات مشترک یا Common: configuration/common.md \n    - پروتکل‌های VLESS و Trojan: configuration/vless-trojan.md \n    - تنظیمات Fragment: configuration/fragment.md\n    - تنظیمات عمومی Warp: configuration/warp.md\n    - تنظیمات Warp PRO: configuration/warp-pro.md\n    - قوانین مسیریابی یا Routing Rules: configuration/routing-rules.md\n  - نحوه‌ی استفاده: \n    - usage/index.md\n    - اشتراک Normal: usage/normal.md\n    - اشتراک Fragment: usage/fragment.md\n    - اشتراک Raw: usage/raw.md\n    - اشتراک Warp: usage/warp.md\n    - اشتراک Warp PRO: usage/warp-pro.md\n    - DoH شخصی: usage/doh.md\n    - IP من: usage/my-ip.md\n  - سوالات متداول: faq.md"
  },
  {
    "path": "package.json",
    "content": "{\n\t\"name\": \"bpb-panel\",\n\t\"version\": \"4.1.3\",\n\t\"homepage\": \"https://github.com/bia-pain-bache/BPB-Worker-Panel\",\n\t\"license\": \"GPL-3.0\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"scripts\": {\n\t\t\"check\": \"tsc --noEmit\",\n\t\t\"build\": \"node scripts/build.js\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@eslint/css\": \"^0.8.1\",\n\t\t\"@eslint/js\": \"^9.28.0\",\n\t\t\"@eslint/markdown\": \"^6.5.0\",\n\t\t\"@types/node\": \"^24.7.2\",\n\t\t\"eslint\": \"^9.28.0\",\n\t\t\"typescript\": \"^5.9.3\"\n\t},\n\t\"dependencies\": {\n\t\t\"@cloudflare/workers-types\": \"^4.20251011.0\",\n\t\t\"esbuild\": \"^0.25.5\",\n\t\t\"glob\": \"^11.0.2\",\n\t\t\"globals\": \"^16.2.0\",\n\t\t\"html-minifier\": \"^4.0.0\",\n\t\t\"javascript-obfuscator\": \"latest\",\n\t\t\"jose\": \"^6.0.11\",\n\t\t\"jszip\": \"^3.10.1\",\n\t\t\"terser\": \"^5.42.0\"\n\t}\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n    \"include\": [\"src\"],\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"module\": \"esnext\",\n        \"types\": [\"@cloudflare/workers-types\"],\n        \"moduleResolution\": \"node\",\n        \"baseUrl\": \"src\",\n        \"strict\": true,\n        \"esModuleInterop\": true,\n        \"forceConsistentCasingInFileNames\": true,\n        \"skipLibCheck\": true,\n        \"resolveJsonModule\": true,\n        \"isolatedModules\": true,\n        \"paths\": {\n            \"@xray/*\": [\"cores/xray/*\"],\n            \"@sing-box/*\": [\"cores/sing-box/*\"],\n            \"@clash/*\": [\"cores/clash/*\"],\n            \"@utils\": [\"cores/utils\"],\n            \"@handlers\": [\"common/handlers\"],\n            \"@init\": [\"common/init\"],\n            \"@common\": [\"common/common\"],\n            \"@vless\": [\"protocols/websocket/vless\"],\n            \"@trojan\": [\"protocols/websocket/trojan\"],\n            \"@warp\": [\"protocols/warp\"]\n        }\n    }\n}\n"
  }
]