diff --git a/docs/en/config/dns.md b/docs/en/config/dns.md index 7349e57c..a03eef4e 100644 --- a/docs/en/config/dns.md +++ b/docs/en/config/dns.md @@ -62,13 +62,13 @@ If the domain currently being queried: "clientIP": "1.2.3.4" }, { - "address": "[https://8.8.8.8/dns-query](https://8.8.8.8/dns-query)", + "address": "https://8.8.8.8/dns-query", "domains": ["geosite:netflix"], "skipFallback": true, "queryStrategy": "UseIPv4" }, { - "address": "[https://1.1.1.1/dns-query](https://1.1.1.1/dns-query)", + "address": "https://1.1.1.1/dns-query", "domains": ["geosite:openai"], "skipFallback": true, "queryStrategy": "UseIPv6" @@ -152,9 +152,9 @@ The default value `UseIP` allows querying both A + AAAA records. When a query in ```json "dns": { "servers": [ - "[https://1.1.1.1/dns-query](https://1.1.1.1/dns-query)", + "https://1.1.1.1/dns-query", { - "address": "[https://8.8.8.8/dns-query](https://8.8.8.8/dns-query)", + "address": "https://8.8.8.8/dns-query", "domains": [ "geosite:netflix" ], @@ -162,7 +162,7 @@ The default value `UseIP` allows querying both A + AAAA records. When a query in "queryStrategy": "UseIPv4" // netflix domain queries A record }, { - "address": "[https://1.1.1.1/dns-query](https://1.1.1.1/dns-query)", + "address": "https://1.1.1.1/dns-query", "domains": [ "geosite:openai" ], @@ -191,9 +191,9 @@ Global `"queryStrategy": "UseIP"` does not conflict with sub-item `"queryStrateg ```json "dns": { "servers": [ - "[https://1.1.1.1/dns-query](https://1.1.1.1/dns-query)", + "https://1.1.1.1/dns-query", { - "address": "[https://8.8.8.8/dns-query](https://8.8.8.8/dns-query)", + "address": "https://8.8.8.8/dns-query", "domains": [ "geosite:netflix" ], diff --git a/docs/en/config/transport.md b/docs/en/config/transport.md index cc8374ae..1dae678c 100644 --- a/docs/en/config/transport.md +++ b/docs/en/config/transport.md @@ -307,10 +307,7 @@ Adjusts the underlying socket options of the connection used when querying ECH r "show": false, "target": "example.com:443", "xver": 0, - "serverNames": [ - "example.com", - "[www.example.com](https://www.example.com)" - ], + "serverNames": ["example.com", "www.example.com"], "privateKey": "", "minClientVer": "", "maxClientVer": "", diff --git a/docs/en/development/intro/compile.md b/docs/en/development/intro/compile.md index 1007203f..6ddee357 100644 --- a/docs/en/development/intro/compile.md +++ b/docs/en/development/intro/compile.md @@ -13,7 +13,7 @@ Install Golang: [golang.org/doc/install](https://golang.org/doc/install) ## Pull Xray Source Code ```bash -git clone [https://github.com/XTLS/Xray-core.git](https://github.com/XTLS/Xray-core.git) +git clone https://github.com/XTLS/Xray-core.git cd Xray-core && go mod download ``` @@ -22,7 +22,7 @@ cd Xray-core && go mod download Note: In network environments where Google cannot be accessed normally, dependencies cannot be pulled correctly. You need to set `GOPROXY` first: ```bash -go env -w GOPROXY=[https://goproxy.io](https://goproxy.io),direct +go env -w GOPROXY=https://goproxy.io,direct ``` ## Build Binary diff --git a/docs/en/document/document.md b/docs/en/document/document.md index d1cb4f8a..3ce8ff51 100644 --- a/docs/en/document/document.md +++ b/docs/en/document/document.md @@ -14,7 +14,7 @@ You can submit your changes to the documentation by following these steps: However, for complex edits, please use VSCode. Clone the documentation from your forked repository, for example: ```bash - git clone [https://github.com/your-github-username/Xray-docs-next.git](https://github.com/your-github-username/Xray-docs-next.git) + git clone https://github.com/your-github-username/Xray-docs-next.git ``` 3. Create a new branch based on the `main` branch, for example: diff --git a/docs/en/document/level-0/ch06-certificates.md b/docs/en/document/level-0/ch06-certificates.md index 652bed68..16e08bf2 100644 --- a/docs/en/document/level-0/ch06-certificates.md +++ b/docs/en/document/level-0/ch06-certificates.md @@ -24,7 +24,7 @@ Additionally, I trust that by now you are gradually becoming familiar with basic 2. Run the installation script ```shell - wget -O - [https://get.acme.sh](https://get.acme.sh) | sh + wget -O - https://get.acme.sh | sh ``` 3. Make the `acme.sh` command effective @@ -62,10 +62,10 @@ Before officially applying for a certificate, let's use a test command (`--issue 2. You should ultimately see a log similar to this: ```log - [Wed 30 Dec 2022 04:25:12 AM EST] Using ACME_DIRECTORY: [https://acme-staging-v02.api.letsencrypt.org/directory](https://acme-staging-v02.api.letsencrypt.org/directory) - [Wed 30 Dec 2022 04:25:13 AM EST] Using CA: [https://acme-staging-v02.api.letsencrypt.org/directory](https://acme-staging-v02.api.letsencrypt.org/directory) + [Wed 30 Dec 2022 04:25:12 AM EST] Using ACME_DIRECTORY: https://acme-staging-v02.api.letsencrypt.org/directory + [Wed 30 Dec 2022 04:25:13 AM EST] Using CA: https://acme-staging-v02.api.letsencrypt.org/directory [Wed 30 Dec 2022 04:25:13 AM EST] Create account key ok. - [Wed 30 Dec 2022 04:25:13 AM EST] Registering account: [https://acme-staging-v02.api.letsencrypt.org/directory](https://acme-staging-v02.api.letsencrypt.org/directory) + [Wed 30 Dec 2022 04:25:13 AM EST] Registering account: https://acme-staging-v02.api.letsencrypt.org/directory [Wed 30 Dec 2022 04:25:13 AM EST] Registered [Wed 30 Dec 2022 04:25:13 AM EST] ACCOUNT_THUMBPRINT='CU6qmPKuRqhyTAIrF4swosR375194z_1ddUlWef8xDc' [Wed 30 Dec 2022 04:25:13 AM EST] Creating domain key @@ -78,9 +78,9 @@ Before officially applying for a certificate, let's use a test command (`--issue [Wed 30 Dec 2022 04:25:25 AM EST] Success [Wed 30 Dec 2022 04:25:25 AM EST] Verify finished, start to sign. [Wed 30 Dec 2022 04:25:25 AM EST] Lets finalize the order. - [Wed 30 Dec 2022 04:25:25 AM EST] Le_OrderFinalize='[https://acme-staging-v02.api.letsencrypt.org/acme/finalize/490205995/7730242871](https://acme-staging-v02.api.letsencrypt.org/acme/finalize/490205995/7730242871)' + [Wed 30 Dec 2022 04:25:25 AM EST] Le_OrderFinalize='https://acme-staging-v02.api.letsencrypt.org/acme/finalize/490205995/7730242871' [Wed 30 Dec 2022 04:25:25 AM EST] Downloading cert. - [Wed 30 Dec 2022 04:25:25 AM EST] Le_LinkCert='[https://acme-staging-v02.api.letsencrypt.org/acme/cert/xujss5xt8i38waubafz2xujss5xt8i38waubz2](https://acme-staging-v02.api.letsencrypt.org/acme/cert/xujss5xt8i38waubafz2xujss5xt8i38waubz2)' + [Wed 30 Dec 2022 04:25:25 AM EST] Le_LinkCert='https://acme-staging-v02.api.letsencrypt.org/acme/cert/xujss5xt8i38waubafz2xujss5xt8i38waubz2' [Wed 30 Dec 2022 15:21:52 AM EST] Cert success. --BEGIN CERTIFICAT-- sxlYqPvWreKgD5b8JyOQX0Yg2MLoRUoDyqVkd31PthIiwzdckoh5eD3JU7ysYBtN @@ -127,7 +127,7 @@ Before officially applying for a certificate, let's use a test command (`--issue ```log vpsadmin@vps-server:~$ acme.sh --issue -d subdomain.yourdomain.com -w /home/vpsadmin/www/webpage --keylength ec-256 - [Wed 30 Dec 2022 15:22:51 AM EST] Using CA: [https://acme-v02.api.letsencrypt.org/directory](https://acme-v02.api.letsencrypt.org/directory) + [Wed 30 Dec 2022 15:22:51 AM EST] Using CA: https://acme-v02.api.letsencrypt.org/directory [Wed 30 Dec 2022 15:22:51 AM EST] Creating domain key [Wed 30 Dec 2022 15:22:51 AM EST] The domain key is here: /home/vpsadmin/.acme.sh/subdomain.yourdomain.com_ecc/subdomain.yourdomain.com.key [Wed 30 Dec 2022 15:22:51 AM EST] Single domain='subdomain.yourdomain.com' @@ -138,9 +138,9 @@ Before officially applying for a certificate, let's use a test command (`--issue [Wed 30 Dec 2022 15:22:51 AM EST] Success [Wed 30 Dec 2022 15:22:51 AM EST] Verify finished, start to sign. [Wed 30 Dec 2022 15:22:51 AM EST] Lets finalize the order. - [Wed 30 Dec 2022 15:22:51 AM EST] Le_OrderFinalize='[https://acme-v02.api.letsencrypt.org/acme/finalize/490205996/7730242872](https://acme-v02.api.letsencrypt.org/acme/finalize/490205996/7730242872)' + [Wed 30 Dec 2022 15:22:51 AM EST] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/490205996/7730242872' [Wed 30 Dec 2022 15:22:51 AM EST] Downloading cert. - [Wed 30 Dec 2022 15:22:51 AM EST] Le_LinkCert='[https://acme-v02.api.letsencrypt.org/acme/cert/vsxvk0oldnuobe51ayxz4dms62sk2dwmw9zhuw](https://acme-v02.api.letsencrypt.org/acme/cert/vsxvk0oldnuobe51ayxz4dms62sk2dwmw9zhuw)' + [Wed 30 Dec 2022 15:22:51 AM EST] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/vsxvk0oldnuobe51ayxz4dms62sk2dwmw9zhuw' [Wed 30 Dec 2022 15:22:51 AM EST] Cert success. --BEGIN CERTIFICAT-- sxlYqPvWreKgD5b8JyOQX0Yg2MLoRUoDyqVkd31PthIiwzdckoh5eD3JU7ysYBtN diff --git a/docs/en/document/level-0/ch07-xray-server.md b/docs/en/document/level-0/ch07-xray-server.md index d4f7ef1d..b3680ae4 100644 --- a/docs/en/document/level-0/ch07-xray-server.md +++ b/docs/en/document/level-0/ch07-xray-server.md @@ -34,7 +34,7 @@ At the time of writing, the installation script has a few small bugs when using 2. Download the installation script locally: ```shell - wget [https://github.com/XTLS/Xray-install/raw/main/install-release.sh](https://github.com/XTLS/Xray-install/raw/main/install-release.sh) + wget https://github.com/XTLS/Xray-install/raw/main/install-release.sh ``` 3. Execute the installation command: @@ -190,8 +190,8 @@ First, various configurations can refer to the [official VLESS configuration exa ```json // REFERENCE: - // [https://github.com/XTLS/Xray-examples](https://github.com/XTLS/Xray-examples) - // [https://xtls.github.io/config/](https://xtls.github.io/config/) + // https://github.com/XTLS/Xray-examples + // https://xtls.github.io/config/ // Common config files, whether server or client, have 5 parts. Plus newbie interpretation: // ┌─ 1*log Log Settings - What to write, where to write (evidence available when errors occur) // ├─ 2_dns DNS Settings - How to query DNS (prevent DNS pollution, prevent snooping, avoid matching domestic sites to foreign servers, etc.) diff --git a/docs/en/document/level-1/fallbacks-with-sni.md b/docs/en/document/level-1/fallbacks-with-sni.md index 831b59b7..d2bb1f27 100644 --- a/docs/en/document/level-1/fallbacks-with-sni.md +++ b/docs/en/document/level-1/fallbacks-with-sni.md @@ -61,7 +61,7 @@ The following operations need to be performed as the root user; using sudo may c ::: ```bash -curl [https://get.acme.sh](https://get.acme.sh) | sh # Install acme.sh +curl https://get.acme.sh | sh # Install acme.sh export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje" # Set API Token variable acme.sh --issue -d example.com -d *.example.com --dns dns_cf # Apply for certificate using DNS-01 validation mkdir /etc/ssl/xray # Create directory for certificates @@ -216,7 +216,7 @@ Nginx will be installed via the official repository. sudo apt install curl gnupg2 ca-certificates lsb-release echo "deb [arch=amd64] [http://nginx.org/packages/ubuntu](http://nginx.org/packages/ubuntu) `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list -curl -fsSL [https://nginx.org/keys/nginx_signing.key](https://nginx.org/keys/nginx_signing.key) | sudo apt-key add - +curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add - sudo apt update sudo apt install nginx ``` @@ -260,7 +260,7 @@ To install Caddy, please refer to [Install — Caddy Documentation](https://cadd To enable Caddy to obtain the visitor's real IP, you need to compile Caddy with the Proxy Protocol module. It is recommended to compile online directly on the Caddy website. ```bash -sudo curl -o /usr/bin/caddy "[https://caddyserver.com/api/download?os=linux&arch=amd64&p=github.com%2Fmastercactapus%2Fcaddy2-proxyprotocol&idempotency=79074247675458](https://caddyserver.com/api/download?os=linux&arch=amd64&p=github.com%2Fmastercactapus%2Fcaddy2-proxyprotocol&idempotency=79074247675458)" +sudo curl -o /usr/bin/caddy "https://caddyserver.com/api/download?os=linux&arch=amd64&p=github.com%2Fmastercactapus%2Fcaddy2-proxyprotocol&idempotency=79074247675458" sudo chmod +x /usr/bin/caddy ``` diff --git a/docs/en/document/level-2/nginx_or_haproxy_tls_tunnel.md b/docs/en/document/level-2/nginx_or_haproxy_tls_tunnel.md index e864a4b0..502bc63b 100644 --- a/docs/en/document/level-2/nginx_or_haproxy_tls_tunnel.md +++ b/docs/en/document/level-2/nginx_or_haproxy_tls_tunnel.md @@ -366,7 +366,7 @@ defaults timeout server 300s frontend tls-in - bind :::443 ssl crt /path/to/pem alpn h2,http/1.1 # haproxy uses pem for ssl decryption. pem is obtained by: cat [www.example.com](https://www.example.com).crt [www.example.com](https://www.example.com).key > [www.example.com](https://www.example.com).pem + bind :::443 ssl crt /path/to/pem alpn h2,http/1.1 # haproxy uses pem for ssl decryption. pem is obtained by: cat www.example.com.crt www.example.com.key > www.example.com.pem default_backend xray tcp-request inspect-delay 5s tcp-request content accept if HTTP @@ -409,7 +409,7 @@ global group root daemon - # Adjust HTTP/2 performance. Set relevant items when encountering HTTP/2 performance issues. For more settings, see the tune.h2 section of the Haproxy documentation [https://docs.haproxy.org/2.7/configuration.html](https://docs.haproxy.org/2.7/configuration.html) + # Adjust HTTP/2 performance. Set relevant items when encountering HTTP/2 performance issues. For more settings, see the tune.h2 section of the Haproxy documentation https://docs.haproxy.org/2.7/configuration.html tune.h2.initial-window-size 536870912 # Initial window size. Recommended to set. Default is 65536 bytes. Larger values may require some load time during traffic bursts. Adjust based on network speed. tune.h2.max-concurrent-streams 512 # Number of multiplexed streams. Set as needed. Default is 100. Generally no need to set (official recommendation is not to change). @@ -653,7 +653,7 @@ defaults timeout server 300s frontend tls-in - bind :::443 tfo allow-0rtt ssl crt /path/to/server.pem verify optional ca-file /path/to/fullchain.crt crt /path/to/[www.example.com](https://www.example.com).pem alpn h2,http/1.1 + bind :::443 tfo allow-0rtt ssl crt /path/to/server.pem verify optional ca-file /path/to/fullchain.crt crt /path/to/www.example.com.pem alpn h2,http/1.1 use_backend xray if { ssl_fc_sni tunnel.example.com } { ssl_c_used } { ssl_fc_alpn -i h2 } { path_beg /tunnel } use_backend server1 if { ssl_fc_sni atunnel.example.com } { ssl_c_used } { ssl_fc_alpn -i h2 } { path_beg /path2 } use_backend server2 if { ssl_fc_sni btunnel.example.com } { ssl_c_used } { ssl_fc_alpn -i h2 } { path_beg /path3 } diff --git a/docs/en/document/level-2/tproxy_ipv4_and_ipv6.md b/docs/en/document/level-2/tproxy_ipv4_and_ipv6.md index 5e74a290..ee4f1e55 100644 --- a/docs/en/document/level-2/tproxy_ipv4_and_ipv6.md +++ b/docs/en/document/level-2/tproxy_ipv4_and_ipv6.md @@ -76,7 +76,7 @@ If the Xray program is not installed on the side router, you can manually downlo "port": 443, "users": [ { - "id": "uuid", // Fill in UUID. Can be generated by typing 'xray uuid' in terminal; Arbitrary strings are also supported ([https://xtls.github.io/config/inbounds/vless.html#clientobject](https://xtls.github.io/config/inbounds/vless.html#clientobject)) + "id": "uuid", // Fill in UUID. Can be generated by typing 'xray uuid' in terminal; Arbitrary strings are also supported (https://xtls.github.io/en/config/inbounds/vless.html#clientobject) "encryption": "none", "flow": "xtls-rprx-vision" } @@ -94,7 +94,7 @@ If the Xray program is not installed on the side router, you can manually downlo // Note: must be tlsSettings when using xtls-rprx-vision flow "allowInsecure": false, "serverName": "yourdomain.domain", // Change to your own domain - "fingerprint": "chrome" // Recommended to check Release notes for this setting: [https://github.com/XTLS/Xray-core/releases/tag/v1.7.3](https://github.com/XTLS/Xray-core/releases/tag/v1.7.3) + "fingerprint": "chrome" // Recommended to check Release notes for this setting: https://github.com/XTLS/Xray-core/releases/tag/v1.7.3 } } }, @@ -136,13 +136,13 @@ If the Xray program is not installed on the side router, you can manually downlo "Your_VPS_Domain": "Your_VPS_IP" // If 'address' in outbound proxy is a domain: fill VPS IPv4 if you want proxy via IPv4, fill VPS IPv6 if via IPv6; If 'address' is an IP, skip this line. }, "servers": [ - "[https://1.1.1.1/dns-query](https://1.1.1.1/dns-query)", + "https://1.1.1.1/dns-query", { "address": "119.29.29.29", "domains": ["geosite:cn"], "expectIPs": ["geoip:cn"] }, - "[https://dns.google/dns-query](https://dns.google/dns-query)", + "https://dns.google/dns-query", "223.5.5.5", "localhost" ] @@ -211,7 +211,7 @@ If the Xray program is not installed on the side router, you can manually downlo "domainStrategy": "IPIfNonMatch", "rules": [ { - // Block CN IP to improve security, or you can route CN traffic into Warp, see [https://xtls.github.io/document/level-2/warp.html](https://xtls.github.io/document/level-2/warp.html) + // Block CN IP to improve security, or you can route CN traffic into Warp, see https://xtls.github.io/en/document/level-2/warp.html "ip": ["geoip:cn"], "outboundTag": "block" } @@ -242,7 +242,7 @@ If the Xray program is not installed on the side router, you can manually downlo "certificates": [ { "certificateFile": "/etc/ssl/private/fullchain.crt", - "keyFile": "/etc/ssl/private/crt.key" // Refer to the Beginner's Guide to fill in the path of the generated fullchain.crt and cert.key here ([https://xtls.github.io/document/level-0/ch06-certificates.html#_6-4-%E6%AD%A3%E5%BC%8F%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7](https://xtls.github.io/document/level-0/ch06-certificates.html#_6-4-%E6%AD%A3%E5%BC%8F%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7)) + "keyFile": "/etc/ssl/private/crt.key" // Refer to the Beginner's Guide to fill in the path of the generated fullchain.crt and cert.key here (https://xtls.github.io/en/document/level-0/ch06-certificates.html#_6-4-official-certificate-issuance) } ] } diff --git a/docs/ru/document/document.md b/docs/ru/document/document.md index 33c10bc0..d03f84fd 100644 --- a/docs/ru/document/document.md +++ b/docs/ru/document/document.md @@ -14,7 +14,7 @@ Однако для сложных изменений обязательно используйте VSCode. Склонируйте документацию из вашего форка, например: ```bash - git clone [https://github.com/ваше-имя-пользователя/Xray-docs-next.git](https://github.com/ваше-имя-пользователя/Xray-docs-next.git) + git clone https://github.com/ваше-имя-пользователя/Xray-docs-next.git ``` 3. Создайте новую ветку на основе ветки `main`, например: