Skip to content

Instantly share code, notes, and snippets.

@NNdroid
Created June 8, 2026 13:47
Show Gist options
  • Select an option

  • Save NNdroid/ad987c48e85e40b434d7d35be30b8951 to your computer and use it in GitHub Desktop.

Select an option

Save NNdroid/ad987c48e85e40b434d7d35be30b8951 to your computer and use it in GitHub Desktop.
mproxy installer
#!/bin/bash
# mproxy-mod 一键安装与卸载脚本
# 支持架构: Linux amd64 (x86_64)
set -e
# 全局变量
BIN_URL="https://github.com/NNdroid/mproxy-mod/raw/refs/heads/main/mproxy"
BIN_PATH="/usr/local/bin/mproxy"
SERVICE_PATH="/etc/systemd/system/mproxy.service"
# 环境检查
check_env() {
# 检查 root 权限
if [[ $EUID -ne 0 ]]; then
echo "❌ 错误: 此脚本需要 root 权限执行。请使用 sudo 或 root 账户运行。"
exit 1
fi
# 检查架构
local arch
arch=$(uname -m)
if [[ "$arch" != "x86_64" ]]; then
echo "❌ 错误: 仅支持 amd64 (x86_64) 架构。当前系统架构为: $arch"
exit 1
fi
}
# 安装逻辑
install_mproxy() {
check_env
echo "==> 开始安装 mproxy..."
# 1. 下载二进制程序
echo " -> 正在下载二进制文件..."
if command -v curl >/dev/null 2>&1; then
curl -L -o "$BIN_PATH" "$BIN_URL"
elif command -v wget >/dev/null 2>&1; then
wget -O "$BIN_PATH" "$BIN_URL"
else
echo "❌ 错误: 系统未找到 curl 或 wget,请先安装其中之一。"
exit 1
fi
# 赋予执行权限
chmod +x "$BIN_PATH"
echo " -> 二进制文件已下载并赋予执行权限: $BIN_PATH"
# 2. 写入 systemd 服务文件
echo " -> 正在配置 systemd 服务..."
cat > "$SERVICE_PATH" << 'EOF'
[Unit]
Description=mproxy Service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mproxy -l 80 -m Sheep: -r 127.0.0.1:22222
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
# 3. 启动并设置开机自启
echo " -> 重载 systemd 守护进程并启动服务..."
systemctl daemon-reload
systemctl enable mproxy.service
systemctl start mproxy.service
echo "==> ✅ 安装成功!"
echo "可以使用以下命令检查运行状态: systemctl status mproxy"
}
# 卸载逻辑
uninstall_mproxy() {
# 仅检查 root,卸载时不需要检查架构
if [[ $EUID -ne 0 ]]; then
echo "❌ 错误: 此操作需要 root 权限执行。"
exit 1
fi
echo "==> 开始卸载 mproxy..."
# 1. 停止并禁用服务
if systemctl is-active --quiet mproxy.service; then
echo " -> 停止 mproxy 服务..."
systemctl stop mproxy.service
fi
if systemctl is-enabled --quiet mproxy.service 2>/dev/null; then
echo " -> 禁用 mproxy 开机自启..."
systemctl disable mproxy.service
fi
# 2. 删除相关文件
# 采用独立路径逐一移除,避免双引号包裹导致 bash 大括号扩展失效
echo " -> 清理系统文件..."
if [[ -f "$SERVICE_PATH" ]]; then
rm -f "$SERVICE_PATH"
fi
if [[ -f "$BIN_PATH" ]]; then
rm -f "$BIN_PATH"
fi
# 3. 重载 systemd
systemctl daemon-reload
echo "==> ✅ 卸载完成!mproxy 已从系统中彻底移除。"
}
# 命令行入口
case "$1" in
install)
install_mproxy
;;
uninstall)
uninstall_mproxy
;;
*)
echo "用法: $0 {install|uninstall}"
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment