{"id":3331,"date":"2021-07-18T13:08:21","date_gmt":"2021-07-18T05:08:21","guid":{"rendered":"https:\/\/blog.coderfan.org\/?p=3331"},"modified":"2022-08-15T21:29:06","modified_gmt":"2022-08-15T13:29:06","slug":"how-to-use-x-ui-pannel-to-set-up-proxies-for-bypassing-gfw","status":"publish","type":"post","link":"https:\/\/blog.coderfan.org\/en\/how-to-use-x-ui-pannel-to-set-up-proxies-for-bypassing-gfw.html","title":{"rendered":"Bypass Firewall for great Internet access: Use the X-UI panel to quickly build multi-protocol, multi-user proxy services, support CDN protect"},"content":{"rendered":"<div class='booster-block booster-read-block'>\n                <div class=\"twp-read-time\">\n                \t<i class=\"booster-icon twp-clock\"><\/i> <span>Read Time:<\/span>2 Minute, 48 Second                <\/div>\n\n            <\/div>\n<p><span style=\"color: var(--theme-palette-color-2, #F74D67);\" class=\"ugb-highlight\"><strong><em>2022.06.22\u66f4\u65b0<\/em><\/strong><em>\uff1a<\/em><\/span><\/p>\n\n\n\n<p>\u5f53\u524d\u7248\u672c\u5df2\u7ecf\u589e\u52a0\u4e86Telegram\u673a&nbsp;\u5668\u4eba\u7684\u547d\u4ee4\uff0c\u76ee\u524d\u652f\u6301\u7684\u547d\u4ee4\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Delete a node, it will be matched according to the port number<\/li><li>Enable a proxy, it will be matched according to the port number<\/li><li>Disable a proxy, it will be matched according to the port number<\/li><li>Keep update with system status, including Vps status and xray service status<\/li><li>Restart the xray service, this command will not restart the X-UI panel itself<\/li><li>Change xray version<\/li><\/ul>\n\n\n\n<p class=\"has-text-align-justify\">In the telegram bot, you can click \/help button to get help information, as shown in the figure:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"228\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-14-1024x228.png\" alt=\"\" class=\"wp-image-3979\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-14-1024x228.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-14-300x67.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-14-768x171.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-14-18x4.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-14.png 1045w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>For example, close the proxy whose corresponding port is 59212:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"104\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-15-1024x104.png\" alt=\"\" class=\"wp-image-3980\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-15-1024x104.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-15-300x31.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-15-768x78.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-15-18x2.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/06\/image-15.png 1039w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">\u65b0\u7248\u672c\u5df2\u7ecf\u652f\u6301Shadowsocks2022\u7684\u534f\u8bae\uff0c\u4f46\u662f\u76ee\u524d\u751f\u6210\u7684\u94fe\u63a5\u4ec5\u5728Sagernet\u4e0a\u53ef\u4ee5\u4f7f\u7528\uff0cv2rayNG\u4e0ev2rayN\u7684\u652f\u6301\u8fd8\u9700\u8981\u770b&nbsp;\u770b\u6700\u7ec8\u7684\u5206\u4eab\u94fe\u63a5\u6807\u51c6\u3002\u5982\u679c\u60f3\u8981\u4f7f\u7528\u7684\u7ae5\u978b\u53ef\u4ee5\u901a\u8fc7\u624b\u52a8\u6dfb\u52a0\u7684\u5f62\u5f0f\u8fdb\u884c\u6dfb\u52a0\u3002<\/p>\n\n\n\n<p class=\"has-text-align-justify\">The current version supports proxy search and one-click reset traffic functions.<\/p>\n\n\n\n<p><strong><em><span style=\"color: var(--theme-palette-color-2, #F74D67);\" class=\"ugb-highlight\">2022.04.09 Update\uff1a<\/span><\/em><\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><em>Since the development progress of the original author has slowed down, I am also learning the go language myself, so I forked the original author's warehouse and updated the functions. The current expanded functions include<\/em><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Panel settings query (implemented)<\/strong><\/li><li><strong>Traffic usage daily reminder (implemented)<\/strong><\/li><li><strong>Panel login reminder (to be implemented)<\/strong><\/li><li><strong>Node expiration reminder (to be implemented)<\/strong><\/li><li><strong>More certificate application methods (to be implemented)<\/strong><\/li><li><strong>Panel login whitelist setting (to be implemented)<\/strong><\/li><\/ul>\n\n\n\n<p class=\"has-text-align-justify\"><em><strong>At the same time, the issue area has also been opened. I hope you can use it and give me feedback. I will make PR to the original warehouse from time to time to improve X-UI together.<\/strong>,<strong>project rgithub address please<a href=\"https:\/\/github.com\/FranzKafkaYu\/x-ui\" class=\"ek-link\">click here<\/a><\/strong><\/em><\/p>\n\n\n\n<p class=\"has-text-align-justify\">To use the proxy service for scientific Internet access, the important thing is the construction of the proxy server. In our construction process, we often need to choose the construction method that suits us according to our own situation. For example, the official recommended script is used for installation, but the officially recommended scripts are generally not friendly to novices, and they often need to be expanded by themselves before the installation can be successful. There are also all-in-one one-click installation scripts implemented by various gods. These scripts reduce the difficulty of building a server for novices to a certain extent. In addition, there is a kind of construction method, that is,  build proxies by web Pannel<\/p>\n\n\n\n<p class=\"has-text-align-justify\">The advantages of using panels to build are:<strong>Due to the UI interface, the information display is quite intuitive, which is more convenient for us newbies to operate (no command line required)<\/strong>. So today we will introduce the use of X-UI to build our proxy service.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Using X-UI to build a proxy service has the following advantages:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Support system status monitoring: such as the status of CPU, memory, hard disk, etc.<\/strong><\/li><li><strong>Support multi-user andmulti-protocol(Shadowsocks,Vmess,Trojan,Vless), web page visualization operation<\/strong><\/li><li><strong>Support traffic statistics<\/strong><\/li><li><strong>Support for custom Xray configuration templates<\/strong><\/li><li><strong>Support  access panel via HTTPS<\/strong><\/li><li><strong>Support panel custom port, account and password<\/strong><\/li><li><strong>Quickly generate share link or QR code<\/strong><\/li><li><strong>Support CDN application<\/strong><\/li><li><strong>Support Fallback shunt setting<\/strong><\/li><\/ul>\n\n\n\n<div class=\"wp-block-ugb-heading ugb-heading ugb-f62bdf2 ugb-main-block\"><style>.ugb-f62bdf2 .ugb-heading__title{text-align:left}.ugb-f62bdf2 .ugb-heading__top-line{margin-left:0 !important;margin-right:auto !important}.ugb-f62bdf2 .ugb-inner-block{text-align:left}<\/style><div class=\"ugb-inner-block\"><div class=\"ugb-block-content\"><div class=\"ugb-heading__top-line\"><\/div><h3 class=\"ugb-heading__title\">Preliminary preparation<\/h3><\/div><\/div><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>VPS<\/li><li>domain<\/li><li>Cloudfare Account<\/li><li>Acme<\/li><\/ul>\n\n\n\n<p class=\"has-text-align-justify\">It should be noted here that the registered domain name must first add an A record in Cloudfare, so that we can apply for an SSL certificate.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">If you don't know how to add an A record, please Google it by yourself.<\/p>\n\n\n\n<div class=\"wp-block-ugb-heading ugb-heading ugb-9ab84d0 ugb-main-block\"><style>.ugb-9ab84d0 .ugb-heading__title{text-align:left}.ugb-9ab84d0 .ugb-heading__top-line{margin-left:0 !important;margin-right:auto !important}.ugb-9ab84d0 .ugb-inner-block{text-align:left}<\/style><div class=\"ugb-inner-block\"><div class=\"ugb-block-content\"><div class=\"ugb-heading__top-line\"><\/div><h3 class=\"ugb-heading__title\">Start<\/h3><\/div><\/div><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Use Github to enter the official X-UI repository:<a href=\"https:\/\/github.com\/sprov065\/x-ui\" title=\"https:\/\/github.com\/sprov065\/x-ui\">https:\/\/github.com\/sprov065\/x-ui<\/a><\/strong><\/li><\/ul>\n\n\n\n<p class=\"has-text-align-justify\">Copy the officially recommended script:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:7px\"><code>bash &lt;(curl -Ls https:\/\/raw.githubusercontent.com\/vaxilu\/x-ui\/master\/install.sh)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Copy the above code to your VPS for execution,<strong>If you are prompted that the curl tool is not installed, please install the curl tool first<\/strong><\/li><\/ul>\n\n\n\n<p>After execution, we should see the following output:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"505\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5b89\u88c5\u7ed3\u679c-1024x505.png\" alt=\"\" class=\"wp-image-3334\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5b89\u88c5\u7ed3\u679c-1024x505.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5b89\u88c5\u7ed3\u679c-300x148.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5b89\u88c5\u7ed3\u679c-768x379.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5b89\u88c5\u7ed3\u679c-18x9.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5b89\u88c5\u7ed3\u679c.png 1406w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Installation complete<\/figcaption><\/figure>\n\n\n\n<p>After installation, we can get the configuration content of the panel in \/usr\/local\/x-ui.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Go to the official Cloudflare website, add an A record (subdomain), and point to the IP address of the VPS<\/strong><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/A\u8bb0\u5f55-1024x462.png\" alt=\"\" class=\"wp-image-3335\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/A\u8bb0\u5f55-1024x462.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/A\u8bb0\u5f55-300x135.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/A\u8bb0\u5f55-768x347.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/A\u8bb0\u5f55-18x8.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/A\u8bb0\u5f55.png 1055w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>\u6dfb\u52a0A\u8bb0\u5f55<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Please note, do not open the proxy after adding, only DNS resolution. How to judge whether to enable CDN proxy? Very simple, there is a cloud under the proxy status, the orange cloud means CDN is enabled, and the gray cloud means DNS resolution only.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">After the addition is complete, we open a new web page and enter your<strong>domain:54321<\/strong>(the initial port of the panel), press Enter to enter our login interface.<\/p>\n\n\n\n<p>The login interface looks like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"441\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-1024x441.png\" alt=\"\" class=\"wp-image-3336\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-1024x441.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-300x129.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-768x331.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-18x8.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>X-UI login<\/figcaption><\/figure>\n\n\n\n<p>We use the default user name and password to log in to enter the X-UI settings interface:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"311\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762-1024x311.png\" alt=\"\" class=\"wp-image-3337\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762-1024x311.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762-300x91.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762-768x233.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762-1536x466.png 1536w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762-18x5.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bbe\u7f6e\u754c\u9762.png 1912w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>\u8bbe\u7f6e\u754c\u9762<\/figcaption><\/figure>\n\n\n\n<p><strong>It is strongly recommended to reset the panel port and user name, login password in the panel settings immediately after logging in, and then restart the panel<\/strong>. Otherwise, someone will try to log in with the default account password.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>New Proxy<\/strong><\/li><\/ul>\n\n\n\n<p>Click<strong>\u201c\u5165\u7ad9\u5217\u8868\u201d<\/strong>to add new proxy<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"317\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9-1024x317.png\" alt=\"\" class=\"wp-image-3338\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9-1024x317.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9-300x93.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9-768x238.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9-1536x476.png 1536w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9-18x6.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u5165\u7ad9\u8282\u70b9.png 1896w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Add new proxy<\/figcaption><\/figure>\n\n\n\n<p>Setup Proxy<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-1-1024x517.png\" alt=\"\" class=\"wp-image-3339\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-1-1024x517.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-1-300x151.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-1-768x388.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-1-18x9.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-1.png 1201w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Proxies setup<\/figcaption><\/figure>\n\n\n\n<p>If you do not have a CDN or other requirements, you can leave other settings and click \"<strong>\u6dfb\u52a0<\/strong>\" to finish adding the node.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Get url link or QR code<\/strong><\/li><\/ul>\n\n\n\n<p>After adding the node, we click<strong>\u67e5\u770b<\/strong>, click Copy Connection at the bottom right to get the connection. It can be added in the V2rayN App<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"493\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-2.png\" alt=\"\" class=\"wp-image-3340\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-2.png 826w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-2-300x179.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-2-768x458.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-2-18x12.png 18w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><figcaption>Get link<\/figcaption><\/figure>\n\n\n\n<p>To get the QR code, click the QR code icon,and now you can use V2rayNG or Shadowrocket etc to scan<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"221\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-3-1024x221.png\" alt=\"\" class=\"wp-image-3341\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-3-1024x221.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-3-300x65.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-3-768x166.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-3-18x4.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-3.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Get OR code<\/figcaption><\/figure>\n\n\n\n<p>At this point, the process of using X-UI to build proxy is complete.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>It should be noted that CDN application is not supported after the above steps are completed.<\/strong>\u5982\u679c\u60f3\u652f\u6301CDN\u5957\u7528\uff0c\u5219\u7ee7\u7eed\u53c2\u8003\u4ee5\u4e0b\u6b65\u9aa4<\/p>\n\n\n\n<div class=\"wp-block-ugb-heading ugb-heading ugb-c207408 ugb-main-block\"><style>.ugb-c207408 .ugb-heading__title{text-align:left}.ugb-c207408 .ugb-heading__top-line{margin-left:0 !important;margin-right:auto !important}.ugb-c207408 .ugb-inner-block{text-align:left}<\/style><div class=\"ugb-inner-block\"><div class=\"ugb-block-content\"><div class=\"ugb-heading__top-line\"><\/div><h3 class=\"ugb-heading__title\">CDN Service<\/h3><\/div><\/div><\/div>\n\n\n\n<p class=\"has-text-align-justify\">If you need to support CDN application, you also need to apply for a set of SSL certificates. This set of certificates is actually used for the authentication of your subdomain, please do not confuse it with the certificate of the main domain!<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Here we use ACME to apply for the certificate. The application mode used in this tutorial is the DNS API mode. In short, it uses the API provided by the nameserver provider of your domain name to complete the certificate issuance. Using this mode does not depend on port opening, etc., and the success rate is currently the highest.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">In order to help you simplify the entire operation process, I wrote a script to facilitate you to quickly apply for a certificate. If you don't want to read so much, just use the entire script directly. The specific usage is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash &lt;(curl -Ls https:\/\/raw.githubusercontent.com\/FranzKafkaYu\/BashScripts\/main\/SSLAutoInstall\/SSLAutoInstall.sh)<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-justify\">If you want to know more details, please follow the steps below to take a closer look~<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Install acme<\/strong><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>curl https:\/\/get.acme.sh | sh\t<\/code><\/pre>\n\n\n\n<p>After installation, a folder such as .acme.sh will be generated in the root directory, which can be viewed using the ls -la command.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Setup Cloudflare API:<\/strong><\/li><\/ul>\n\n\n\n<p>Log in to Cloudflare's official website, and in the API area in the lower left corner, click<strong>\u201c\u83b7\u53d6\u60a8\u7684API\u4ee4\u724c\u201d<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c-1024x574.png\" alt=\"\" class=\"wp-image-3342\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c-1024x574.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c-300x168.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c-768x430.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c-1536x861.png 1536w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c-18x10.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/AP\u4ee4\u724c.png 1558w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>API\u4ee4\u724c<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Click to enter the secondary page, click API Token, find the Global API Key under the API key, and view it<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u67e5\u770bAPI-1024x499.png\" alt=\"\" class=\"wp-image-3343\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u67e5\u770bAPI-1024x499.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u67e5\u770bAPI-300x146.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u67e5\u770bAPI-768x374.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u67e5\u770bAPI-18x9.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u67e5\u770bAPI.png 1072w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>\u67e5\u770bAPI\u4ee4\u724c<\/figcaption><\/figure>\n\n\n\n<p>Please copy this API Key to your local. Enter the following command to import environment variables (<strong>When copying and pasting, please remove \/\/ \u200b\u200band the following content by yourself. This tutorial is only for comments, and \/\/ and the following content are not needed in actual use.<\/strong>\uff09\uff1a<\/p>\n\n\n\n<p>export CF_Key=&#8221;***********************&#8221; \/\/Global API key<\/p>\n\n\n\n<p>export CF_Email=<a href=\"mailto:530547183@qq.com\">***************.com<\/a>&nbsp; \/\/Cloudfare register Email<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Switch CA to Let's Encrypt<\/strong><\/li><\/ul>\n\n\n\n<p class=\"has-text-align-justify\">Since the default certificate CA of the Acme script is ZeroSSL, it is not very convenient to use. Therefore, it is recommended that you change the CA to Let's Encrypt. The switching command is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.acme.sh\/acme.sh --set-default-ca  --server  letsencrypt<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Issue a certificate<\/strong><\/li><\/ul>\n\n\n\n<p>Use the following command for certificate signing:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u521b\u5efa\u6587\u4ef6\u5939\nmkdir \/root\/cert\n#\u7b7e\u53d1\u8bc1\u4e66\n~\/.acme.sh\/acme.sh --issue --dns dns_cf -d <strong>YourDomain<\/strong> -d *.<strong>YourDomain<\/strong>\nmkdir \/root\/cert\n#\u66f4\u6539\u6743\u9650\nchmod -R 755 \/root\/cert<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Install<\/strong><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.acme.sh\/acme.sh --installcert  -d  <strong>YourDomain<\/strong> -d *.<strong>YourDomain<\/strong> --ca-file \/root\/cert\/ca.cer --cert-file \/root\/cert\/<strong>YourDomain<\/strong>.cer --key-file   \/root\/cert\/<strong>YourDomain<\/strong>.key --fullchain-file \/root\/cert\/fullchain.cer<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Set up automatic updates<\/strong><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.acme.sh\/acme.sh --upgrade --auto-upgrade<\/code><\/pre>\n\n\n\n<p>The installation is successful as shown below:<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"239\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bc1\u4e66\u5b89\u88c5-1-1024x239.png\" alt=\"\" class=\"wp-image-3349\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bc1\u4e66\u5b89\u88c5-1-1024x239.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bc1\u4e66\u5b89\u88c5-1-300x70.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bc1\u4e66\u5b89\u88c5-1-768x179.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bc1\u4e66\u5b89\u88c5-1-18x4.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u8bc1\u4e66\u5b89\u88c5-1.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Installation<\/figcaption><\/figure>\n\n\n\n<p>After installing the certificate, we can set up TLS and apply CDN.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Attentions\uff1a<\/p>\n\n\n\n<p>1<strong>.YourDomain represents your own domain name, please replace it with your own domain name when using the command<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">2.<strong>The domain name applied for in this tutorial is a generic domain name certificate, which can be used for an unlimited number of second-level domain names<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">3.<strong>When using the certificate public key, use fullchain.cer first, which will avoid many strange problems<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Setup TLS<\/strong><\/li><\/ul>\n\n\n\n<p>Enter the panel interface, add an inbound node, and set as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"723\" height=\"862\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/03\/image.png\" alt=\"\" class=\"wp-image-3813\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/03\/image.png 723w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/03\/image-252x300.png 252w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2022\/03\/image-10x12.png 10w\" sizes=\"auto, (max-width: 723px) 100vw, 723px\" \/><\/figure>\n\n\n\n<p>Points to note during setup:<\/p>\n\n\n\n<p><strong>1. The port needs to be a port supported by Cloudflare for distribution, such as 443, etc.<\/strong><\/p>\n\n\n\n<p><strong>2. The application of CDN needs to be matched with WebSocket, please select ws in the transmission setting item<\/strong><\/p>\n\n\n\n<p>3<strong>The Websocket path can be arbitrary, but it is best not to be the root path<\/strong><\/p>\n\n\n\n<p><strong>4.Please fill in the public key file path and key file path according to the actual location of your certificate installation<\/strong><\/p>\n\n\n\n<p><strong>5.When using certificates and keys, in addition to setting the path, you can also fill in the content of the certificate file content to achieve the purpose of use<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">After adding the node, we go back to Cloudflare and make the gray cloud orange. Then we go back to the VPS side and use ping + domain name to check whether the IP has changed. If it is no longer the IP of our VPS, it means that the CDN has been successfully applied.<\/p>\n\n\n\n<div class=\"wp-block-ugb-heading ugb-heading ugb-617e4fa ugb-main-block\"><style>.ugb-617e4fa .ugb-heading__title{text-align:left}.ugb-617e4fa .ugb-heading__top-line{margin-left:0 !important;margin-right:auto !important}.ugb-617e4fa .ugb-inner-block{text-align:left}<\/style><div class=\"ugb-inner-block\"><div class=\"ugb-block-content\"><div class=\"ugb-heading__top-line\"><\/div><h3 class=\"ugb-heading__title\">Apply CDN for X-UI pannel<\/h3><\/div><\/div><\/div>\n\n\n\n<p class=\"has-text-align-justify\">In addition to the nodes we build can apply CDN, our X-UI panel also supports applying CDN. If the X-UI panel needs to also apply CDN, we need to modify the port that the panel listens on in the panel to the port supported by Cloudflare, and set the SSL certificate key path at the same time.<strong>Pay attention here<\/strong>\u610f\uff0c<strong>\u9762\u677f\u7684\u76d1\u542c\u7aef\u53e3\u4e00\u5b9a\u4e0d\u8981\u4e0e\u4f60\u7684\u8282\u70b9\u5171\u7528\u540c\u4e00\u7aef\u53e3\u3002<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"399\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3-1024x399.png\" alt=\"\" class=\"wp-image-3346\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3-1024x399.png 1024w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3-300x117.png 300w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3-768x299.png 768w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3-1536x599.png 1536w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3-18x7.png 18w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/\u9762\u677f\u7aef\u53e3.png 1637w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>\u66f4\u6539\u9762\u677f\u8bbe\u7f6e<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify translation-block\">After setting, remember to restart the panel, re-enter: https:\/\/domain name+port, and enter the panel interface normally. At the same time, we will find that our web page is already encrypted.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"509\" height=\"716\" src=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-4.png\" alt=\"\" class=\"wp-image-3347\" srcset=\"https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-4.png 509w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-4-213x300.png 213w, https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/image-4-9x12.png 9w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/figure>\n\n\n\n<p>At this point, the panel also supports applying CDN.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">The above is the entire tutorial for using X-UI. You can test and use it according to the tutorial. If you have any questions, you can communicate with me in the comment area. If you still have questions, I also uploaded a video tutorial for your reference:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"X-UI\u79d1\u5b66\u4e0a\u7f51\u6559\u7a0b|\u81ea\u5efa\u4ee3\u7406\u79d1\u5b66\u4e0a\u7f51|\u591a\u7aef\u53e3\u591a\u7528\u6237\u591a\u534f\u8bae\u53ef\u89c6\u5316\u64cd\u4f5c|\u62ef\u6551\u5c0f\u767d\" width=\"1290\" height=\"726\" src=\"https:\/\/www.youtube.com\/embed\/Ep4I92PLwSM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">I used it for a day after the completion of the construction, and it is very convenient and quick to use in general, which is very suitable for novice use. I would also like to thank the developers of X-UI. Their selfless efforts brought us such a useful tool, Respect!<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Attention\uff1a<\/p><cite> The content of this blog is only for personal knowledge sharing, please do not reprint or disseminate the content of this blog at will. Please do not use the knowledge in the blog for illegal activities. If you need to share the blog content in a small area, please indicate the source. <\/cite><\/blockquote><\/figure>\n\n\n\n<p><\/p>\n        <div class=\"booster-block booster-reactions-block\">\n            <div class=\"twp-reactions-icons\">\n                \n                <div class=\"twp-reacts-wrap\">\n                    <a react-data=\"be-react-1\" post-id=\"3331\" class=\"be-face-icons un-reacted\" href=\"javascript:void(0)\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.coderfan.org\/wp-content\/plugins\/booster-extension\/\/assets\/icon\/happy.svg\" alt=\"Happy\">\n                    <\/a>\n                    <div class=\"twp-reaction-title\">\n                        Happy                    <\/div>\n                    <div class=\"twp-count-percent\">\n                                                    <span style=\"display: none;\" class=\"twp-react-count\">25<\/span>\n                        \n                                                <span class=\"twp-react-percent\"><span>83<\/span> %<\/span>\n                                            <\/div>\n                <\/div>\n\n                <div class=\"twp-reacts-wrap\">\n                    <a react-data=\"be-react-2\" post-id=\"3331\" class=\"be-face-icons un-reacted\" href=\"javascript:void(0)\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.coderfan.org\/wp-content\/plugins\/booster-extension\/\/assets\/icon\/sad.svg\" alt=\"Sad\">\n                    <\/a>\n                    <div class=\"twp-reaction-title\">\n                        Sad                    <\/div>\n                    <div class=\"twp-count-percent\">\n                                                    <span style=\"display: none;\" class=\"twp-react-count\">0<\/span>\n                                                                        <span class=\"twp-react-percent\"><span>0<\/span> %<\/span>\n                                            <\/div>\n                <\/div>\n\n                <div class=\"twp-reacts-wrap\">\n                    <a react-data=\"be-react-3\" post-id=\"3331\" class=\"be-face-icons un-reacted\" href=\"javascript:void(0)\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.coderfan.org\/wp-content\/plugins\/booster-extension\/\/assets\/icon\/excited.svg\" alt=\"Excited\">\n                    <\/a>\n                    <div class=\"twp-reaction-title\">\n                        Excited                    <\/div>\n                    <div class=\"twp-count-percent\">\n                                                    <span style=\"display: none;\" class=\"twp-react-count\">2<\/span>\n                                                                        <span class=\"twp-react-percent\"><span>7<\/span> %<\/span>\n                                            <\/div>\n                <\/div>\n\n                <div class=\"twp-reacts-wrap\">\n                    <a react-data=\"be-react-6\" post-id=\"3331\" class=\"be-face-icons un-reacted\" href=\"javascript:void(0)\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.coderfan.org\/wp-content\/plugins\/booster-extension\/\/assets\/icon\/sleepy.svg\" alt=\"Sleepy\">\n                    <\/a>\n                    <div class=\"twp-reaction-title\">\n                        Sleepy                    <\/div>\n                    <div class=\"twp-count-percent\">\n                                                    <span style=\"display: none;\" class=\"twp-react-count\">1<\/span>\n                        \n                                                <span class=\"twp-react-percent\"><span>3<\/span> %<\/span>\n                                            <\/div>\n                <\/div>\n\n                <div class=\"twp-reacts-wrap\">\n                    <a react-data=\"be-react-4\" post-id=\"3331\" class=\"be-face-icons un-reacted\" href=\"javascript:void(0)\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.coderfan.org\/wp-content\/plugins\/booster-extension\/\/assets\/icon\/angry.svg\" alt=\"Angry\">\n                    <\/a>\n                    <div class=\"twp-reaction-title\">Angry<\/div>\n                    <div class=\"twp-count-percent\">\n                                                    <span style=\"display: none;\" class=\"twp-react-count\">2<\/span>\n                                                                        <span class=\"twp-react-percent\"><span>7<\/span> %<\/span>\n                        \n                    <\/div>\n                <\/div>\n\n                <div class=\"twp-reacts-wrap\">\n                    <a react-data=\"be-react-5\" post-id=\"3331\" class=\"be-face-icons un-reacted\" href=\"javascript:void(0)\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.coderfan.org\/wp-content\/plugins\/booster-extension\/\/assets\/icon\/surprise.svg\" alt=\"Surprise\">\n                    <\/a>\n                    <div class=\"twp-reaction-title\">Surprise<\/div>\n                    <div class=\"twp-count-percent\">\n                                                    <span style=\"display: none;\" class=\"twp-react-count\">0<\/span>\n                                                                        <span class=\"twp-react-percent\"><span>0<\/span> %<\/span>\n                                            <\/div>\n                <\/div>\n\n            <\/div>\n        <\/div>","protected":false},"excerpt":{"rendered":"<p>X-UI is suitable for beginners to quickly build shadowsocks\/Vmess\/Trojan proxies etc.<\/p>","protected":false},"author":1,"featured_media":3336,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":2,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[38,36,37],"class_list":["post-3331","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bypass-firewalls","tag-gfw","tag-x-ui","tag-xray"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[]}},"aioseo_notices":[],"featured_image_urls":{"full":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png",1536,662,false],"thumbnail":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-150x150.png",150,150,true],"medium":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-300x129.png",300,129,true],"medium_large":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-768x331.png",768,331,true],"large":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-1024x441.png",1024,441,true],"1536x1536":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png",1536,662,false],"2048x2048":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png",1536,662,false],"trp-custom-language-flag":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-18x8.png",18,8,true]},"post_excerpt_stackable":"<p>\u9002\u5408\u65b0\u624b\u4f7f\u7528\u7684X-UI\uff0c\u5feb\u901f\u642d\u5efa\u79d1\u5b66\u4e0a\u7f51\u8282\u70b9\u3002<\/p>\n","category_list":"<a href=\"https:\/\/blog.coderfan.org\/en\/category\/bypass-firewalls\" rel=\"category tag\">\u79d1\u5b66\u4e0a\u7f51<\/a>","author_info":{"name":"FranzKafka95","url":"https:\/\/blog.coderfan.org\/en\/author\/yushenglonely95"},"comments_num":"70 comments","featured_image_urls_v2":{"full":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png",1536,662,false],"thumbnail":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-150x150.png",150,150,true],"medium":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-300x129.png",300,129,true],"medium_large":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-768x331.png",768,331,true],"large":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-1024x441.png",1024,441,true],"1536x1536":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png",1536,662,false],"2048x2048":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762.png",1536,662,false],"trp-custom-language-flag":["https:\/\/blog.coderfan.org\/wp-content\/uploads\/2021\/07\/XUI\u767b\u5f55\u754c\u9762-18x8.png",18,8,true]},"post_excerpt_stackable_v2":"<p>\u9002\u5408\u65b0\u624b\u4f7f\u7528\u7684X-UI\uff0c\u5feb\u901f\u642d\u5efa\u79d1\u5b66\u4e0a\u7f51\u8282\u70b9\u3002<\/p>\n","category_list_v2":"<a href=\"https:\/\/blog.coderfan.org\/en\/category\/bypass-firewalls\" rel=\"category tag\">\u79d1\u5b66\u4e0a\u7f51<\/a>","author_info_v2":{"name":"FranzKafka95","url":"https:\/\/blog.coderfan.org\/en\/author\/yushenglonely95"},"comments_num_v2":"70 comments","_links":{"self":[{"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/posts\/3331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/comments?post=3331"}],"version-history":[{"count":27,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/posts\/3331\/revisions"}],"predecessor-version":[{"id":4019,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/posts\/3331\/revisions\/4019"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/media\/3336"}],"wp:attachment":[{"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/media?parent=3331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/categories?post=3331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.coderfan.org\/en\/wp-json\/wp\/v2\/tags?post=3331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}