首页
关于我们
友链链接
壁纸下载
更多
统计中心
热点搜索
图床上传
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,501 阅读
2
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,200 阅读
3
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,229 阅读
4
ZFAKA小店Docker版之 数据的备份和迁移
5,064 阅读
5
v2rayN基础使用教程、配置说明、添加订阅、路由选择
4,909 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
登录
Search
标签搜索
vps
typecho
linux
bench
mysql
cloudflare
nginx
lnmp
ssl
empirecms
openwrt
centos
google
docker
n1
301
qbittorrent
telegram
free
onedrive
V+变量
累计撰写
276
篇文章
累计收到
217
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
页面
关于我们
友链链接
壁纸下载
统计中心
热点搜索
图床上传
搜索到
2
篇与
的结果
2025-03-05
X-UI的手动安装教程,解救自动安装失败的VPS
X-UI是一款非常优秀的科学工具,关于X-UI的特点、自动安装和使用教程,可以查看本站之前的文章:3x-ui安装指南+搭建reality+申请ssl证书。很多网友反馈采用自动脚本安装会失败,包括检测VPS内核、系统识别等等各种原因,其实github自动脚本install.sh中已经有了安装过程,今天就基于该脚本的解读,介绍下如何手动安装X-UI脚本:1 用SSH软件登录你的VPS2 打开/usr/local目录cd /usr/local/3 下载对应系统的压缩包wget -N https://github.com/MHSanaei/3x-ui/releases/download/v2.5.3/x-ui-linux-amd64.tar.gz4 解压,正常解压会产生一个x-ui的文件夹tar zxvf x-ui-linux-amd64.tar.gz5 打开上一步解压产生的x-ui文件夹,查看目录下的文件是否解压正常cd x-ui ls -a6 变更x-ui程序的权限chmod +x x-ui7 安装x-uibash ./x-ui.sh输入上述命令后,正常会弹出3x-ui的安装界面,选择1就是安装,如果安装过可以输入10查看目前安装的信息,记住安装的信息,然后通过浏览器登录,地址为 http://ip地址:端口号/面板路径,用户名和密码见快捷键10提供的当前配置信息:╔────────────────────────────────────────────────╗ │ 3X-UI Panel Management Script │ │ 0. Exit Script │ │────────────────────────────────────────────────│ │ 1. Install │ │ 2. Update │ │ 3. Update Menu │ │ 4. Legacy Version │ │ 5. Uninstall │ │────────────────────────────────────────────────│ │ 6. Reset Username & Password & Secret Token │ │ 7. Reset Web Base Path │ │ 8. Reset Settings │ │ 9. Change Port │ │ 10. View Current Settings │ │────────────────────────────────────────────────│ │ 11. Start │ │ 12. Stop │ │ 13. Restart │ │ 14. Check Status │ │ 15. Logs Management │ │────────────────────────────────────────────────│ │ 16. Enable Autostart │ │ 17. Disable Autostart │ │────────────────────────────────────────────────│ │ 18. SSL Certificate Management │ │ 19. Cloudflare SSL Certificate │ │ 20. IP Limit Management │ │ 21. Firewall Management │ │ 22. SSH Port Forwarding Management │ │────────────────────────────────────────────────│ │ 23. Enable BBR │ │ 24. Update Geo Files │ │ 25. Speedtest by Ookla │ ╚────────────────────────────────────────────────╝ Panel state: Stop Start automatically: Yes xray state: Stop Please enter your selection [0-25]: 18 激活x-ui的Servicecp -f x-ui.service /etc/systemd/system/ systemctl daemon-reload systemctl enable x-ui逐行输入9 启动x-ui Servicesystemctl start x-ui正常这个时候就可以正常使用了10 其他快捷命令systemctl stop x-ui systemctl restart x-ui systemctl status x-ui参考源程序#!/bin/bash red='\033[0;31m' green='\033[0;32m' blue='\033[0;34m' yellow='\033[0;33m' plain='\033[0m' cur_dir=$(pwd) # check root [[ $EUID -ne 0 ]] && echo -e "${red}Fatal error: ${plain} Please run this script with root privilege \n " && exit 1 # Check OS and set release variable if [[ -f /etc/os-release ]]; then source /etc/os-release release=$ID elif [[ -f /usr/lib/os-release ]]; then source /usr/lib/os-release release=$ID else echo "Failed to check the system OS, please contact the author!" >&2 exit 1 fi echo "The OS release is: $release" arch() { case "$(uname -m)" in x86_64 | x64 | amd64) echo 'amd64' ;; i*86 | x86) echo '386' ;; armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;; armv7* | armv7 | arm) echo 'armv7' ;; armv6* | armv6) echo 'armv6' ;; armv5* | armv5) echo 'armv5' ;; s390x) echo 's390x' ;; *) echo -e "${green}Unsupported CPU architecture! ${plain}" && rm -f install.sh && exit 1 ;; esac } echo "arch: $(arch)" os_version="" os_version=$(grep "^VERSION_ID" /etc/os-release | cut -d '=' -f2 | tr -d '"' | tr -d '.') if [[ "${release}" == "arch" ]]; then echo "Your OS is Arch Linux" elif [[ "${release}" == "parch" ]]; then echo "Your OS is Parch Linux" elif [[ "${release}" == "manjaro" ]]; then echo "Your OS is Manjaro" elif [[ "${release}" == "armbian" ]]; then echo "Your OS is Armbian" elif [[ "${release}" == "alpine" ]]; then echo "Your OS is Alpine Linux" elif [[ "${release}" == "opensuse-tumbleweed" ]]; then echo "Your OS is OpenSUSE Tumbleweed" elif [[ "${release}" == "openEuler" ]]; then if [[ ${os_version} -lt 2203 ]]; then echo -e "${red} Please use OpenEuler 22.03 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "centos" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "ubuntu" ]]; then if [[ ${os_version} -lt 2004 ]]; then echo -e "${red} Please use Ubuntu 20 or higher version!${plain}\n" && exit 1 fi elif [[ "${release}" == "fedora" ]]; then if [[ ${os_version} -lt 36 ]]; then echo -e "${red} Please use Fedora 36 or higher version!${plain}\n" && exit 1 fi elif [[ "${release}" == "amzn" ]]; then if [[ ${os_version} != "2023" ]]; then echo -e "${red} Please use Amazon Linux 2023!${plain}\n" && exit 1 fi elif [[ "${release}" == "debian" ]]; then if [[ ${os_version} -lt 11 ]]; then echo -e "${red} Please use Debian 11 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "almalinux" ]]; then if [[ ${os_version} -lt 80 ]]; then echo -e "${red} Please use AlmaLinux 8.0 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "rocky" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use Rocky Linux 8 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "ol" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1 fi elif [[ "${release}" == "virtuozzo" ]]; then if [[ ${os_version} -lt 8 ]]; then echo -e "${red} Please use Virtuozzo Linux 8 or higher ${plain}\n" && exit 1 fi else echo -e "${red}Your operating system is not supported by this script.${plain}\n" echo "Please ensure you are using one of the following supported operating systems:" echo "- Ubuntu 20.04+" echo "- Debian 11+" echo "- CentOS 8+" echo "- OpenEuler 22.03+" echo "- Fedora 36+" echo "- Arch Linux" echo "- Parch Linux" echo "- Manjaro" echo "- Armbian" echo "- AlmaLinux 8.0+" echo "- Rocky Linux 8+" echo "- Oracle Linux 8+" echo "- OpenSUSE Tumbleweed" echo "- Amazon Linux 2023" echo "- Virtuozzo Linux 8+" exit 1 fi install_base() { case "${release}" in ubuntu | debian | armbian) apt-get update && apt-get install -y -q wget curl tar tzdata ;; centos | almalinux | rocky | ol) yum -y update && yum install -y -q wget curl tar tzdata ;; fedora | amzn | virtuozzo) dnf -y update && dnf install -y -q wget curl tar tzdata ;; arch | manjaro | parch) pacman -Syu && pacman -Syu --noconfirm wget curl tar tzdata ;; opensuse-tumbleweed) zypper refresh && zypper -q install -y wget curl tar timezone ;; *) apt-get update && apt install -y -q wget curl tar tzdata ;; esac } gen_random_string() { local length="$1" local random_string=$(LC_ALL=C tr -dc 'a-zA-Z0-9' </dev/urandom | fold -w "$length" | head -n 1) echo "$random_string" } config_after_install() { local existing_username=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'username: .+' | awk '{print $2}') local existing_password=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'password: .+' | awk '{print $2}') local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') local server_ip=$(curl -s https://api.ipify.org) if [[ ${#existing_webBasePath} -lt 4 ]]; then if [[ "$existing_username" == "admin" && "$existing_password" == "admin" ]]; then local config_webBasePath=$(gen_random_string 15) local config_username=$(gen_random_string 10) local config_password=$(gen_random_string 10) read -p "Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]: " config_confirm if [[ "${config_confirm}" == "y" || "${config_confirm}" == "Y" ]]; then read -p "Please set up the panel port: " config_port echo -e "${yellow}Your Panel Port is: ${config_port}${plain}" else local config_port=$(shuf -i 1024-62000 -n 1) echo -e "${yellow}Generated random port: ${config_port}${plain}" fi /usr/local/x-ui/x-ui setting -username "${config_username}" -password "${config_password}" -port "${config_port}" -webBasePath "${config_webBasePath}" echo -e "This is a fresh installation, generating random login info for security concerns:" echo -e "###############################################" echo -e "${green}Username: ${config_username}${plain}" echo -e "${green}Password: ${config_password}${plain}" echo -e "${green}Port: ${config_port}${plain}" echo -e "${green}WebBasePath: ${config_webBasePath}${plain}" echo -e "${green}Access URL: http://${server_ip}:${config_port}/${config_webBasePath}${plain}" echo -e "###############################################" echo -e "${yellow}If you forgot your login info, you can type 'x-ui settings' to check${plain}" else local config_webBasePath=$(gen_random_string 15) echo -e "${yellow}WebBasePath is missing or too short. Generating a new one...${plain}" /usr/local/x-ui/x-ui setting -webBasePath "${config_webBasePath}" echo -e "${green}New WebBasePath: ${config_webBasePath}${plain}" echo -e "${green}Access URL: http://${server_ip}:${existing_port}/${config_webBasePath}${plain}" fi else if [[ "$existing_username" == "admin" && "$existing_password" == "admin" ]]; then local config_username=$(gen_random_string 10) local config_password=$(gen_random_string 10) echo -e "${yellow}Default credentials detected. Security update required...${plain}" /usr/local/x-ui/x-ui setting -username "${config_username}" -password "${config_password}" echo -e "Generated new random login credentials:" echo -e "###############################################" echo -e "${green}Username: ${config_username}${plain}" echo -e "${green}Password: ${config_password}${plain}" echo -e "###############################################" echo -e "${yellow}If you forgot your login info, you can type 'x-ui settings' to check${plain}" else echo -e "${green}Username, Password, and WebBasePath are properly set. Exiting...${plain}" fi fi /usr/local/x-ui/x-ui migrate } install_x-ui() { cd /usr/local/ if [ $# == 0 ]; then tag_version=$(curl -Ls "https://api.github.com/repos/MHSanaei/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') if [[ ! -n "$tag_version" ]]; then echo -e "${red}Failed to fetch x-ui version, it may be due to GitHub API restrictions, please try it later${plain}" exit 1 fi echo -e "Got x-ui latest version: ${tag_version}, beginning the installation..." wget -N -O /usr/local/x-ui-linux-$(arch).tar.gz https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz if [[ $? -ne 0 ]]; then echo -e "${red}Downloading x-ui failed, please be sure that your server can access GitHub ${plain}" exit 1 fi else tag_version=$1 tag_version_numeric=${tag_version#v} min_version="2.3.5" if [[ "$(printf '%s\n' "$min_version" "$tag_version_numeric" | sort -V | head -n1)" != "$min_version" ]]; then echo -e "${red}Please use a newer version (at least v2.3.5). Exiting installation.${plain}" exit 1 fi url="https://github.com/MHSanaei/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz" echo -e "Beginning to install x-ui $1" wget -N -O /usr/local/x-ui-linux-$(arch).tar.gz ${url} if [[ $? -ne 0 ]]; then echo -e "${red}Download x-ui $1 failed, please check if the version exists ${plain}" exit 1 fi fi if [[ -e /usr/local/x-ui/ ]]; then systemctl stop x-ui rm /usr/local/x-ui/ -rf fi tar zxvf x-ui-linux-$(arch).tar.gz rm x-ui-linux-$(arch).tar.gz -f cd x-ui chmod +x x-ui # Check the system's architecture and rename the file accordingly if [[ $(arch) == "armv5" || $(arch) == "armv6" || $(arch) == "armv7" ]]; then mv bin/xray-linux-$(arch) bin/xray-linux-arm chmod +x bin/xray-linux-arm fi chmod +x x-ui bin/xray-linux-$(arch) cp -f x-ui.service /etc/systemd/system/ wget -O /usr/bin/x-ui https://raw.githubusercontent.com/MHSanaei/3x-ui/main/x-ui.sh chmod +x /usr/local/x-ui/x-ui.sh chmod +x /usr/bin/x-ui config_after_install systemctl daemon-reload systemctl enable x-ui systemctl start x-ui echo -e "${green}x-ui ${tag_version}${plain} installation finished, it is running now..." echo -e "" echo -e "┌───────────────────────────────────────────────────────┐ │ ${blue}x-ui control menu usages (subcommands):${plain} │ │ │ │ ${blue}x-ui${plain} - Admin Management Script │ │ ${blue}x-ui start${plain} - Start │ │ ${blue}x-ui stop${plain} - Stop │ │ ${blue}x-ui restart${plain} - Restart │ │ ${blue}x-ui status${plain} - Current Status │ │ ${blue}x-ui settings${plain} - Current Settings │ │ ${blue}x-ui enable${plain} - Enable Autostart on OS Startup │ │ ${blue}x-ui disable${plain} - Disable Autostart on OS Startup │ │ ${blue}x-ui log${plain} - Check logs │ │ ${blue}x-ui banlog${plain} - Check Fail2ban ban logs │ │ ${blue}x-ui update${plain} - Update │ │ ${blue}x-ui legacy${plain} - legacy version │ │ ${blue}x-ui install${plain} - Install │ │ ${blue}x-ui uninstall${plain} - Uninstall │ └───────────────────────────────────────────────────────┘" } echo -e "${green}Running...${plain}" install_base install_x-ui $1
2025年03月05日
60 阅读
1 评论
0 点赞
2025-01-20
3x-ui安装指南+搭建reality+申请ssl证书
3x-ui安装指南+搭建reality+申请ssl证书1 前言很久以前出过x-ui的视频和博客内容,但是由于时间过于久远,包括在技术上和更新上都有了一些变化,这里就重新写一下。github项目已经两年多没有更新了,当初x-ui的项目可谓是百花齐放,到现在剩余的项目确实不多了,目前稳定更新好用的x-ui面板就是今天要介绍的这个,伊朗作者的。伊朗的哥们真的是人才辈出,目前还在维护的有今天介绍的基于xray核心x-ui项目魔改的3x-ui。还有基于sing-box项目的web程序:https://github.com/alireza0/s-ui,还有另一个基于sing-box项目的下web程序,Hiddify-Manager超越X-UI还有另一个https://github.com/Gozargah/Marzban不过从另一个角度考虑,后续的几个项目在易用性上都很抽风,不愧是程序员出品的项目,用起来完全就没考虑过美观和易用性,实用价值最高的还是x-ui系列,所以还是优先推荐3x-ui项目。3x-ui的特色:系统状态监控在所有入口和客户端中搜索深度/浅色主题支持多用户和多协议支持多种协议,包括VMess、VLESS、Trojan、Shadowsocks、Dokodemo-door、Socks、HTTP、wireguard支持XTLS协议,包括RPRX-Direct、Vision、REALITY流量统计、流量限制、超时时间限制可自定义的 Xray 配置模板支持HTTPS访问面板(自建域名+SSL证书)支持一键式SSL证书申请和自动续费更多高级配置项目请参考面板修复了API路由(用户设置将使用API创建)支持通过面板中提供的不同项目更改配置。支持从面板导出/导入数据库1.1 3x-ui介绍3x-ui项目地址:https://github.com/MHSanaei/3x-ui基于x-ui后续魔改版本,和其余的x-ui魔改项目类似的是后续也更新了内核,并且支持了新的协议,支持多用户。不过3x-ui后续更新的实用功能是可以对xray核心进行修改,这点后续会讲。3x-ui在美观程度和动画流畅程度上和其余的搭建代理面板拉开了一个维度。2 安装3x-ui如果自动安装失败,可以采取手动安装的方式,详见本站文章:X-UI的手动安装教程,解救自动安装失败的VPS2.1 安装BBR安装3x-ui前记得安装bbr加速: Linux开启bbr的方法2.2 安装3x-ui安装脚本:bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)在运行脚本以后,会提示你Do you want to continue with the modification y/n?这里的意思是是否要进行自定义配置,可以进行用户名和密码的自定义设置等,建议输入y进行自定义配置。Please set up your username: 后面输入要设置的面板用户名Please set up your password: 后面输入要设置的面板密码Please set up the panel port: 后面输入你要设置的面板端口然后就安装完成了,以后想要在ssh连接里面进行3x-ui的设置,只需要输入x-ui然后回车就会出现3x-ui的管理面板,如下:x-ui - Enter Admin menu x-ui start - Start x-ui x-ui stop - Stop x-ui x-ui restart - Restart x-ui x-ui status - Show x-ui status x-ui enable - Enable x-ui on system startup x-ui disable - Disable x-ui on system startup x-ui log - Check x-ui logs x-ui banlog - Check Fail2ban ban logs x-ui update - Update x-ui x-ui install - Install x-ui x-ui uninstall - Uninstall x-ui接下来我们就可以结束令人头疼的ssh设置,到简单容易操作的ui界面里面进行设置。2.3 x-ui网页端在浏览器输入你vps的IP,后面加上英文冒号,然后跟上你设置的端口,格式如下:IP:端口进入后在下方的语言设置里面设置为中文。然后输入你的用户名和密码进入。首页最上方会提示你此连接不安全。在激活 TLS 进行数据保护之前,请勿输入敏感信息。这里不用管,后续到了配置代理的时候在选择。主界面会显示一些信息:x-ui版本/IP地址/xray版本切换/瞬时网络流量/总共用了多少流量/连接数等等,方便查看。3 使用3.1 简单搭建reality在所有的翻墙协议里面,我最喜欢的就是reality协议,足够安全并且不需要自己的域名。如果需要自己的域名那么还得申请ssl,这里我们就简单示意一下reality的搭建点击左侧的入站列表,然后点击添加入站很多默认配置不需要修改,需要修改的几个栏目备注,这个随便写,就是节点名字。协议,默认就是vless,如果搭建reality协议就选vless。端口,最好是443,当然随便一个也行。传输,选tcp。安全,选中reality。然后关于私钥和公钥,点一下下面的 Get New Cert按钮就可以随机获取私钥和公钥。然后点击右下角的添加,就完成了一个reality节点的搭建。3.2 入站列表 栏目入站列表在入站列表栏目里面,上面是显示流量和用户等信息,下方是节点信息。可以看到我们已经搭建好了一个节点,节点的类型是vless tcp Reality这三个标签,关于如何导出节点链接,可以点击节点前方的三个点,然后点击导出链接,然后点击复制即可。4 3x-ui特色下面就是说一下为什么我要在写一篇博客介绍和x-ui类似的3x-ui项目,3x-ui有自己的xray设置,可以设置的东西很多。常规可以设置的东西如下:xray设置简单讲一下可以设置什么屏蔽BT协议/私有IP/广告/黄色网站/测速网站屏蔽连接到伊朗/中国/俄罗斯/越南的IP或者域名直连伊朗/中国/俄罗斯/越南的IP或者域名通过 IPv4 将流量路由到谷歌或者netflix自动配置warp,流量出站将通过cloudflare的warp进行代理。设置路由规则。设置出站规则,这里可以配置链式代理。负载均衡等。5 关于ssl证书3x-ui和其余的x-ui魔改类似,都可以很简单的申请证书,包括cloudflare自动申请证书,不过我们这里基本都是手动申请。开启面板ssl和节点开启ssl都需要证书,所以我们再讲一下如何申请证书。在ssh界面输入x-ui,弹出的列表里面,找到SSL Certificate Management对应的编号,我这个版本是16,那就输入16,然后回车。get ssl 代表申请证书。revoke 是撤销Force Renew 定时任务续签我们输入1,然后回车。提示Please enter your domain name: 后面输入你的域名提示please choose which port do you use,default will be 80 port:直接默认回车然后等待证书申请完成完成后会输出一些信息,包括如下Your cert is in:Your cert key is in:The intermediate CA cert is in:And the full chain certs is there:其中我们需要注意的是Your cert is in和Your cert key is in。Your cert is in:后面显示的内容是你的证书,Your cert key is in: 后面的显示内容是你的密钥,一般后面的有效内容会高亮显示。5.1 配置面板ssl我们回到面板,点击面板设置,在面板证书公钥文件路径里面粘贴你的公钥路径,在面板证书密钥文件路径里面填写你的私钥路径,然后在面板 url 根路径里面随便写一个路径,比如我这里写的是/panel然后点击上方的保存,然后点击重启面板。后续我们会发现通过IP直接访问进不去面板了,这很正常。现在我们需要通过https://你的域名:你设置的端口/你设置的路径 进入,这样可以有效提高面板的安全性。5.3 节点配置ssl接下来就很简单了,假如说我们需要一个带tls的节点,比如vmess+ws+tls,我们去入站列表新建一个配置,需要修改的是协议选择vmess,传输选择websocket,安全选择tls,然后点击下面的从面板设置证书,再点击下面的添加。就完成了一个vmess+ws+tls节点的创建。
2025年01月20日
280 阅读
2 评论
0 点赞