Physical Address:
ChongQing,China.
WebSite:
使用X-UI面板有一段时间了,总体来讲非常满意。自己一边折腾一边进行了总结,今天这篇文章就给大家带来X-UI的进阶使用教程,帮助你更好地使用X-UI。
今天博客要讲诉的重点包括如下内容:
我在一个月前提交了一笔PR,在x-ui.sh脚本中增加了安装后提示修改面板设置(避免太多童鞋使用默认设置而被人利用漏洞)与证书申请的功能,具体可参见这笔提交。现在可以更新该脚本进行一键申请啦。
利用集成的申请证书功能需要获得Cloudlfare的API与账户邮箱信息,由于该脚本利用DNS API进行申请,完全不依赖于任何端口,具体使用说明可以参见我的个人仓库说明。简单来讲,该脚本将很多环节都省却了,你只需要输入以下信息即可完成证书申请,示意图如下:
同时该脚本申请的证书是泛域名证书,这就意味着你可以将这一份证书用于除了自身顶级域名外的无限个二级域名,你可以通过复制拷贝的方式拷贝到其他服务器上使用。
在X-UI内使用证书时,建议大家使用fullchain证书,什么是fullchain证书呢,其实就是包含了整个证书链内容的证书。如下图所示:
使用fullchain证书的好处就是可以最大程度上避免因为证书问题导致的无法连接问题。
另外,在进行节点证书设置时,除了使用证书路径,还可以将公钥与密钥证书的内容拷贝至对应设置内进行使用。不过这样使用不太方便,最佳实践还是使用路径,这样即使证书更新,你也无需进行二次设置。
需要说明的是,当前申请的证书其实是RSA对称加密的,如果你需要申请ECC证书(个人认为没什么必要),需要自行参考acme的官方说明文档进行申请。
在X-UI的使用中,防火墙的设置是很重要的一点。设置防火墙一来是保障我们服务器的安全,而来也是为了保护我们的面板安全。在X-UI的使用中,防护墙的设定包含:
1)面板登录端口:一般推荐将X-UI的面板登录端口设定为Cloudflare准许的HTTPS端口,如443,2053,2083,2087,2096与8443。这样如果我们需要开启CDN,我们可以正常访问面板。关于防火墙的设定,我推荐使用UFW进行管理与设定,以Ubantu系统为例子:
安装UFW防火墙工具:
sudo apt-get update && sudo apt install ufw
开启UFW防火墙:
sudo ufw enable
开放面板端口(以8443为例):
ufw allow from xx.xxx.xx.xx to any port 8443
这里实际上将IP地址xx.xxx.xx.xx加入了白名单(allow代表允许),限定了只允许特定IP访问面板登录端口。在X-UI使用时,我推荐大家将自己的几个服务器互相添加进白名单内,这样你可以通过不同的服务器节点进入你的面板。事实上,如果你不添加任何白名单,那么你只有通过面板上设定的节点访问控制你的面板。为了保险起见(如面板设定的节点被封,端口或者IP被封),你最好将你的其他服务器添加到白名单内,一旦意外情况出现,你还是可以通过其他服务的节点访问面板,进行修改。大家可以看看我的UFW设定:
这里我的面板端口设定为2096,将我的其他服务器添加进了白名单内。
需要说明的是,在开启UFW后,请务必开放你的SSH访问端口与你的节点端口。
查看当前UFW的设定:
sudo ufw status
需要说明的是,这里的日志并非X-UI自身的日志,而是Xray程序的日志。有些时候为了排查问题或者检查状态,我们不得不开启Xray的日志。如果需要开启日志,我们需要在面板控制台里修改配置模板,如下图所示:
在配置模板内,我们添加了log相关字段,如我的设定如下:
"log": {
"access": "/usr/local/x-ui/bin/access.log",
"error": "/usr/local/x-ui/bin/error.log",
"loglevel": "warning",
"dnsLog": false
}
这里access设定的是访问日志,error设定的是错误日志,loglevel用于设定日志等级,推荐为warning,dnsLog用于设定DNS查询的日志,推荐为false。如果你有fakeDNS/DoH/DoT等需求则建议设定为true。
设定好以后我们重启面板,进入服务器对应目录内查看日志,就能看到以下信息:
这里被打码的部分是客户端的IP,右侧为访问的具体信息。由于当前X-UI会后期性地利用Xray的API进行流量查询,会导致日志内出现很多重复的无用的日志,我们可以使用以下命令进行过滤输出:
sudo cat access.log | grep -v 127.0.0.1
查看被拒绝的连接:
sudo cat access.log | grep rejected
输出结果如图所示:
我建议大家时不时检查一下自己的节点日志,尤其是被拒绝的连接。很大程度上来自于墙的探测,如果发现这种探测,建议大家通过UFW或者Fail2ban将其加入给名单。
此外,为了便于我们更好的看日志,建议大家修改服务器的时区为上海时区,这样对于我们看日志会有比较好的帮助。
这里再提及一点,在开启日志之后,日志会不断进行累积,如果长时间不清理,会造成不必要的内存消耗,这里推荐大家通过脚本进行检测删除,利用Cron设置周期性任务,大家可以直接使用我的脚本进行设定,在根目录下执行以下命令即可:
cd /usr/local/x-ui/bin && wget https://github.com/FranzKafkaYu/BashScripts/blob/main/FileManuplite/autoCheck.sh
需要说明的是,如果你的日志设定的目录与我的不一致,请自行修改该脚本进行适配。修改之后请通过crontab -e命令加入如下定时任务:
00 0 * * 6 /usr/local/x-ui/bin/autoCheck.sh >> /usr/local/x-ui/bin/autoCheck.log
设定完成后,就能自动检测日志大小并进行删除,在删除时还会自行重启X-UI,保障X-UI的顺利运行。
关于节点设置其实是一个很复杂的问题,由于当前X-UI存在一些局限性,并不能完全发挥Xray的优点。但还是有一些需要注意的点,具体包括:
1.尽量选择高位端口,如果你需要设定回落,则尽量使用443作为外露的端口
2.设定到期时间,到期后更改密码或端口
3.尽量不要使用xtls,根据最新的使用情况与issue提交情况来看,xtls存在一定风险
除了以上内容外,还有一些其他可以注意的点,具体包括
1.定期更新geoip.dat与geosite.dat资源文件
通过添加如下Cron任务即可:
30 9 * * * /usr/bin/curl -s -L -o /usr/local/x-ui/bin/geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
30 9 * * * /usr/bin/curl -s -L -o /usr/local/x-ui/bin/geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
2.非常时期请开启CDN
在一些重要的时间点,墙的动作可能会加大,此时尽量开启CDN进行使用。虽然开启CDN不可避免会降低速度,但是能后最大程度上保证安全,别忘了开启CDN需要使用ws+TLS哦~
3.务必开启BBR加速
bbr的增益其实是很大的,X-UI脚本集成了一键开启BBR的功能,请务必开启
以上就是本篇博客的内容啦~
另外,由于原作者开发进度已经放慢,我自己也在学习go语言,于是将原作者的仓库进行了fork并进行了功能上的更新,目前拓展的功能包括
同时也开放了issue区,希望大家可以进行使用并给我反馈,我会不定期向原仓库进行PR,一起改善X-UI,项目地址请点击此处
I really enjoyed so much creativity and innovation you
You’ve got all the right moves.
There is only a small problem in popups display/value member not changing with selected index of combo box
Overall, it’s great and of course useful , Thank you
Hi, thanks alot for your explanation.
I wanna take backup from inbound nodes and restore them on another server without creating and changing nodes one by one
could you please help me?
I`m using ubuntu.
thank you inadvance.
Just backup /etc/x-ui/x-ui.db and import it to another server,that’s enough.you can find more info in my github wiki.
如果发现这种探测,建议大家通过UFW或者Fail2ban将其加入给名单。
这句话是不是漏了啥关键字?
Thanks a lot! It was really helpful.
How can i see inbound’s id or remark as well as ip address in access log?
If you have set up log correctly,you can distinguish users by Email,which is configured in inbounds.
Thank’s for answering.
I’m all new to all this. I couldn’t find such settings to add email for my users in my panel .How can i do it?
it depends on which version do you use,my repo support such feature.
I use vaxilu version.
How can i add this feature?
Adding email for users in terminal will do the job; How can i do this?
vaxilu version doesn’t support such function,if you need such function,you need use my version instead.
你好,我想知道 每个端口最多为3个用户 这个能否自己修改为多个用户?在哪里修改的?谢谢了
请自行修改源码,我的版本不打算放开限制。
Hi Thanks a lot! It was really helpful, How can i add email?
install my latest version and when you add user there would be a email option.
thanks alot for your explanation, where i can find your latest version
please check my github repo:https://github.com/FranzKafkaYu/x-ui
how can I limit 2 users only use a url configuration ?
how limit 2users on trojan ? and how work email on configure ? and how see how many are online device ?
is it possible to use x-ui.db file on another vps? when i replace x-ui.db x-ui service wont start
“需要说明的是,如果你的日志设定的目录与我的不一致,请自行修改该脚本进行适配。修改之后请通过conrtab -e命令加入如下定时任务:”
bro,这里是crontab -e不是conrtab -e
how can i edit HTML files for the web panel? i want to add some items to the panel i cant find the html and assets files.
/web/assets/html,but I didn’t release my code.so you can’t edit in my version.I’m Sorry.
Hello
Why the version
XTLS/Xray-core
Can’t update to the last version
https://github.com/HexaSoftwareTech/x-ui
I don’t know, you should ask the Author,not me.
您好,今天在看您的GitHub文档时顺手点了加入群组,但是由于在看GitHub,没看见无名机器人的验证,现在被ban了,用户名是@mumu9615,可否帮助解除禁止,谢谢您的付出!
请教一下,x-ui是很久没更新了嘛?
https://github.com/FranzKafkaYu/x-ui
我基于原版进行覆盖升级时不成功,显示下载安装文件失败,不知道有谁成功过吗?
大哥,我想问一下,新版的xui能实现api访问,
上传/下载量,总用量(上传+下载),到期时间吗?
未对外开放API.
想改tg bot的源码 是在哪里? 找了一通没找到 现在还是go小白
已經在防火牆加入XUI port, 請問為何白屏
大佬请收下我的双膝
你好,想问问就是我的证书可以申请下来,但是在网页上还是显示https不安全,是因为什么原因吗?