qKY-|$s$EX5tqRe1-&qHtMLE_hL~S%70#y*epR3p%9QrZl)FwU%mOSYK
zb081=(F;|#4zw@HwF*TwK@URv)%ypd9P3rB9_AB)>ImRx82svuhm7z{Cth>lza$X=
z=0lI*wQLXmG0f^ka;*hOwdCO7;ONn#aj#~`d?G*uh`>z*$h9}I2qn#&IdkO5k+_Gl
zrV$Y!0z}|C0_56S1_G9|qehJaW}sUxZEHb}wnU)p2#{-Q839<%ju|rsn2i`Qf=k<4
zkfSXTC_4h=+R!6F7q!3)7nio7k)t6IAOa=-9zsn6Ko_;chYttWa%o!=dNd{iB}V|H
z;R=ELeCMl<7GqHha>Ww}W5 K(0*y
zWL7~0h(PHPAlH_D2oL}wKm-y%fLxmZ$gF}05P{MoK&~zQ5Fh|VfCwaj0J$~+kXZ#0
zAOfXFfLvSpAwU3#01-$40dj2uAhQZ0Km
+XTLS 与 TLS 有相同的安全性, 配置方式也和TLS一致. 点击此处查看[XTLS的技术细节剖析](../../xtls)
+
+::: danger
+TLS / XTLS 是目前最安全的传输加密方案, 且外部看来流量类型和正常上网具有一致性.
+启用 XTLS 并且配置合适的XTLS流控模式, 可以在保持和 TLS 相同的安全性的前提下, 性能达到数倍甚至十几倍的提升.
+当 `security` 的值从'tls'改为'xtls'时, 只需将`tlsSettings` 修改成为 `xtlsSettings`
+:::
+
+> `tcpSettings`: [TcpObject](../../transports/tcp)
+
+当前连接的 TCP 配置,仅当此连接使用 TCP 时有效。配置内容与上面的全局配置相同。
+
+> `kcpSettings`: [KcpObject](../../transports/mkcp)
+
+当前连接的 mKCP 配置,仅当此连接使用 mKCP 时有效。配置内容与上面的全局配置相同。
+
+> `wsSettings`: [WebSocketObject](../../transports/websocket)
+
+当前连接的 WebSocket 配置,仅当此连接使用 WebSocket 时有效。配置内容与上面的全局配置相同。
+
+> `httpSettings`: [HttpObject](../../transports/h2)
+
+当前连接的 HTTP/2 配置,仅当此连接使用 HTTP/2 时有效。配置内容与上面的全局配置相同。
+
+> `quicSettings`: [QUICObject](../../transports/quic)
+
+当前连接的 QUIC 配置,仅当此连接使用 QUIC 时有效。配置内容与上面的全局配置相同。
+
+> `grpcSettings`: [GRPCObject](../../transports/grpc)
+
+当前连接的 gRPC 配置,仅当此连接使用 gRPC 时有效。配置内容与上面的全局配置相同。
+
+> `dsSettings`: [DomainSocketObject](../../transports/domainsocket)
+
+当前连接的 Domain socket 配置,仅当此连接使用 Domain socket 时有效。配置内容与上面的全局配置相同。
+
+> `sockopt`: [SockoptObject](#sockoptobject)
+
+透明代理相关的具体配置。
+
+
+### TLSObject
+
+```json
+{
+ "serverName": "xray.com",
+ "allowInsecure": false,
+ "alpn": [
+ "h2",
+ "http/1.1"
+ ],
+ "minVersion": "1.2",
+ "maxVersion": "1.3",
+ "preferServerCipherSuites": true,
+ "cipherSuites": "此处填写你需要的加密套件名称,每个套件名称之间用:进行分隔",
+ "certificates": [],
+ "disableSystemRoot": false,
+ "enableSessionResumption": false
+}
+```
+
+> `serverName`: string
+
+指定服务器端证书的域名,在连接由 IP 建立时有用。
+
+当目标连接由域名指定时,比如在 Socks inbound接收到了域名,或者由 Sniffing 功能探测出了域名,这个域名会自动用于 `serverName`,无须手动配置。
+
+> `alpn`: \[ string \]
+
+一个字符串数组,指定了 TLS 握手时指定的 ALPN 数值。默认值为 `["h2", "http/1.1"]`。
+
+> `minVersion`: \[ string \]
+
+minVersion为可接受的最小SSL/TLS版本。
+
+> `maxVersion`: \[ string \]
+
+maxVersion为可接受的最大SSL/TLS版本。
+
+> `preferServerCipherSuites`: true | false
+
+指示服务器选择客户端最喜欢的密码套件 或 服务器最优选的密码套件。
+
+如果为true则为使用服务器的最优选的密码套件
+
+> `cipherSuites`: \[ string \]
+
+CipherSuites用于配置受支持的密码套件列表, 每个套件名称之间用:进行分隔.
+
+你可以在[这里](https://golang.org/src/crypto/tls/cipher_suites.go#L500)或[这里](https://golang.org/src/crypto/tls/cipher_suites.go#L44)找到golang加密套件的名词和说明
+
+::: danger
+以上两项配置为非必要选项,正常情况下不影响安全性
+在未配置的情况下golang根据设备自动选择.
+若不熟悉, 请勿配置此选项, 填写不当引起的问题自行负责
+:::
+
+> `allowInsecure`: true | false
+
+是否允许不安全连接(仅用于客户端)。默认值为 `false`。
+
+当值为 `true` 时,Xray 不会检查远端主机所提供的 TLS 证书的有效性。
+
+::: danger
+出于安全性考虑,这个选项不应该在实际场景中选择true,否则可能遭受中间人攻击。
+:::
+
+> `disableSystemRoot`: true | false
+
+是否禁用操作系统自带的 CA 证书。默认值为 `false`。
+
+当值为 `true` 时,Xray 只会使用 `certificates` 中指定的证书进行 TLS 握手。当值为 `false` 时,Xray 只会使用操作系统自带的 CA 证书进行 TLS 握手。
+
+> `enableSessionResumption`: true | false
+
+此参数的设置为false时, ClientHello 里没有 session_ticket 这个扩展。
+通常来讲 go 语言程序的 ClientHello 里并没有用到这个扩展, 因此建议保持默认值。
+默认值为 `false`。
+
+> `certificates`: \[ [CertificateObject](#certificateobject) \]
+
+证书列表,其中每一项表示一个证书(建议 fullchain)。
+
+::: tip
+如果要在 ssllibs 或者 myssl 获得 A/A+ 等级的评价, 请参考[这里](https://github.com/XTLS/Xray-core/discussions/56#discussioncomment-215600).
+:::
+
+
+#### CertificateObject
+
+```json
+{
+ "ocspStapling": 3600,
+ "usage": "encipherment",
+ "certificateFile": "/path/to/certificate.crt",
+ "keyFile": "/path/to/key.key",
+ "certificate": [
+ "--BEGIN CERTIFICATE--",
+ "MIICwDCCAaigAwIBAgIRAO16JMdESAuHidFYJAR/7kAwDQYJKoZIhvcNAQELBQAw",
+ "ADAeFw0xODA0MTAxMzU1MTdaFw0xODA0MTAxNTU1MTdaMAAwggEiMA0GCSqGSIb3",
+ "DQEBAQUAA4IBDwAwggEKAoIBAQCs2PX0fFSCjOemmdm9UbOvcLctF94Ox4BpSfJ+",
+ "3lJHwZbvnOFuo56WhQJWrclKoImp/c9veL1J4Bbtam3sW3APkZVEK9UxRQ57HQuw",
+ "OzhV0FD20/0YELou85TwnkTw5l9GVCXT02NG+pGlYsFrxesUHpojdl8tIcn113M5",
+ "pypgDPVmPeeORRf7nseMC6GhvXYM4txJPyenohwegl8DZ6OE5FkSVR5wFQtAhbON",
+ "OAkIVVmw002K2J6pitPuJGOka9PxcCVWhko/W+JCGapcC7O74palwBUuXE1iH+Jp",
+ "noPjGp4qE2ognW3WH/sgQ+rvo20eXb9Um1steaYY8xlxgBsXAgMBAAGjNTAzMA4G",
+ "A1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAA",
+ "MA0GCSqGSIb3DQEBCwUAA4IBAQBUd9sGKYemzwPnxtw/vzkV8Q32NILEMlPVqeJU",
+ "7UxVgIODBV6A1b3tOUoktuhmgSSaQxjhYbFAVTD+LUglMUCxNbj56luBRlLLQWo+",
+ "9BUhC/ow393tLmqKcB59qNcwbZER6XT5POYwcaKM75QVqhCJVHJNb1zSEE7Co7iO",
+ "6wIan3lFyjBfYlBEz5vyRWQNIwKfdh5cK1yAu13xGENwmtlSTHiwbjBLXfk+0A/8",
+ "r/2s+sCYUkGZHhj8xY7bJ1zg0FRalP5LrqY+r6BckT1QPDIQKYy615j1LpOtwZe/",
+ "d4q7MD/dkzRDsch7t2cIjM/PYeMuzh87admSyL6hdtK0Nm/Q",
+ "--END CERTIFICATE--"
+ ],
+ "key": [
+ "--BEGIN RSA PRIVATE KEY--",
+ "MIIEowIBAAKCAQEArNj19HxUgoznppnZvVGzr3C3LRfeDseAaUnyft5SR8GW75zh",
+ "bqOeloUCVq3JSqCJqf3Pb3i9SeAW7Wpt7FtwD5GVRCvVMUUOex0LsDs4VdBQ9tP9",
+ "GBC6LvOU8J5E8OZfRlQl09NjRvqRpWLBa8XrFB6aI3ZfLSHJ9ddzOacqYAz1Zj3n",
+ "jkUX+57HjAuhob12DOLcST8np6IcHoJfA2ejhORZElUecBULQIWzjTgJCFVZsNNN",
+ "itieqYrT7iRjpGvT8XAlVoZKP1viQhmqXAuzu+KWpcAVLlxNYh/iaZ6D4xqeKhNq",
+ "IJ1t1h/7IEPq76NtHl2/VJtbLXmmGPMZcYAbFwIDAQABAoIBAFCgG4phfGIxK9Uw",
+ "qrp+o9xQLYGhQnmOYb27OpwnRCYojSlT+mvLcqwvevnHsr9WxyA+PkZ3AYS2PLue",
+ "C4xW0pzQgdn8wENtPOX8lHkuBocw1rNsCwDwvIguIuliSjI8o3CAy+xVDFgNhWap",
+ "/CMzfQYziB7GlnrM6hH838iiy0dlv4I/HKk+3/YlSYQEvnFokTf7HxbDDmznkJTM",
+ "aPKZ5qbnV+4AcQfcLYJ8QE0ViJ8dVZ7RLwIf7+SG0b0bqloti4+oQXqGtiESUwEW",
+ "/Wzi7oyCbFJoPsFWp1P5+wD7jAGpAd9lPIwPahdr1wl6VwIx9W0XYjoZn71AEaw4",
+ "bK4xUXECgYEA3g2o9WqyrhYSax3pGEdvV2qN0VQhw7Xe+jyy98CELOO2DNbB9QNJ",
+ "8cSSU/PjkxQlgbOJc8DEprdMldN5xI/srlsbQWCj72wXxXnVnh991bI2clwt7oYi",
+ "pcGZwzCrJyFL+QaZmYzLxkxYl1tCiiuqLm+EkjxCWKTX/kKEFb6rtnMCgYEAx0WR",
+ "L8Uue3lXxhXRdBS5QRTBNklkSxtU+2yyXRpvFa7Qam+GghJs5RKfJ9lTvjfM/PxG",
+ "3vhuBliWQOKQbm1ZGLbgGBM505EOP7DikUmH/kzKxIeRo4l64mioKdDwK/4CZtS7",
+ "az0Lq3eS6bq11qL4mEdE6Gn/Y+sqB83GHZYju80CgYABFm4KbbBcW+1RKv9WSBtK",
+ "gVIagV/89moWLa/uuLmtApyEqZSfn5mAHqdc0+f8c2/Pl9KHh50u99zfKv8AsHfH",
+ "TtjuVAvZg10GcZdTQ/I41ruficYL0gpfZ3haVWWxNl+J47di4iapXPxeGWtVA+u8",
+ "eH1cvgDRMFWCgE7nUFzE8wKBgGndUomfZtdgGrp4ouLZk6W4ogD2MpsYNSixkXyW",
+ "64cIbV7uSvZVVZbJMtaXxb6bpIKOgBQ6xTEH5SMpenPAEgJoPVts816rhHdfwK5Q",
+ "8zetklegckYAZtFbqmM0xjOI6bu5rqwFLWr1xo33jF0wDYPQ8RHMJkruB1FIB8V2",
+ "GxvNAoGBAM4g2z8NTPMqX+8IBGkGgqmcYuRQxd3cs7LOSEjF9hPy1it2ZFe/yUKq",
+ "ePa2E8osffK5LBkFzhyQb0WrGC9ijM9E6rv10gyuNjlwXdFJcdqVamxwPUBtxRJR",
+ "cYTY2HRkJXDdtT0Bkc3josE6UUDvwMpO0CfAETQPto1tjNEDhQhT",
+ "--END RSA PRIVATE KEY--"
+ ]
+}
+```
+> `ocspStapling`: number
+
+ocspStapling 检查更新时间间隔。 单位:秒
+
+> `usage`: "encipherment" | "verify" | "issue"
+
+证书用途,默认值为 `"encipherment"`。
+
+* `"encipherment"`:证书用于 TLS 认证和加密。
+* `"verify"`:证书用于验证远端 TLS 的证书。当使用此项时,当前证书必须为 CA 证书。
+* `"issue"`:证书用于签发其它证书。当使用此项时,当前证书必须为 CA 证书。
+
+::: tip TIP 1
+在 Windows 平台上可以将自签名的 CA 证书安装到系统中,即可验证远端 TLS 的证书。
+:::
+
+::: tip TIP 2
+当有新的客户端请求时,假设所指定的 `serverName` 为 `"xray.com"`,Xray 会先从证书列表中寻找可用于 `"xray.com"` 的证书,如果没有找到,则使用任一 `usage` 为 `"issue"` 的证书签发一个适用于 `"xray.com"` 的证书,有效期为一小时。并将新的证书加入证书列表,以供后续使用。
+:::
+
+::: tip TIP 3
+当 `certificateFile` 和 `certificate` 同时指定时,Xray 优先使用 `certificateFile`。`keyFile` 和 `key` 也一样。
+:::
+
+::: tip TIP 4
+当 `usage` 为 `"verify"` 时,`keyFile` 和 `key` 可均为空。
+:::
+
+::: tip TIP 5
+使用 `xray tls cert` 可以生成自签名的 CA 证书。
+:::
+
+::: tip TIP 6
+如已经拥有一个域名, 可以使用工具便捷的获取免费第三方证书,如[acme.sh](https://github.com/acmesh-official/acme.sh)
+:::
+
+> `certificateFile`: string
+
+证书文件路径,如使用 OpenSSL 生成,后缀名为 .crt。
+
+> `certificate`: \[ string \]
+
+一个字符串数组,表示证书内容,格式如样例所示。`certificate` 和 `certificateFile` 二者选一。
+
+> `keyFile`: string
+
+密钥文件路径,如使用 OpenSSL 生成,后缀名为 .key。目前暂不支持需要密码的 key 文件。
+
+> `key`: \[ string \]
+
+一个字符串数组,表示密钥内容,格式如样例如示。`key` 和 `keyFile` 二者选一。
+
+
+### SockoptObject
+
+```json
+{
+ "mark": 0,
+ "tcpFastOpen": false,
+ "tproxy": "off",
+ "domainStrategy": "AsIs",
+ "dialerProxy": ""
+}
+```
+
+> `mark`: number
+
+一个整数。当其值非零时,在ountbound连接以此数值上标记 SO_MARK。
+
+* 仅适用于 Linux 系统。
+* 需要 CAP_NET_ADMIN 权限。
+
+> `tcpFastOpen`: true | false
+
+是否启用 [TCP Fast Open](https://zh.wikipedia.org/wiki/TCP%E5%BF%AB%E9%80%9F%E6%89%93%E5%BC%80)。
+
+当其值为 `true` 时,强制开启 TFO;当其值为 `false` 时,强制关闭 TFO;当此项不存在时,使用系统默认设置。
+可用于inbound/ountbound。
+
+* 仅在以下版本(或更新版本)的操作系统中可用:
+ * Windows 10 (1604)
+ * Mac OS 10.11 / iOS 9
+ * Linux 3.16:系统已默认开启,无需配置。
+
+> `tproxy`: "redirect" | "tproxy" | "off"
+
+是否开启透明代理(仅适用于 Linux)。
+
+* `"redirect"`:使用 Redirect 模式的透明代理。支持所有基于 IPv4/6 的 TCP 和 UDP 连接。
+* `"tproxy"`:使用 TProxy 模式的透明代理。支持所有基于 IPv4/6 的 TCP 和 UDP 连接。
+* `"off"`:关闭透明代理。
+
+透明代理需要 Root 或 CAP\_NET\_ADMIN 权限。
+
+::: danger
+当 [Dokodemo-door](../../inbound-protocols/dokodemo) 中指定了 `followRedirect`为`true`,且 Sockopt设置中的`tproxy` 为空时,Sockopt设置中的`tproxy` 的值会被设为 `"redirect"`。
+:::
+
+> `domainStrategy`: "AsIs" | "UseIP" | "UseIPv4" | "UseIPv6"
+
+在之前的版本中,当 Xray 尝试使用域名建立系统连接时,域名的解析由系统完成,不受 Xray 控制。这导致了在 [非标准Linux环境中无法解析域名](https://github.com/v2ray/v2ray-core/issues/1909) 等问题。为此,Xray 1.3.1 为 Sockopt 引入了 Freedom 中的 domainStrategy,解决了此问题。
+
+在目标地址为域名时, 配置相应的值, SysteDailer 的行为模式如下:
+- `"AsIs"`: 通过系统DNS服务器解析获取IP, 向此域名发出连接。
+- `"UseIP"`、`"UseIPv4"` 和 `"UseIPv6"`: Xray 使用[内置 DNS 服务器](../dns)解析获取IP, 向此域名发出连接。
+
+默认值为 `"AsIs"`。
+
+::: danger
+如果启用了此功能,将有可能导致通过 `代理服务器` 代理 `解析代理服务器IP的查询` 的死循环。因此,**不建议** 经验不足的用户擅自使用此功能。
+:::
+
+> `dialerProxy`: ""
+
+一个出站代理的标识。当值不为空时,将使用指定的outbound发出连接。
+此选项可用于支持底层传输方式的链式转发。
+
+::: danger
+此选项与 PorxySettingsObject.Tag 不兼容
+:::
+
diff --git a/docs/config/examples/env.md b/docs/config/examples/env.md
new file mode 100644
index 000000000..3f8647925
--- /dev/null
+++ b/docs/config/examples/env.md
@@ -0,0 +1,49 @@
+# 环境变量
+
+Xray 提供以下环境变量以供修改 Xray 的一些底层配置。
+
+## XTLS 信息显示
+
+### VLESS
+
+- 名称:`xray.vless.xtls.show` 或 `XRAY_VLESS_XTLS_SHOW`。
+- 默认值:`""`。
+
+使用 VLESS 协议时,设置此环境变量为 true 时, 会在终端或日志中输出 XTLS 的相关信息.
+
+::: tip
+可打开此环境变量并根据是否有输出 XTLS 相关信息, 来确定 XTLS 是否成功被应用.
+:::
+
+### TROJAN
+
+- 名称:`xray.trojan.xtls.show` 或 `XRAY_TROJAN_XTLS_SHOW`。
+- 默认值:`""`。
+
+使用 trojan 协议时, 设置此环境变量为 true 时, 会在终端或日志中输出 XTLS 的相关信息.
+
+::: tip
+可打开此环境变量并根据是否有输出 XTLS 相关信息, 来确定 XTLS 是否成功被应用.
+:::
+
+
+## 资源文件路径
+
+- 名称:`xray.location.asset` 或 `XRAY_LOCATION_ASSET`。
+- 默认值:和 Xray 文件同路径。
+
+这个环境变量指定了一个文件夹位置,这个文件夹应当包含 geoip.dat 和 geosite.dat 文件。
+
+## 配置文件位置
+
+- 名称:`xray.location.config` 或 `XRAY_LOCATION_CONFIG`。
+- 默认值:和 Xray 文件同路径。
+
+这个环境变量指定了一个文件夹位置,这个文件夹应当包含 config.json 文件。
+
+## 多配置目录
+
+- 名称:`xray.location.confdir` 或 `XRAY_LOCATION_CONFDIR`。
+- 默认值:`""`。
+
+这个目录内的 `.json` 文件会按文件名顺序读取,作为多配置选项。
diff --git a/docs/config/examples/fallback.md b/docs/config/examples/fallback.md
new file mode 100644
index 000000000..d9e50f651
--- /dev/null
+++ b/docs/config/examples/fallback.md
@@ -0,0 +1,104 @@
+# Fallback 回落
+
+> **Fallback 是 Xray 的最强大功能之一, 可有效防止主动探测, 自由配置常用端口多服务共享**
+
+fallback 为 Xray 提供了高强度的防主动探测性, 并且具有独创的首包回落机制.
+
+fallback 也可以将不同类型的流量根据 path 进行分流, 从而实现一个端口, 多种服务共享.
+
+目前您可以在使用 VLESS 或者 trojan 协议时, 通过配置 fallbacks 来使用回落这一特性, 并且创造出非常丰富的组合玩法.
+
+
+## fallbacks 配置
+
+```json
+ "fallbacks": [
+ {
+ "dest": 80
+ }
+ ]
+```
+
+> `fallbacks`: \[ [FallbackObject](#fallbackobject) \]
+
+一个数组,包含一系列强大的回落分流配置。
+
+### FallbackObject
+
+```json
+{
+ "name": "",
+ "alpn": "",
+ "path": "",
+ "dest": 80,
+ "xver": 0
+}
+```
+
+**`fallbacks` 是一个数组,这里是其中一个子元素的配置说明。**
+
+`fallbacks` 项是可选的,只能用于 TCP+TLS 传输组合
+
+- 该项有子元素时,[Inbound TLS](../base/transport/#tlsobject) 需设置 `"alpn":["http/1.1"]`。\*\*
+
+通常,你需要先设置一组 `alpn` 和 `path` 均省略或为空的默认回落,然后再按需配置其它分流。
+
+VLESS 会把 TLS 解密后首包长度 < 18 或协议版本无效、身份认证失败的流量转发到 `dest` 指定的地址。
+
+其它传输组合必须删掉 `fallbacks` 项或所有子元素,此时也不会开启 Fallback,VLESS 会等待读够所需长度,协议版本无效或身份认证失败时,将直接断开连接。
+
+> `name`: string
+尝试匹配 TLS SNI(Server Name Indication),空为任意,默认为 ""
+
+> `alpn`: string
+
+尝试匹配 TLS ALPN 协商结果,空为任意,默认为 ""
+
+有需要时,VLESS 才会尝试读取 TLS ALPN 协商结果,若成功,输出 info `realAlpn =` 到日志。
+用途:解决了 Nginx 的 h2c 服务不能同时兼容 http/1.1 的问题,Nginx 需要写两行 listen,分别用于 1.1 和 h2c。
+注意:fallbacks alpn 存在 `"h2"` 时,[Inbound TLS](../base/transport/#tlsobject) 需设置 `"alpn":["h2","http/1.1"]`,以支持 h2 访问。
+
+::: tip
+Fallback 内设置的 "alpn" 是匹配实际协商出的 ALPN,而 Inbound TLS 设置的 "alpn" 是握手时可选的 ALPN 列表,两者含义不同。
+:::
+
+> `path`: string
+
+尝试匹配首包 HTTP PATH,空为任意,默认为空,非空则必须以 `"/"` 开头,不支持 h2c。
+
+智能:有需要时,VLESS 才会尝试看一眼 PATH(不超过 55 个字节;最快算法,并不完整解析 HTTP),若成功,输出 info `realPath =` 到日志。
+用途:分流其它 inbound 的 WebSocket 流量或 HTTP 伪装流量,没有多余处理、纯粹转发流量,理论性能比 Nginx 更强。
+
+注意:**fallbacks 所在入站本身必须是 TCP+TLS**,这是分流至其它 WS 入站用的,被分流的入站则无需配置 TLS。
+
+> `dest`: string | number
+
+决定 TLS 解密后 TCP 流量的去向,目前支持两类地址:(该项必填,否则无法启动)
+
+1. TCP,格式为 `"addr:port"`,其中 addr 支持 IPv4、域名、IPv6,若填写域名,也将直接发起 TCP 连接(而不走内置的 DNS)。
+2. Unix domain socket,格式为绝对路径,形如 `"/dev/shm/domain.socket"`,可在开头加 `"@"` 代表 [abstract](https://www.man7.org/linux/man-pages/man7/unix.7.html),`"@@"` 则代表带 padding 的 abstract。
+
+若只填 port,数字或字符串均可,形如 `80`、`"80"`,通常指向一个明文 http 服务(addr 会被补为 `"127.0.0.1"`)。
+
+> `xver`: number
+
+发送 [PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt),专用于传递请求的真实来源 IP 和端口,填版本 1 或 2,默认为 0,即不发送。若有需要建议填 1。
+
+目前填 1 或 2,功能完全相同,只是结构不同,且前者可打印,后者为二进制。Xray 的 TCP 和 WS 入站均已支持接收 PROXY protocol。
+
+
+::: warning
+若你正在 [配置 Nginx 接收 PROXY protocol](https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#configuring-nginx-to-accept-the-proxy-protocol),除了设置 proxy_protocol 外,还需设置 set_real_ip_from,否则可能会出问题。
+:::
+
+
+### 补充说明
+
+- 将匹配到最精确的子元素,与子元素的排列顺序无关。若配置了几个 alpn 和 path 均相同的子元素,则会以最后的为准。
+- 回落分流均是解密后 TCP 层的转发,而不是 HTTP 层,只在必要时检查首包 PATH。
+- 您可以查看更多的关于 Fallbacks 的使用技巧和心得
+ - [Fallbacks 功能简析](../../documents/level-1/fallbacks-lv1)
+
+
+## Fallbacks 设计理论
+hide:
+- toc
+# post: " \U0001F44B"
+title: Inbounds 可用协议列表
+weight: 5
+---
+{{% alert theme="warning" %}}**这个章节包含了目前所有可用于 Inbounds 的协议及具体配置细节.**{{% /alert %}}
+
+## 协议列表
+---
+>[Dokodemo-door](./dokodemo)
+Dokodemo door(任意门)可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。
+>[HTTP](./http)
+HTTP 协议
+>[Socks](./socks)
+标准 Socks 协议实现,兼容 [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)、Socks 4a 和 [Socks 5](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)。
+>[VLESS](./vless)
+VLESS 是一个无状态的轻量传输协议,可以作为 Xray 客户端和服务器之间的桥梁。
+>[VMess](./vmess)
+[VMess](../../develop/protocols/vmess) 是一个加密传输协议,,可以作为 Xray 客户端和服务器之间的桥梁。
+>[Trojan](./trojan)
+[Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议
+>[Shadowsocks](./shadowsocks)
+[Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议。
+
diff --git a/docs/config/inbound-protocols/dokodemo.md b/docs/config/inbound-protocols/dokodemo.md
new file mode 100644
index 000000000..ba64198d4
--- /dev/null
+++ b/docs/config/inbound-protocols/dokodemo.md
@@ -0,0 +1,61 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Dokodemo door
+weight: 2
+---
+
+Dokodemo door(任意门)可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。
+
+## InboundConfigurationObject
+
+---
+
+```json
+{
+ "address": "8.8.8.8",
+ "port": 53,
+ "network": "tcp",
+ "timeout": 0,
+ "followRedirect": false,
+ "userLevel": 0
+}
+```
+
+> `address`: address
+
+将流量转发到此地址。可以是一个 IP 地址,形如 `"1.2.3.4"`,或者一个域名,形如 `"xray.com"`。字符串类型。
+
+当 `followRedirect`(见下文)为 `true` 时,`address` 可为空。
+
+> `port`: number
+
+将流量转发到目标地址的指定端口,范围 \[1, 65535\],数值类型。必填参数。
+
+> `network`: "tcp" | "udp" | "tcp,udp"
+
+可接收的网络协议类型。比如当指定为 `"tcp"` 时,仅会接收 TCP 流量。默认值为 `"tcp"`。
+
+> `timeout`: number
+
+连接空闲的时间限制。单位为秒。默认值为 `300`。处理一个连接时,如果在 `timeout` 时间内,没有任何数据被传输,则中断该连接。
+
+> `followRedirect`: true | false
+
+当值为 `true` 时,dokodemo-door 会识别出由 iptables 转发而来的数据,并转发到相应的目标地址。
+
+可参考 [传输配置](../../base/transport#sockoptobject) 中的 `tproxy` 设置。
+
+> `userLevel`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+
+
+## 透明代理配置样例
+
+---
+
+此部分请参考[透明代理(TProxy)配置教程](../../../documents/level-2/tproxy)。
diff --git a/docs/config/inbound-protocols/http.md b/docs/config/inbound-protocols/http.md
new file mode 100644
index 000000000..e9c436329
--- /dev/null
+++ b/docs/config/inbound-protocols/http.md
@@ -0,0 +1,90 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: HTTP
+weight: 3
+---
+
+HTTP 协议。
+
+::: danger
+**http 协议没有对传输加密,不适宜经公网中传输,更容易成为被人用作攻击的肉鸡。**
+
+`http inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。
+
+
+::: tip
+**TIP 1**\
+ `http proxy` 只能代理 tcp 协议,udp 系的协议均不能通过。
+
+
+::: tip
+**TIP 2**\
+在 Linux 中使用以下环境变量即可在当前 session 使用全局 HTTP 代理(很多软件都支持这一设置,也有不支持的)。
+
+- `export http_proxy=http://127.0.0.1:8080/` (地址须改成你配置的 HTTP 入站代理地址)
+- `export https_proxy=$http_proxy`
+
+
+## InboundConfigurationObject
+---
+
+```json
+{
+ "timeout": 0,
+ "accounts": [
+ {
+ "user": "my-username",
+ "pass": "my-password"
+ }
+ ],
+ "allowTransparent": false,
+ "userLevel": 0
+}
+```
+
+> `timeout`: number
+
+连接空闲的时间限制。单位为秒。默认值为 `300`, 0 表示不限时。
+
+处理一个连接时,如果在 `timeout` 时间内,没有任何数据被传输,则中断该连接。
+
+> `accounts`: \[[AccountObject](#accountobject)\]
+
+一个数组,数组中每个元素为一个用户帐号。默认值为空。
+
+当 `accounts` 非空时,HTTP 代理将对入站连接进行 Basic Authentication 验证。
+
+> `allowTransparent`: true | false
+
+当为 `true` 时,会转发所有 HTTP 请求,而非只是代理请求。
+
+::: tip
+若配置不当,开启此选项会导致死循环。
+
+
+> `userLevel`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+
+
+### AccountObject
+---
+```json
+{
+ "user": "my-username",
+ "pass": "my-password"
+}
+```
+
+> `user`: string
+
+用户名,字符串类型。必填。
+
+> `pass`: string
+
+密码,字符串类型。必填。
+
diff --git a/docs/config/inbound-protocols/shadowsocks.md b/docs/config/inbound-protocols/shadowsocks.md
new file mode 100644
index 000000000..651c49335
--- /dev/null
+++ b/docs/config/inbound-protocols/shadowsocks.md
@@ -0,0 +1,68 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Shadowsocks
+weight: 8
+---
+
+[Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议,兼容大部分其它版本的实现。
+
+目前兼容性如下:
+
+* 支持 TCP 和 UDP 数据包转发,其中 UDP 可选择性关闭;
+* 推荐的加密方式:
+ * AES-256-GCM
+ * AES-128-GCM
+ * ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
+ * none 或 plain
+
+ 不推荐的加密方式:
+ * AES-256-CFB
+ * AES-128-CFB
+ * ChaCha20
+ * ChaCha20-IETF
+
+::: danger
+"none" 不加密方式下,服务器端不会验证 "password" 中的密码。为确保安全性, 一般需要加上 TLS 并在传输层使用安全配置,例如 WebSocket 配置较长的 path
+
+
+## InboundConfigurationObject
+
+```json
+{
+ "email": "love@xray.com",
+ "method": "aes-256-gcm",
+ "password": "密码",
+ "level": 0,
+ "network": "tcp"
+}
+```
+
+> `email`: string
+
+邮件地址,可选,用于标识用户
+
+> `method`: string
+
+必填。
+* 推荐的加密方式:
+ * AES-256-GCM
+ * AES-128-GCM
+ * ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
+ * none 或 plain
+
+> `password`: string
+
+必填,任意字符串。
+
+Shadowsocks 协议不限制密码长度,但短密码会更可能被破解,建议使用 16 字符或更长的密码。
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+`level` 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+> `network`: "tcp" | "udp" | "tcp,udp"
+
+可接收的网络协议类型。比如当指定为 `"tcp"` 时,仅会接收 TCP 流量。默认值为 `"tcp"`。
diff --git a/docs/config/inbound-protocols/socks.md b/docs/config/inbound-protocols/socks.md
new file mode 100644
index 000000000..c28cc8a91
--- /dev/null
+++ b/docs/config/inbound-protocols/socks.md
@@ -0,0 +1,82 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Socks
+weight: 4
+---
+
+标准 Socks 协议实现,兼容 [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)、Socks 4a 和 [Socks 5](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)。
+
+::: danger
+**socks 协议没有对传输加密,不适宜经公网中传输**
+
+`socks inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。
+
+
+## InboundConfigurationObject
+
+```json
+{
+ "auth": "noauth",
+ "accounts": [
+ {
+ "user": "my-username",
+ "pass": "my-password"
+ }
+ ],
+ "udp": false,
+ "ip": "127.0.0.1",
+ "userLevel": 0
+}
+```
+
+> `auth`: "noauth" | "password"
+
+Socks 协议的认证方式,支持 `"noauth"` 匿名方式和 `"password"` 用户密码方式。
+
+默认值为 `"noauth"`。
+
+> `accounts`: \[ [AccountObject](#accountobject) \]
+
+一个数组,数组中每个元素为一个用户帐号。
+
+此选项仅当 `auth` 为 `password` 时有效。
+
+默认值为空。
+
+> `udp`: true | false
+
+是否开启 UDP 协议的支持。
+
+默认值为 `false`。
+
+> `ip`: address
+
+当开启 UDP 时,Xray 需要知道本机的 IP 地址。
+
+默认值为 `"127.0.0.1"`。
+
+> `userLevel`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+
+### AccountObject
+---
+
+```json
+{
+ "user": "my-username",
+ "pass": "my-password"
+}
+```
+
+> `user`: string
+
+用户名,字符串类型。必填。
+
+> `pass`: string
+
+密码,字符串类型。必填。
diff --git a/docs/config/inbound-protocols/trojan.md b/docs/config/inbound-protocols/trojan.md
new file mode 100644
index 000000000..322000b64
--- /dev/null
+++ b/docs/config/inbound-protocols/trojan.md
@@ -0,0 +1,103 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Trojan
+weight: 7
+---
+
+[Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议
+
+::: danger
+Trojan 被设计工作在正确配置的加密 TLS 隧道
+
+
+## InboundConfigurationObject
+
+---
+
+```json
+{
+ "clients": [
+ {
+ "password": "password",
+ "email": "love@xray.com",
+ "level": 0,
+ "flow": "xtls-rprx-direct"
+ }
+ ],
+ "fallbacks": [
+ {
+ "dest": 80
+ }
+ ]
+}
+```
+
+> `clients`: \[ [ClientObject](#clientobject) \]
+
+一个数组,代表一组服务端认可的用户.
+
+其中每一项是一个用户 [ClientObject](#clientobject)。
+
+> `fallbacks`: \[ [FallbackObject](../../fallback) \]
+
+一个数组,包含一系列强大的回落分流配置(可选)。
+fallbacks 的具体配置请点击[FallbackObject](../../fallback/#fallbacks-配置)
+
+{{% notice %}}
+**TIP**\
+Xray 的 Trojan 有完整的 fallbacks 支持,配置方式完全一致。
+触发回落的条件也与VLESS类似:首包长度 < 58 或第 57 个字节不为 '\r'(因为 Trojan 没有协议版本)或身份认证失败。
+
+
+
+### ClientObject
+---
+
+```json
+{
+ "password": "password",
+ "email": "love@xray.com",
+ "level": 0,
+ "flow": "xtls-rprx-direct"
+}
+```
+
+> `password`: string
+
+必填,任意字符串。
+
+> `email`: string
+
+邮件地址,可选,用于标识用户
+
+::: danger
+如果存在多个 ClientObject, 请注意 email 不可以重复。
+
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+> `flow`: string
+
+流控模式,用于选择 XTLS 的算法。
+
+目前入站协议中有以下流控模式可选:
+
+- `xtls-rprx-origin`:最初的流控模式,此时客户端仅可选择 `xtls-rprx-origin` 和 `xtls-rprx-origin-udp443` 这两种流控模式。该模式纪念价值大于实际使用价值
+- `xtls-rprx-direct`:**推荐**,所有平台皆可使用的典型流控方式,此时客户端可选择任何流控模式
+
+::: warning
+**注意**
+
+当 `flow` 被指定时,还需要将该入站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。
+
+此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
+
+
+
+
+
diff --git a/docs/config/inbound-protocols/vless.md b/docs/config/inbound-protocols/vless.md
new file mode 100644
index 000000000..ef737bcb8
--- /dev/null
+++ b/docs/config/inbound-protocols/vless.md
@@ -0,0 +1,110 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: VLESS
+weight: 5
+---
+
+::: danger
+目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。
+目前 VLESS 不支持分享。
+
+
+VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 Xray 客户端和服务器之间的桥梁。
+
+与 [VMess](../vmess) 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID,但不需要 alterId。
+
+## InboundConfigurationObject
+
+```json
+{
+ "clients": [
+ {
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "level": 0,
+ "email": "love@xray.com",
+ "flow": "xtls-rprx-direct"
+ }
+ ],
+ "decryption": "none",
+ "fallbacks": [
+ {
+ "dest": 80
+ }
+ ]
+}
+```
+
+> `clients`: \[ [ClientObject](#clientobject) \]
+
+一个数组,代表一组服务端认可的用户.
+
+其中每一项是一个用户 [ClientObject](#clientobject)。
+
+> `decryption`: "none"
+现阶段需要填 `"none"`,不能留空。
+若未正确设置 decryption 的值,使用 Xray 或 -test 时会收到错误信息。
+
+注意这里是 decryption,和 clients 同级。
+decryption 和 vmess 协议的 encryption 的位置不同,是因为若套一层约定加密,服务端需要先解密才能知道是哪个用户。
+
+> `fallbacks`: \[ [FallbackObject](../../fallback) \]
+
+一个数组,包含一系列强大的回落分流配置(可选)。
+fallbacks 的具体配置请点击[FallbackObject](../../fallback/#fallbacks-配置)
+
+
+
+### ClientObject
+
+---
+
+```json
+{
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "level": 0,
+ "email": "love@xray.com",
+ "flow": "xtls-rprx-direct"
+}
+```
+
+> `id`: string
+
+VLESS 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID.
+自定义字符串和其映射的 UUID 是等价的, 这意味着你将可以这样在配置文件中写id来标识同一用户,即
+ - 写 "id": "我爱🍉老师1314",
+ - 或写 "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (此UUID是 `我爱🍉老师1314` 的 UUID 映射)
+
+其映射标准在[VLESS UUID 映射标准:将自定义字符串映射为一个 UUIDv5](https://github.com/XTLS/Xray-core/issues/158)
+
+你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID.
+也可以使用命令 `xray uuid` 生成随机的UUID.
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+> `email`: string
+
+用户邮箱,用于区分不同用户的流量(会体现在日志、统计中)。
+
+> `flow`: string
+
+流控模式,用于选择 XTLS 的算法。
+
+目前入站协议中有以下流控模式可选:
+
+- `xtls-rprx-origin`:最初的流控模式,此时客户端仅可选择 `xtls-rprx-origin` 和 `xtls-rprx-origin-udp443` 这两种流控模式。该模式纪念价值大于实际使用价值
+- `xtls-rprx-direct`:**推荐**,所有平台皆可使用的典型流控方式,此时客户端可选择任何流控模式
+
+::: warning
+**注意**
+
+当 `flow` 被指定时,还需要将该入站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。
+
+此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
+
+
+
\ No newline at end of file
diff --git a/docs/config/inbound-protocols/vmess.md b/docs/config/inbound-protocols/vmess.md
new file mode 100644
index 000000000..1e90bd7de
--- /dev/null
+++ b/docs/config/inbound-protocols/vmess.md
@@ -0,0 +1,162 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: VMess
+weight: 6
+---
+
+[VMess](../../../develop/protocols/vmess) 是一个加密传输协议,通常作为 Xray 客户端和服务器之间的桥梁。
+
+::: danger
+VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装`ntp`服务来自动同步系统时间。
+
+
+## InboundConfigurationObject
+---
+
+```json
+{
+ "clients": [
+ {
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "level": 0,
+ "alterId": 0,
+ "email": "love@xray.com"
+ }
+ ],
+ "default": {
+ "level": 0,
+ "alterId": 0
+ },
+ "detour": {
+ "to": "tag_to_detour"
+ },
+ "disableInsecureEncryption": false
+}
+```
+
+> `clients`: \[ [ClientObject](#clientobject) \]
+
+一个数组,代表一组服务端认可的用户.
+
+其中每一项是一个用户[ClientObject](#clientobject)。
+
+当此配置用作动态端口时,Xray 会自动创建用户。
+
+> `detour`: [DetourObject](#detourobject)
+
+指示对应的出站协议使用另一个服务器。
+
+> `default`: [DefaultObject](#defaultobject)
+
+可选,clients 的默认配置。仅在配合`detour`时有效。
+
+> `disableInsecureEncryption`: true | false
+
+是否禁止客户端使用不安全的加密方式,如果设置为 true 当客户端指定下列加密方式时,服务器会主动断开连接。
+- `"none"`
+- `"aes-128-cfb"`
+
+默认值为`false`。
+
+
+### ClientObject
+---
+
+```json
+{
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "level": 0,
+ "alterId": 4,
+ "email": "love@xray.com"
+}
+```
+
+> `id`: string
+
+Vmess 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID.
+自定义字符串和其映射的 UUID 是等价的, 这意味着你将可以这样在配置文件中写id来标识同一用户,即
+ - 写 "id": "我爱🍉老师1314",
+ - 或写 "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (此UUID是 `我爱🍉老师1314` 的 UUID 映射)
+
+其映射标准在[VLESS UUID 映射标准:将自定义字符串映射为一个 UUIDv5](https://github.com/XTLS/Xray-core/issues/158)
+
+你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID.
+也可以使用命令 `xray uuid` 生成随机的UUID.
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+> `alterId`: number
+
+为了进一步防止被探测,一个用户可以在主 ID 的基础上,再额外生成多个 ID。这里只需要指定额外的 ID 的数量,推荐值为 0 代表启用 VMessAEAD。
+最大值 65535。这个值不能超过服务器端所指定的值。
+
+不指定的话,默认值是 0。
+
+::: tip
+客户端 AlterID 设置为 0 代表启用 VMessAEAD ;服务端为自动适配,可同时兼容启用和未开启 VMessAEAD 的客户端。
+客户端可通过设置环境变量 Xray_VMESS_AEAD_DISABLED=true 强行禁用 VMessAEAD
+
+
+> `email`: string
+
+用户邮箱地址,用于区分不同用户的流量。
+
+
+
+### DetourObject
+---
+
+```json
+{
+ "to": "tag_to_detour"
+}
+```
+
+> `to`: string
+
+一个 inbound 的`tag`, 指定的 inbound 的必须是使用 VMess 协议的 inbound.
+
+
+
+### DefaultObject
+---
+
+```json
+{
+ "level": 0,
+ "alterId": 0
+}
+```
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+> `alterId`: number
+
+动态端口的默认`alterId`,默认值为`0`。
+
+
+
+## VMess MD5 认证信息 玷污机制
+---
+
+为了进一步对抗可能的探测和封锁,每个 VMess 认证数据的服务端结构都会包含一个一次写入的玷污状态标记,初始状态为无瑕状态,当服务器检测到重放探测时或者因为其他原因入站连接出错以致校验数据不正确时,该连接所对应的请求认证数据会被玷污。
+
+被玷污的认证数据无法被用于建立连接,当攻击者或客户端使用被玷污的认证数据建立连接时,服务器会输出包含 "invalid user" "ErrTainted" 的错误信息,并阻止该连接。
+
+当服务器没有受到重放攻击时,该机制对正常连接的客户端没有影响。
+
+如果服务器正在被重放攻击,可能会出现连接不稳定的情况。
+
+::: tip
+拥有服务器 UUID 以及其他连接数据的恶意程序可能根据此机制对服务器发起拒绝服务攻击,受到此类攻击的服务可以通过修改 proxy/vmess/validator.go 文件中 func (v \*TimedUserValidator) BurnTaintFuse(userHash []byte) error 函数的 atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 1) 语句为 atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 0) 来解除服务器对此类攻击的安全保护机制。使用 VMessAEAD 认证机制的客户端不受到 VMess MD5 认证信息 玷污机制 的影响。
+
+
diff --git a/docs/config/outbound-protocols/_index.md b/docs/config/outbound-protocols/_index.md
new file mode 100644
index 000000000..772bce2a1
--- /dev/null
+++ b/docs/config/outbound-protocols/_index.md
@@ -0,0 +1,34 @@
+---
+alwaysopen: false
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+# head:
+hide:
+- toc
+# post: " \U0001F44B"
+title: Outbounds 可用协议列表
+weight: 6
+---
+
+{{% alert theme="warning" %}}**这个章节包含了目前所有可用于 Outbounds 的协议及具体配置细节.**{{% /alert %}}
+
+## 协议列表
+---
+>[Blackhole](./blackhole)
+Blackhole(黑洞)是一个出站数据协议,它会阻碍所有数据的出站,配合 [路由(Routing)](../routing) 一起使用,可以达到禁止访问某些网站的效果。
+>[DNS](./dns)
+DNS 是一个出站协议,主要用于拦截和转发 DNS 查询。此出站协议只能接收 DNS 流量(包含基于 UDP 和 TCP 协议的查询),其它类型的流量会导致错误。
+>[Freedom](./freedom)
+Freedom 是一个出站协议,可以用来向任意网络发送(正常的) TCP 或 UDP 数据。
+>[HTTP](./http)
+HTTP 协议
+>[Socks](./socks)
+标准 Socks 协议实现,兼容 [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)、Socks 4a 和 [Socks 5](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)。
+>[VLESS](./vless)
+VLESS 是一个无状态的轻量传输协议,可以作为 Xray 客户端和服务器之间的桥梁。
+>[VMess](./vmess)
+[VMess](../../develop/protocols/vmess) 是一个加密传输协议,可以作为 Xray 客户端和服务器之间的桥梁。
+>[Trojan](./trojan)
+[Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议。
+>[Shadowsocks](./shadowsocks)
+[Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议。
diff --git a/docs/config/outbound-protocols/blackhole.md b/docs/config/outbound-protocols/blackhole.md
new file mode 100644
index 000000000..58f777d31
--- /dev/null
+++ b/docs/config/outbound-protocols/blackhole.md
@@ -0,0 +1,43 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Blackhole
+weight: 1
+---
+
+Blackhole(黑洞)是一个出站数据协议,它会阻碍所有数据的出站,配合 [路由配置](../../routing) 一起使用,可以达到禁止访问某些网站的效果。
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "response": {
+ "type": "none"
+ }
+}
+```
+
+> `response`: [ResponseObject](#responseobject)
+
+配置黑洞的响应数据。
+
+Blackhole 会在收到待转发数据之后,发送指定的响应数据,然后关闭连接,待转发的数据将被丢弃。
+如不指定此项,Blackhole 将直接关闭连接。
+
+
+### ResponseObject
+---
+
+```json
+{
+ "type": "none"
+}
+```
+
+> `type`: "http" | "none"
+
+当 `type` 为 `"none"`(默认值)时,Blackhole 将直接关闭连接。
+
+当 `type` 为 `"http"` 时,Blackhole 会发回一个简单的 HTTP 403 数据包,然后关闭连接。
diff --git a/docs/config/outbound-protocols/dns.md b/docs/config/outbound-protocols/dns.md
new file mode 100644
index 000000000..279a61fa9
--- /dev/null
+++ b/docs/config/outbound-protocols/dns.md
@@ -0,0 +1,43 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: DNS
+weight: 2
+---
+
+DNS 是一个出站协议,主要用于拦截和转发 DNS 查询。
+
+此出站协议只能接收 DNS 流量(包含基于 UDP 和 TCP 协议的查询),其它类型的流量会导致错误。
+
+在处理 DNS 查询时,此出站协议会将 IP 查询(即 A 和 AAAA)转发给内置的 [DNS 服务器](../../dns)。其它类型的查询流量将被转发至它们原本的目标地址。
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "network": "tcp",
+ "address": "1.1.1.1",
+ "port": 53
+}
+```
+
+> `network`: "tcp" | "udp"
+
+修改 DNS 流量的传输层协议,可选的值有 `"tcp"` 和 `"udp"`。当不指定时,保持来源的传输方式不变。
+
+> `address`: address
+
+修改 DNS 服务器地址。当不指定时,保持来源中指定的地址不变。
+
+> `port`: number
+
+修改 DNS 服务器端口。当不指定时,保持来源中指定的端口不变。
+
+
+
+## DNS配置实例
+---
+
+{{% badge warning %}}In progress{{% /badge %}}
diff --git a/docs/config/outbound-protocols/freedom.md b/docs/config/outbound-protocols/freedom.md
new file mode 100644
index 000000000..4ccd2fe3d
--- /dev/null
+++ b/docs/config/outbound-protocols/freedom.md
@@ -0,0 +1,51 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Freedom
+weight: 3
+---
+
+Freedom 是一个出站协议,可以用来向任意网络发送(正常的) TCP 或 UDP 数据。
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "domainStrategy": "AsIs",
+ "redirect": "127.0.0.1:3366",
+ "userLevel": 0
+}
+```
+
+> `domainStrategy`: "AsIs" | "UseIP" | "UseIPv4" | "UseIPv6"
+
+在目标地址为域名时, 配置相应的值, Freedom 的行为模式如下:
+- `"AsIs"`: Freedom 通过系统DNS服务器解析获取IP, 向此域名发出连接.
+- `"UseIP"`、`"UseIPv4"` 和 `"UseIPv6"`: Xray 使用[内置 DNS 服务器](../../base/dns)解析获取IP, 向此域名发出连接.
+默认值为 `"AsIs"`。
+
+::: tip
+**TIP 1**\
+当使用 `"UseIP"` 模式,并且[出站连接配置](../outbounds#outboundobject) 中指定了 `sendThrough` 时,Freedom 会根据 `sendThrough` 的值自动判断所需的 IP 类型,IPv4 或 IPv6。
+
+::: tip
+**TIP 2**\
+当使用 `"UseIPv4"` 或 `"UseIPv6"` 模式时,Freedom 会只使用对应的 IPv4 或 IPv6 地址。当 `sendThrough` 指定了不匹配的本地地址时,将导致连接失败。
+
+
+> `redirect`: address_port
+
+Freedom 会强制将所有数据发送到指定地址(而不是 inbound 指定的地址)。
+
+其值为一个字符串,样例:`"127.0.0.1:80"`,`":1234"`。
+
+当地址不指定时,如 `":443"`,Freedom 不会修改原先的目标地址。
+当端口为 `0` 时,如 `"xray.com: 0"`,Freedom 不会修改原先的端口。
+
+> `userLevel`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
diff --git a/docs/config/outbound-protocols/http.md b/docs/config/outbound-protocols/http.md
new file mode 100644
index 000000000..7cadc28c2
--- /dev/null
+++ b/docs/config/outbound-protocols/http.md
@@ -0,0 +1,99 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: HTTP
+weight: 4
+---
+
+HTTP 协议。
+
+::: danger
+**http 协议没有对传输加密,不适宜经公网中传输,更容易成为被人用作攻击的肉鸡。**
+
+`http inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。
+
+
+::: tip
+ `http proxy` 只能代理 tcp 协议,udp 系的协议均不能通过。
+
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "servers": [
+ {
+ "address": "192.168.108.1",
+ "port": 3128,
+ "users": [
+ {
+ "user": "my-username",
+ "pass": "my-password"
+ }
+ ]
+ }
+ ]
+}
+```
+
+::: tip
+目前 HTTP 协议 outbound 中 `streamSettings` 设置 `security` 和 `tlsSettings` 是生效的。
+
+
+> `servers`: \[ [ServerObject](#serverobject) \]
+
+HTTP 服务器列表,其中每一项是一个服务器配置,若配置多个,循环使用 (RoundRobin)。
+
+
+
+### ServerObject
+
+---
+
+```json
+{
+ "address": "192.168.108.1",
+ "port": 3128,
+ "users": [
+ {
+ "user": "my-username",
+ "pass": "my-password"
+ }
+ ]
+}
+```
+
+> `address`: string
+
+HTTP 代理服务器地址,必填。
+
+> `port`: int
+
+HTTP 代理服务器端口,必填。
+
+> `user`: \[[AccountObject](#accountobject)\]
+
+一个数组,数组中每个元素为一个用户帐号。默认值为空。
+
+
+
+#### AccountObject
+
+---
+
+```json
+{
+ "user": "my-username",
+ "pass": "my-password"
+}
+```
+
+> `user`: string
+
+用户名,字符串类型。必填。
+
+> `pass`: string
+
+密码,字符串类型。必填。
diff --git a/docs/config/outbound-protocols/shadowsocks.md b/docs/config/outbound-protocols/shadowsocks.md
new file mode 100644
index 000000000..ad55fe6db
--- /dev/null
+++ b/docs/config/outbound-protocols/shadowsocks.md
@@ -0,0 +1,102 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Shadowsocks
+weight: 9
+---
+
+[Shadowsocks](https://zh.wikipedia.org/wiki/Shadowsocks) 协议,兼容大部分其它版本的实现。
+
+目前兼容性如下:
+
+- 支持 TCP 和 UDP 数据包转发,其中 UDP 可选择性关闭;
+- 推荐的加密方式:
+
+ - AES-256-GCM
+ - AES-128-GCM
+ - ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
+ - none 或 plain
+
+ 不推荐的加密方式:
+
+ - AES-256-CFB
+ - AES-128-CFB
+ - ChaCha20
+ - ChaCha20-IETF
+
+::: danger
+"none" 不加密方式下,服务器端不会验证 "password" 中的密码。为确保安全性, 一般需要加上 TLS 并在传输层使用安全配置,例如 WebSocket 配置较长的 path
+
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "servers": [
+ {
+ "email": "love@xray.com",
+ "address": "127.0.0.1",
+ "port": 1234,
+ "method": "加密方式",
+ "password": "密码",
+ "level": 0
+ }
+ ]
+}
+```
+
+> `servers`: \[[ServerObject](#serverobject)\]
+
+一个数组,代表一组 Shadowsocks 服务端设置, 其中每一项是一个 [ServerObject](#serverobject)。
+
+
+
+### ServerObject
+
+---
+
+```json
+{
+ "email": "love@xray.com",
+ "address": "127.0.0.1",
+ "port": 1234,
+ "method": "加密方式",
+ "password": "密码",
+ "level": 0
+}
+```
+
+> `email`: string
+
+邮件地址,可选,用于标识用户
+
+> `address`: address
+
+Shadowsocks 服务端地址,支持 IPv4、IPv6 和域名。必填。
+
+> `port`: number
+
+Shadowsocks 服务端端口。必填。
+
+> `method`: string
+
+必填。
+* 推荐的加密方式:
+ * AES-256-GCM
+ * AES-128-GCM
+ * ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
+ * none 或 plain
+
+> `password`: string
+
+必填。任意字符串。
+
+Shadowsocks 协议不限制密码长度,但短密码会更可能被破解,建议使用 16 字符或更长的密码。
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+`level` 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
\ No newline at end of file
diff --git a/docs/config/outbound-protocols/socks.md b/docs/config/outbound-protocols/socks.md
new file mode 100644
index 000000000..e47e0bd18
--- /dev/null
+++ b/docs/config/outbound-protocols/socks.md
@@ -0,0 +1,103 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Socks
+weight: 5
+---
+
+标准 Socks 协议实现,兼容 [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)、Socks 4a 和 [Socks 5](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol)。
+
+::: danger
+**socks 协议没有对传输加密,不适宜经公网中传输**
+
+`socks inbound` 更有意义的用法是在局域网或本机环境下监听,为其他程序提供本地服务。
+
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "servers": [
+ {
+ "address": "127.0.0.1",
+ "port": 1234,
+ "users": [
+ {
+ "user": "test user",
+ "pass": "test pass",
+ "level": 0
+ }
+ ]
+ }
+ ]
+}
+```
+
+> `servers`: \[ [ServerObject](#serverobject) \]
+
+Socks 服务器列表,其中每一项是一个服务器配置。
+
+### ServerObject
+
+```json
+{
+ "address": "127.0.0.1",
+ "port": 1234,
+ "users": [
+ {
+ "user": "test user",
+ "pass": "test pass",
+ "level": 0
+ }
+ ]
+}
+```
+
+> `address`: address
+
+服务器地址, 必填
+
+::: tip
+仅支持连接到 Socks 5 服务器。
+
+
+> `port`: number
+
+服务器端口, 必填
+
+> `users`: \[ [UserObject](#userobject) \]
+
+一个数组表示的用户列表,数组中每个元素为一个用户配置。
+
+当列表不为空时,Socks 客户端会使用用户信息进行认证;如未指定,则不进行认证。
+
+默认值为空。
+
+
+
+#### UserObject
+---
+
+```json
+{
+ "user": "test user",
+ "pass": "test pass",
+ "level": 0
+}
+```
+
+> `user`: string
+
+用户名,字符串类型。必填。
+
+> `pass`: string
+
+密码,字符串类型。必填。
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+userLevel 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0
\ No newline at end of file
diff --git a/docs/config/outbound-protocols/trojan.md b/docs/config/outbound-protocols/trojan.md
new file mode 100644
index 000000000..984f1467a
--- /dev/null
+++ b/docs/config/outbound-protocols/trojan.md
@@ -0,0 +1,117 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Trojan
+weight: 8
+---
+
+[Trojan](https://trojan-gfw.github.io/trojan/protocol) 协议
+
+::: danger
+Trojan 被设计工作在正确配置的加密 TLS 隧道
+
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "servers": [
+ {
+ "address": "127.0.0.1",
+ "port": 1234,
+ "password": "password",
+ "email": "love@xray.com",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+ }
+ ]
+}
+```
+
+> `servers`: \[ [ServerObject](#serverobject) \]
+
+一个数组,其中每一项是一个 [ServerObject](#serverobject)。
+
+
+
+### ServerObject
+
+---
+
+```json
+{
+ "address": "127.0.0.1",
+ "port": 1234,
+ "password": "password",
+ "email": "love@xray.com",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+}
+```
+
+> `address`: address
+
+服务端地址,支持 IPv4、IPv6 和域名。必填。
+
+> `port`: number
+
+服务端端口,通常与服务端监听的端口相同。
+
+> `password`: string
+
+密码. 必填,任意字符串。
+
+> `email`: string
+
+邮件地址,可选,用于标识用户
+
+> `flow`: string
+
+流控模式,用于选择 XTLS 的算法。
+
+目前出站协议中有以下流控模式可选:
+
+- `xtls-rprx-origin`:最初的流控模式。该模式纪念价值大于实际使用价值
+- `xtls-rprx-origin-udp443`:同 `xtls-rprx-origin`, 但放行了目标为 443 端口的 UDP 流量
+- `xtls-rprx-direct`:所有平台皆可使用的典型流控模式
+- `xtls-rprx-direct-udp443`:同 `xtls-rprx-direct`, 但是放行了目标为 443 端口的 UDP 流量
+- `xtls-rprx-splice`:Linux 平台下最建议使用的流控模式
+- `xtls-rprx-splice-udp443`:同 `xtls-rprx-splice`, 但是放行了目标为 443 端口的 UDP 流量
+
+::: warning
+**注意**
+
+当 `flow` 被指定时,还需要将该出站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。
+
+此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
+
+
+{{% notice %}}
+**关于 `xtls-rprx-*-udp443` 流控模式**
+
+启用了 Xray-core 的 XTLS 时,通往 UDP 443 端口的流量默认会被拦截(一般情况下为 QUIC),这样应用就不会使用 QUIC 而会使用 TLS,XTLS 才会真正生效。实际上,QUIC 本身也不适合被代理,因为 QUIC 自带了 TCP 的功能, 它作为 UDP 流量在通过 Trojan 协议传输时,底层协议为 TCP,就相当于两层 TCP 了。
+
+若不需要拦截,请在客户端填写 `xtls-rprx-*-udp443`,服务端不变。
+
+
+::: danger
+Splice 是 Linux Kernel 提供的函数,系统内核直接转发 TCP,不再经过 Xray 的内存,大大减少了数据拷贝、CPU 上下文切换的次数。
+
+Splice 模式的的使用限制:
+
+- Linux 环境
+- 入站协议为 `Dokodemo door`、`Socks`、`HTTP` 等纯净的 TCP 连接, 或其它使用了 XTLS 的入站协议
+- 出站协议为 VLESS + XTLS 或 Trojan + XTLS
+
+此外,使用 Splice 时网速显示会滞后,这是特性,不是 bug。
+
+需要注意的是,使用 mKCP 协议时不会使用 Splice(是的,虽然没有报错,但实际上根本没用到)。
+
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
diff --git a/docs/config/outbound-protocols/vless.md b/docs/config/outbound-protocols/vless.md
new file mode 100644
index 000000000..fa57b6c07
--- /dev/null
+++ b/docs/config/outbound-protocols/vless.md
@@ -0,0 +1,160 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: VLESS
+weight: 6
+---
+
+::: danger
+目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。
+目前 VLESS 不支持分享。
+
+
+VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 Xray 客户端和服务器之间的桥梁。
+
+与 [VMess](../vmess) 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID,但不需要 alterId。
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "vnext": [
+ {
+ "address": "example.com",
+ "port": 443,
+ "users": [
+ {
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "encryption": "none",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+ }
+ ]
+ }
+ ]
+}
+```
+
+> `vnext`: \[ [ServerObject](#serverobject) \]
+
+一个数组, 表示 VLESS 服务器列表,包含一组指向服务端的配置, 其中每一项是一个服务器配置。
+
+
+
+### ServerObject
+
+---
+
+```json
+{
+ "address": "example.com",
+ "port": 443,
+ "users": [
+ {
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "encryption": "none",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+ }
+ ]
+}
+```
+
+> `address`: address
+
+服务端地址,指向服务端,支持域名、IPv4、IPv6。
+
+> `port`: number
+
+服务端端口,通常与服务端监听的端口相同。
+
+> `users`: \[ [UserObject](#userobject) \]
+
+数组, 一组服务端认可的用户列表, 其中每一项是一个用户配置
+
+
+
+### UserObject
+
+---
+
+```json
+{
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "encryption": "none",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+}
+```
+
+> `id`: string
+
+VLESS 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID.
+自定义字符串和其映射的 UUID 是等价的, 这意味着你将可以这样在配置文件中写id来标识同一用户,即
+ - 写 "id": "我爱🍉老师1314",
+ - 或写 "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (此UUID是 `我爱🍉老师1314` 的 UUID 映射)
+
+其映射标准在[VLESS UUID 映射标准:将自定义字符串映射为一个 UUIDv5](https://github.com/XTLS/Xray-core/issues/158)
+
+你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID.
+也可以使用命令 `xray uuid` 生成随机的UUID.
+
+> `encryption`: "none"
+
+需要填 `"none"`,不能留空。
+
+该要求是为了提醒使用者没有加密,也为了以后出加密方式时,防止使用者填错属性名或填错位置导致裸奔。
+若未正确设置 encryption 的值,使用 Xray 或 -test 时会收到错误信息。
+
+> `flow`: string
+
+流控模式,用于选择 XTLS 的算法。
+
+目前出站协议中有以下流控模式可选:
+
+- `xtls-rprx-origin`:最初的流控模式。该模式纪念价值大于实际使用价值
+- `xtls-rprx-origin-udp443`:同 `xtls-rprx-origin`, 但放行了目标为 443 端口的 UDP 流量
+- `xtls-rprx-direct`:所有平台皆可使用的典型流控模式
+- `xtls-rprx-direct-udp443`:同 `xtls-rprx-direct`, 但是放行了目标为 443 端口的 UDP 流量
+- `xtls-rprx-splice`:Linux 平台下最建议使用的流控模式
+- `xtls-rprx-splice-udp443`:同 `xtls-rprx-splice`, 但是放行了目标为 443 端口的 UDP 流量
+
+::: warning
+**注意**
+
+当 `flow` 被指定时,还需要将该出站协议的 `streamSettings.security` 一项指定为 `xtls`,`tlsSettings` 改为 `xtlsSettings`。详情请参考 [streamSettings](../../base/transport#streamsettingsobject)。
+
+此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
+
+
+{{% notice %}}
+**关于 `xtls-rprx-*-udp443` 流控模式**
+
+启用了 Xray-core 的 XTLS 时,通往 UDP 443 端口的流量默认会被拦截(一般情况下为 QUIC),这样应用就不会使用 QUIC 而会使用 TLS,XTLS 才会真正生效。实际上,QUIC 本身也不适合被代理,因为 QUIC 自带了 TCP 的功能,它作为 UDP 流量在通过 VLESS 协议传输时,底层协议为 TCP,就相当于两层 TCP 了。
+
+若不需要拦截,请在客户端填写 `xtls-rprx-*-udp443`,服务端不变。
+
+
+::: danger
+Splice 是 Linux Kernel 提供的函数,系统内核直接转发 TCP,不再经过 Xray 的内存,大大减少了数据拷贝、CPU 上下文切换的次数。
+
+Splice 模式的的使用限制:
+
+- Linux 环境
+- 入站协议为 `Dokodemo door`、`Socks`、`HTTP` 等纯净的 TCP 连接, 或其它使用了 XTLS 的入站协议
+- 出站协议为 VLESS + XTLS 或 Trojan + XTLS
+
+此外,使用 Splice 时网速显示会滞后,这是特性,不是 bug。
+
+需要注意的是,使用 mKCP 协议时不会使用 Splice(是的,虽然没有报错,但实际上根本没用到)。
+
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+
diff --git a/docs/config/outbound-protocols/vmess.md b/docs/config/outbound-protocols/vmess.md
new file mode 100644
index 000000000..9d699be99
--- /dev/null
+++ b/docs/config/outbound-protocols/vmess.md
@@ -0,0 +1,125 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: VMess
+weight: 7
+---
+
+# VMess
+
+[VMess](../../../develop/protocols/vmess) 是一个加密传输协议,通常作为 Xray 客户端和服务器之间的桥梁。
+
+::: danger
+VMess 依赖于系统时间,请确保使用 Xray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装`ntp`服务来自动同步系统时间。
+
+
+## OutboundConfigurationObject
+
+---
+
+```json
+{
+ "vnext": [
+ {
+ "address": "127.0.0.1",
+ "port": 37192,
+ "users": [
+ {
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "alterId": 0,
+ "security": "auto",
+ "level": 0
+ }
+ ]
+ }
+ ]
+}
+```
+
+> `vnext`:\[ [ServerObject](#serverobject) \]
+
+一个数组,包含一组的服务端配置.
+
+其中每一项是一个服务端配置[ServerObject](#serverobject)。
+
+
+
+### ServerObject
+---
+
+```json
+{
+ "address": "127.0.0.1",
+ "port": 37192,
+ "users": []
+}
+```
+
+> `address`: address
+
+服务端地址,支持 IP 地址或者域名。
+
+> `port`: number
+
+服务端监听的端口号, 必填。
+
+> `users`: \[ [UserObject](#userobject) \]
+
+一个数组,代表一组服务端认可的用户.
+
+其中每一项是一个用户[UserObject](#userobject)。
+
+
+
+#### UserObject
+---
+```json
+{
+ "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
+ "alterId": 0,
+ "security": "auto",
+ "level": 0
+}
+```
+
+> `id`:string
+
+Vmess 的用户 ID,可以是任意小于30字节的字符串, 也可以是一个合法的UUID.
+自定义字符串和其映射的 UUID 是等价的, 这意味着你将可以这样在配置文件中写id来标识同一用户,即
+ - 写 "id": "我爱🍉老师1314",
+ - 或写 "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (此UUID是 `我爱🍉老师1314` 的 UUID 映射)
+
+其映射标准在[VLESS UUID 映射标准:将自定义字符串映射为一个 UUIDv5](https://github.com/XTLS/Xray-core/issues/158)
+
+你可以使用命令 `xray uuid -map "自定义字符串"` 生成自定义字符串所映射的的 UUID.
+也可以使用命令 `xray uuid` 生成随机的UUID.
+
+> `alterId`:number
+
+为了进一步防止被探测,一个用户可以在主 ID 的基础上,再额外生成多个 ID。这里只需要指定额外的 ID 的数量,推荐值为 0 代表启用 VMessAEAD。
+最大值 65535。这个值不能超过服务器端所指定的值。
+
+不指定的话,默认值是 0。
+
+::: tip
+客户端 AlterID 设置为 0 代表启用 VMessAEAD ;服务端为自动适配,可同时兼容启用和未开启 VMessAEAD 的客户端。
+客户端可通过设置环境变量 Xray_VMESS_AEAD_DISABLED=true 强行禁用 VMessAEAD
+
+
+> `level`: number
+
+用户等级,连接会使用这个用户等级对应的[本地策略](../../base/policy#levelpolicyobject)。
+
+level 的值, 对应 [policy](../../base/policy#policyobject) 中 level 的值. 如不指定, 默认为 0.
+
+> `security`: "aes-128-gcm" | "chacha20-poly1305" | "auto" | "none"
+
+加密方式,客户端将使用配置的加密方式发送数据,服务器端自动识别,无需配置。
+
+- `"aes-128-gcm"`:推荐在 PC 上使用
+- `"chacha20-poly1305"`:推荐在手机端使用
+- `"auto"`:默认值,自动选择(运行框架为 AMD64、ARM64 或 s390x 时为 aes-128-gcm 加密方式,其他情况则为 Chacha20-Poly1305 加密方式)
+- `"none"`:不加密
+
+::: tip
+推荐使用`"auto"`加密方式,这样可以永久保证安全性和兼容性。
diff --git a/docs/config/transports/_index.md b/docs/config/transports/_index.md
new file mode 100644
index 000000000..8a86c9389
--- /dev/null
+++ b/docs/config/transports/_index.md
@@ -0,0 +1,45 @@
+---
+alwaysopen: false
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+# head:
+hide:
+ - toc
+# post: " \U0001F44B"
+title: 传输方式列表
+weight: 7
+---
+
+{{% alert theme="warning" %}}**这个章节包含了目前所有的传输方式及相关的具体配置.**{{% /alert %}}
+
+## 传输方式列表
+
+> `tcpSettings`: [TcpObject](./tcp)
+
+针对 TCP 连接的配置。
+
+> `wsSettings`: [WebSocketObject](./websocket)
+
+针对 WebSocket 连接的配置。
+
+> `dsSettings`: [DomainSocketObject](./domainsocket)
+
+针对 Domain Socket 连接的配置。
+
+> `kcpSettings`: [KcpObject](./mkcp)
+
+针对 mKCP 连接的配置。
+
+> `httpSettings`: [HttpObject](./h2)
+
+针对 HTTP/2 连接的配置。
+
+> `quicSettings`: [QuicObject](./quic)
+
+针对 QUIC 连接的配置。
+
+> `grpcSettings`: [GRPCObject](./grpc)
+
+针对 gRPC 连接的配置。
+
+
diff --git a/docs/config/transports/domainsocket.md b/docs/config/transports/domainsocket.md
new file mode 100644
index 000000000..4f6889007
--- /dev/null
+++ b/docs/config/transports/domainsocket.md
@@ -0,0 +1,48 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: Domain Socket
+weight: 3
+---
+
+::: danger
+推荐写到 [inbounds](../../base/inbounds) 的 `listen` 处,传输方式可选 TCP、WebSocket、HTTP/2.
+未来这里的 DomainSocket 可能会被弃用。
+
+
+Domain Socket 使用标准的 Unix domain socket 来传输数据。
+
+它的优势是使用了操作系统内建的传输通道,而不会占用网络缓存。
+理论上相比起本地环回网络(local loopback)来说,Domain socket 速度略快一些。
+
+目前仅可用于支持 Unix domain socket 的平台,如 Linux 和 macOS。在 Windows 10 Build 17036 前不可用。
+
+如果指定了 domain socket 作为传输方式,在入站出站代理中配置的端口和 IP 地址将会失效,所有的传输由 domain socket 取代。
+
+## DomainSocketObject
+
+---
+
+`DomainSocketObject` 对应传输配置的 `dsSettings` 项。
+
+```json
+{
+ "path": "/path/to/ds/file",
+ "abstract": false,
+ "padding": false
+}
+```
+
+> `path`: string
+
+一个合法的文件路径。
+::: danger
+在运行 Xray 之前,这个文件必须不存在。
+
+
+> `abstract`: true | false
+
+是否为 abstract domain socket,默认值 `false`。
+
+> `padding`: true | false
+abstract domain socket 是否带 padding,默认值 `false`。
diff --git a/docs/config/transports/grpc.md b/docs/config/transports/grpc.md
new file mode 100644
index 000000000..503e7f27f
--- /dev/null
+++ b/docs/config/transports/grpc.md
@@ -0,0 +1,29 @@
+---
+date: "2021-3-14T00:00:00.000Z"
+description: Project X 的文档.
+title: gRPC
+weight: 7
+---
+
+基于 gRPC 的传输方式。
+
+它基于 HTTP/2 协议,可以通过其它的 HTTP 服务器(如 Nginx)进行中转。
+
+## GRPCObject
+
+---
+
+`GRPCObject` 对应传输配置的 `grpcSettings` 项。
+
+```json
+{
+ "serviceName": "name"
+}
+```
+
+> `serviceName`: string
+
+一个字符串,指定服务路径,相当于 HTTP/2 与 WebSocket 中的 Path。
+
+客户端会使用此名称进行通信,服务器会验证服务名称是否匹配。
+
diff --git a/docs/config/transports/h2.md b/docs/config/transports/h2.md
new file mode 100644
index 000000000..9027e779d
--- /dev/null
+++ b/docs/config/transports/h2.md
@@ -0,0 +1,42 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: HTTP/2
+weight: 5
+---
+
+基于 HTTP/2 的传输方式。
+
+它完整按照 HTTP/2 标准实现,可以通过其它的 HTTP 服务器(如 Nginx)进行中转。
+
+由 HTTP/2 的建议,客户端和服务器必须同时开启 TLS 才可以正常使用这个传输方式。
+
+::: tip
+当前版本的 HTTP/2 的传输方式并不强制要求服务器端有 TLS 配置.
+这使得可以在特殊用途的分流部署环境中,由外部网关组件完成 TLS 层对话,Xray 作为后端应用,网关和 Xray 间使用称为 `h2c` 的明文 http/2 进行通讯。
+
+
+## HttpObject
+
+---
+
+`HttpObject` 对应传输配置的 `httpSettings` 项。
+
+```json
+{
+ "host": ["xray.com"],
+ "path": "/random/path"
+}
+```
+
+> `host`: \[string\]
+
+一个字符串数组,每一个元素是一个域名。
+
+客户端会随机从列表中选出一个域名进行通信,服务器会验证域名是否在列表中。
+
+> `path` string
+
+HTTP 路径,由 `/` 开头, 客户端和服务器必须一致。
+
+默认值为 `"/"`。
diff --git a/docs/config/transports/mkcp.md b/docs/config/transports/mkcp.md
new file mode 100644
index 000000000..ff288ae24
--- /dev/null
+++ b/docs/config/transports/mkcp.md
@@ -0,0 +1,172 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: mKCP
+weight: 4
+---
+
+mKCP 使用 UDP 来模拟 TCP 连接。
+
+mKCP 牺牲带宽来降低延迟。传输同样的内容,mKCP 一般比 TCP 消耗更多的流量。
+
+::: tip
+请确定主机上的防火墙配置正确
+
+
+## KcpObject
+
+---
+
+`KcpObject` 对应传输配置的 `kcpSettings` 项。
+
+```json
+{
+ "mtu": 1350,
+ "tti": 20,
+ "uplinkCapacity": 5,
+ "downlinkCapacity": 20,
+ "congestion": false,
+ "readBufferSize": 1,
+ "writeBufferSize": 1,
+ "header": {
+ "type": "none"
+ },
+ "seed": "Password"
+}
+```
+
+> `mtu`: number
+
+最大传输单元(maximum transmission unit)
+请选择一个介于 `576` - `1460` 之间的值。
+
+默认值为 `1350`。
+
+> `tti`: number
+
+传输时间间隔(transmission time interval),单位毫秒(ms),mKCP 将以这个时间频率发送数据。
+请选译一个介于 `10` - `100` 之间的值。
+
+默认值为 `50`。
+
+> `uplinkCapacity`: number
+
+上行链路容量,即主机发出数据所用的最大带宽,单位 MB/s,注意是 Byte 而非 bit。
+可以设置为 `0`,表示一个非常小的带宽。
+
+默认值 `5`。
+
+> `downlinkCapacity`: number
+
+下行链路容量,即主机接收数据所用的最大带宽,单位 MB/s,注意是 Byte 而非 bit。
+可以设置为 `0`,表示一个非常小的带宽。
+
+默认值 `20`。
+
+::: tip
+`uplinkCapacity` 和 `downlinkCapacity` 决定了 mKCP 的传输速度。
+以客户端发送数据为例,客户端的 `uplinkCapacity` 指定了发送数据的速度,而服务器端的 `downlinkCapacity` 指定了接收数据的速度。两者的值以较小的一个为准。
+
+推荐把 `downlinkCapacity` 设置为一个较大的值,比如 100,而 `uplinkCapacity` 设为实际的网络速度。当速度不够时,可以逐渐增加 `uplinkCapacity` 的值,直到带宽的两倍左右。
+
+
+> `congestion`: true | false
+
+是否启用拥塞控制。
+
+开启拥塞控制之后,Xray 会自动监测网络质量,当丢包严重时,会自动降低吞吐量;当网络畅通时,也会适当增加吞吐量。
+
+默认值为 `false`
+
+> `readBufferSize`: number
+
+单个连接的读取缓冲区大小,单位是 MB。
+
+默认值为 `2`。
+
+> `writeBufferSize`: number
+
+单个连接的写入缓冲区大小,单位是 MB。
+
+默认值为 `2`。
+
+::: tip
+`readBufferSize` 和 `writeBufferSize` 指定了单个连接所使用的内存大小。
+在需要高速传输时,指定较大的 `readBufferSize` 和 `writeBufferSize` 会在一定程度上提高速度,但也会使用更多的内存。
+
+在网速不超过 20MB/s 时,默认值 1MB 可以满足需求;超过之后,可以适当增加 `readBufferSize` 和 `writeBufferSize` 的值,然后手动平衡速度和内存的关系。
+
+
+> `header`: [HeaderObject](#headerobject)
+
+数据包头部伪装设置
+
+> `seed`: string
+
+可选的混淆密码,使用 AES-128-GCM 算法混淆流量数据,客户端和服务端需要保持一致。
+
+本混淆机制不能用于保证通信内容的安全,但可能可以对抗部分封锁。
+::: tip
+目前测试环境下开启此设置后没有出现原版未混淆版本的封端口现象
+
+
+
+
+### HeaderObject
+
+---
+
+```json
+{
+ "type": "none"
+}
+```
+
+> `type`: string
+
+伪装类型,可选的值有:
+
+- `"none"`:默认值,不进行伪装,发送的数据是没有特征的数据包。
+- `"srtp"`:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
+- `"utp"`:伪装成 uTP 数据包,会被识别为 BT 下载数据。
+- `"wechat-video"`:伪装成微信视频通话的数据包。
+- `"dtls"`:伪装成 DTLS 1.2 数据包。
+- `"wireguard"`:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)
+
+
+
+## 鸣谢
+
+---
+
+- [@skywind3000](https://github.com/skywind3000) 发明并实现了 KCP 协议。
+- [@xtaci](https://github.com/xtaci) 将 KCP 由 C 语言实现翻译成 Go。
+- [@xiaokangwang](https://github.com/xiaokangwang) 测试 KCP 与 Xray 的整合并提交了最初的 PR。
+
+
+
+## 对 KCP 协议的改进
+
+---
+
+### 更小的协议头
+
+---
+
+原生 KCP 协议使用了 24 字节的固定头部,而 mKCP 修改为数据包 18 字节,确认(ACK)包 16 字节。更小的头部有助于躲避特征检查,并加快传输速度。
+
+另外,原生 KCP 的单个确认包只能确认一个数据包已收到,也就是说当 KCP 需要确认 100 个数据已收到时,它会发出 24 \* 100 = 2400 字节的数据。其中包含了大量重复的头部数据,造成带宽的浪费。mKCP 会对多个确认包进行压缩,100 个确认包只需要 16 + 2 + 100 \* 4 = 418 字节,相当于原生的六分之一。
+
+### 确认包重传
+
+---
+
+原生 KCP 协议的确认(ACK)包只发送一次,如果确认包丢失,则一定会导致数据重传,造成不必要的带宽浪费。而 mKCP 会以一定的频率重发确认包,直到发送方确认为止。单个确认包的大小为 22 字节,相比起数据包的 1000 字节以上,重传确认包的代价要小得多。
+
+### 连接状态控制
+
+
+---
+mKCP 可以有效地开启和关闭连接。当远程主机主动关闭连接时,连接会在两秒钟之内释放;当远程主机断线时,连接会在最多 30 秒内释放。
+
+原生 KCP 不支持这个场景。
diff --git a/docs/config/transports/quic.md b/docs/config/transports/quic.md
new file mode 100644
index 000000000..9024a93b7
--- /dev/null
+++ b/docs/config/transports/quic.md
@@ -0,0 +1,85 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: QUIC
+weight: 6
+---
+
+QUIC 全称 Quick UDP Internet Connection,是由 Google 提出的使用 UDP 进行多路并发传输的协议。其主要优势是:
+
+1. 减少了握手的延迟(1-RTT 或 0-RTT)
+2. 多路复用,并且没有 TCP 的阻塞问题
+3. 连接迁移,(主要是在客户端)当由 Wifi 转移到 4G 时,连接不会被断开。
+
+QUIC 目前处于实验期,使用了正在标准化过程中的 IETF 实现,不能保证与最终版本的兼容性。
+
+- 默认设定:
+ - 12 字节的 Connection ID
+ - 30 秒没有数据通过时自动断开连接 (可能会影响一些长连接的使用)
+
+## QuicObject
+
+---
+
+`QuicObject` 对应传输配置的 `quicSettings` 项。
+
+::: danger
+对接的两端的配置必须完全一致,否则连接失败。
+QUIC 强制要求开启 TLS,在传输配置中没有开启 TLS 时,Xray 会自行签发一个证书进行 TLS 通讯。
+
+
+```json
+{
+ "security": "none",
+ "key": "",
+ "header": {
+ "type": "none"
+ }
+}
+```
+
+> `security`: "none" | "aes-128-gcm" | "chacha20-poly1305"
+
+加密方式。
+
+此加密是对 QUIC 数据包的加密,加密后数据包无法被探测。
+
+默认值为不加密。
+
+> `key`: string
+
+加密时所用的密钥。
+
+可以是任意字符串。当 `security` 不为 `"none"` 时有效。
+
+> `header`: [HeaderObject](#headerobject)
+
+数据包头部伪装设置
+
+
+
+### HeaderObject
+
+---
+
+```json
+{
+ "type": "none"
+}
+```
+
+> `type`: string
+
+伪装类型,可选的值有:
+
+- `"none"`:默认值,不进行伪装,发送的数据是没有特征的数据包。
+- `"srtp"`:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
+- `"utp"`:伪装成 uTP 数据包,会被识别为 BT 下载数据。
+- `"wechat-video"`:伪装成微信视频通话的数据包。
+- `"dtls"`:伪装成 DTLS 1.2 数据包。
+- `"wireguard"`:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)
+
+::: tip
+当加密和伪装都不启用时,数据包即为原始的 QUIC 数据包,可以与其它的 QUIC 工具对接。
+为了避免被探测,建议加密或伪装至少开启一项。
+
diff --git a/docs/config/transports/tcp.md b/docs/config/transports/tcp.md
new file mode 100644
index 000000000..aab0c6e58
--- /dev/null
+++ b/docs/config/transports/tcp.md
@@ -0,0 +1,170 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: TCP
+weight: 1
+---
+
+TCP 传输模式是目前推荐使用的传输模式之一.
+
+可以和各种协议有多种组合模式.
+
+## TcpObject
+
+---
+
+`TcpObject` 对应传输配置的 `tcpSettings` 项。
+
+```json
+{
+ "acceptProxyProtocol": false,
+ "header": {
+ "type": "none"
+ }
+}
+```
+
+> `acceptProxyProtocol`: true | false
+
+仅用于 inbound,指示是否接收 PROXY protocol。
+[PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) 专用于传递请求的真实来源 IP 和端口,**若你不了解它,请先忽略该项**。
+常见的反代软件(如 HAProxy、Nginx)都可以配置发送它,VLESS fallbacks xver 也可以发送它。
+
+填写 `true` 时,最底层 TCP 连接建立后,请求方必须先发送 PROXY protocol v1 或 v2,否则连接会被关闭。
+
+默认值为 `false`。
+
+> `header`: [NoneHeaderObject](#noneheaderobject) | [HttpHeaderobject](#httpheaderobject)
+
+数据包头部伪装设置,默认值为 `NoneHeaderObject`。
+
+
+::: tip
+HTTP 伪装无法被其它 HTTP 服务器(如 Nginx)分流,但可以被 VLESS fallbacks path 分流。
+
+
+
+
+### NoneHeaderObject
+
+---
+
+不进行伪装
+
+```json
+{
+ "type": "none"
+}
+```
+
+> `type`: "none"
+
+指定不进行伪装
+
+
+
+### HttpHeaderObject
+
+---
+
+HTTP 伪装配置必须在对应的入站出站连接上同时配置,且内容必须一致。
+
+```json
+{
+ "type": "http",
+ "request": {},
+ "response": {}
+}
+```
+
+> `type`: "http"
+
+指定进行 HTTP 伪装
+
+> `request`: [HTTPRequestObject](#httprequestobject)
+
+HTTP 请求
+
+> `response`: [HTTPResponseObject](#httpresponseobject)
+
+HTTP 响应
+
+
+
+#### HTTPRequestObject
+
+---
+
+```json
+{
+ "version": "1.1",
+ "method": "GET",
+ "path": ["/"],
+ "headers": {
+ "Host": ["www.baidu.com", "www.bing.com"],
+ "User-Agent": [
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
+ ],
+ "Accept-Encoding": ["gzip, deflate"],
+ "Connection": ["keep-alive"],
+ "Pragma": "no-cache"
+ }
+}
+```
+
+> `version`: string
+
+HTTP 版本,默认值为 `"1.1"`。
+
+> `method`: string
+
+HTTP 方法,默认值为 `"GET"`。
+
+> `path`: \[ string \]
+
+路径,一个字符串数组。默认值为 `["/"]`。当有多个值时,每次请求随机选择一个值。
+
+> `headers`: map{ string, \[ string \]}
+
+HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是一个数组。
+
+每次请求会附上所有的键,并随机选择一个对应的值。默认值见上方示例。
+
+
+
+#### HTTPResponseObject
+
+---
+
+```json
+{
+ "version": "1.1",
+ "status": "200",
+ "reason": "OK",
+ "headers": {
+ "Content-Type": ["application/octet-stream", "video/mpeg"],
+ "Transfer-Encoding": ["chunked"],
+ "Connection": ["keep-alive"],
+ "Pragma": "no-cache"
+ }
+}
+```
+
+> `version`: string
+
+HTTP 版本,默认值为 `"1.1"`。
+
+> `status`: string
+
+HTTP 状态,默认值为 `"200"`。
+
+> `reason`: string
+
+HTTP 状态说明,默认值为 `"OK"`。
+
+> `headers`: map {string, \[ string \]}
+
+HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是一个数组。
+
+每次请求会附上所有的键,并随机选择一个对应的值。默认值见上方示例。
diff --git a/docs/config/transports/websocket.md b/docs/config/transports/websocket.md
new file mode 100644
index 000000000..52c06edd8
--- /dev/null
+++ b/docs/config/transports/websocket.md
@@ -0,0 +1,46 @@
+---
+date: "2020-12-23T00:00:00.000Z"
+description: Project X 的文档.
+title: WebSocket
+weight: 2
+---
+
+使用标准的 WebSocket 来传输数据。
+
+WebSocket 连接可以被其它 HTTP 服务器(如 Nginx)分流,也可以被 VLESS fallbacks path 分流。
+
+::: tip
+Websocket 会识别 HTTP 请求的 X-Forwarded-For 头来覆写流量的源地址,优先级高于 PROXY protocol。
+
+
+## WebSocketObject
+
+`WebSocketObject` 对应传输配置的 `wsSettings` 项。
+
+```json
+{
+ "acceptProxyProtocol": false,
+ "path": "/",
+ "headers": {
+ "Host": "xray.com"
+ }
+}
+```
+
+> `acceptProxyProtocol`: true | false
+
+仅用于 inbound,指示是否接收 PROXY protocol。
+[PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) 专用于传递请求的真实来源 IP 和端口,**若你不了解它,请先忽略该项**。
+常见的反代软件(如 HAProxy、Nginx)都可以配置发送它,VLESS fallbacks xver 也可以发送它。
+
+填写 `true` 时,最底层 TCP 连接建立后,请求方必须先发送 PROXY protocol v1 或 v2,否则连接会被关闭。
+
+> `path` string
+
+WebSocket 所使用的 HTTP 协议路径,默认值为 `"/"`。
+
+> `headers`: map \{string: string\}
+
+自定义 HTTP 头,一个键值对,每个键表示一个 HTTP 头的名称,对应的值是字符串。
+
+默认值为空。
diff --git a/docs/guide/install.md b/docs/guide/install.md
index f195e75fb..0b38e94b3 100644
--- a/docs/guide/install.md
+++ b/docs/guide/install.md
@@ -42,7 +42,7 @@ Xray 提供两种验证方式:
## macOS 安装方式
- 在 [Github Releases](https://github.com/xtls/Xray-core/releases) 下载适用于 macOS 平台的 ZIP 压缩包,解压后可得到可执行文件 `xray`,然后[通过命令行带参数运行](./command) 即可
-- 通过 [Homebrew](https://brew.sh) 包管理器安装: