基于 enfein/mieru 的 mita 服务端一键安装脚本,支持:
- Debian / Ubuntu(deb)
- CentOS / RHEL / Rocky(rpm)
- Alpine Linux(官方 tar.gz + OpenRC/systemd)
Debian / Ubuntu / CentOS / RHEL 等(需 sudo):
curl -fsSL https://raw.githubusercontent.com/ike-sh/mieru-OneClick/main/install-mita.sh | sudo bashAlpine Linux(默认无 sudo,且需先安装 bash):
apk add --no-cache bash curl && \
curl -fsSL https://raw.githubusercontent.com/ike-sh/mieru-OneClick/main/install-mita.sh | bashAlpine 容器内通常已是 root,不要加
sudo;脚本本身会apk add其余依赖(tar、iptables 等)。
运行后按菜单选择「安装 / 配置」,脚本将:
- 从 GitHub Releases 下载最新
mita安装包 - 自动生成随机用户名、密码;询问端口时默认按本机内网 IP 尾号推导(回车即用,规则见下文「端口自动分配(按 IP 尾号)」)
- 应用配置并启动服务
- 尝试放行防火墙(ufw / firewalld / Alpine iptables)
- 安装完成同时输出
mierus://节点链接、客户端 JSON、Clash/mihomo 片段及连接信息摘要 - 下载包 SHA256 校验;提示云安全组放行端口
- 端口自动分配(按 IP 尾号):安装 / 非交互时默认端口改为按本机内网 IP 末位八位组推导——端口基数 = 末位 × 100,段内随机取
xx01-xx99,xx00保留给 SSH。例:172.16.1.36→3601-3699 - 末位过小(基数 < 1025 落入特权端口)或为
0/255(网络号 / 广播)时自动回退随机端口 - 双协议 BOTH:TCP 末两位上限取 98,避免 UDP(主端口+1)溢出到
xx00(SSH 位)或相邻机器段 - 多网卡 / Docker 环境优先取默认路由出口 IP;显式
--port落在 IP 尾号段外时给出提示(不阻断)
- 菜单模式下
die不再exit,操作失败自动返回菜单 - Debian 自动修复
/usr/bin/mita软链;二进制缺失时提示apt reinstall - 查看节点前执行
repair_mita_binary_paths+ 启动守护进程
- 菜单循环:操作完成后返回菜单(不再直接退出);无效/空输入提示重试
- Debian 修复:不再误删
/usr/bin/mita;自动apt包路径修复 + wrapper 动态查找二进制 - 查看节点前自动启动守护进程;失败时提示而非退出菜单
- 安装 wrapper 后执行
hash -r刷新 bash 命令缓存
- 修复 Debian 选 6 卡死/CPU 拉满:
is_mita_wrapper误对 ELF 二进制head -n1导致 grep 扫描整个文件 - 修复 migrate 误将 wrapper 脚本当作二进制迁移到
mita-real - 仅对 ELF 二进制执行布局迁移;
mita-real若非二进制自动清理
- 修复
mita快捷命令报install: same file导致 wrapper 未安装(install-mita自更新时跳过同路径拷贝) - 任意
install-mita调用时自动检查并补装/usr/local/bin/mitawrapper
- 「查看节点链接」输出增加分区标题与说明:标注
mierus://为分享链接、JSON 为客户端配置及导入方式
mita快捷命令:/usr/local/bin/mita改为管理入口(无参数打开菜单);真实二进制迁至mita-real,OpenRC/systemd 直连真实二进制- 打开菜单时自动安装/更新 wrapper(升级提示「已是最新」时也会更新管理脚本)
- 修复「查看节点链接」失败:
describe config密码哈希时从install-state.env或/root/mieru_client_*.json回退读取凭据 - 安装状态文件保存用户名/密码(
chmod 600)
- 新增 重新配置(菜单 2 /
--reconfigure):部署后可改端口、密码、协议,无需重装 - 菜单 6) 查看节点链接 / 客户端配置:随时重新展示
mierus://链接、JSON、Clash 片段 - 快捷命令不区分大小写:
install-mita STATUS、mita-menu、mita reconfigure等均可用 - 登录 shell 安装
mita()函数:mita打开菜单,管理子命令不区分大小写;mita start等仍走官方二进制
- OpenRC
crashed状态自动zap+ 重启(修复rc-service mita start提示 already started 无法恢复) - OpenRC 服务增加
respawn自动拉起守护进程 --status/ 菜单「状态」按平台显示正确命令(Alpine 不再误导为 systemctl)- 状态检查时自动尝试恢复守护进程并输出
/var/log/mita.err日志
- Alpine/OpenRC:
/etc/mita授权mita:mita(守护进程需写入server.conf.pb,否则启动即退出) - OpenRC 服务增加
start_pre+checkpath,确保运行时目录存在 - 套接字等待失败时输出
/var/log/mita.err日志尾部
- 修复 Alpine/BusyBox
mktemp: Invalid argument(XXXXXX必须在模板末尾) - 新增
mktemp_file/mktemp_dir兼容 GNU 与 BusyBox
- 文档与
--help补充 Alpine 一键命令(apk add bash curl+| bash,无需 sudo) - 非 bash / 非 root 时给出 Alpine 专用提示
- 修复 deb 安装后
mita.sock未就绪导致mita start失败、脚本中断(set -e) - 新增
wait_mita_socket/ensure_mita_daemon:先启 systemd 守护进程,等待 RPC 套接字后再apply/start mita start改为重试 + 警告,不再因单次失败退出安装
- 交互菜单顶部显示 版本号 v1.2.8 与 作者 ike
- 移除未使用的
build_client_json聚合函数(孤立代码) - 卸载时显式清理
mieru_client_tcp_*.json/mieru_client_udp_*.json
- 交互安装增加 编号菜单 选择传输协议(1=TCP / 2=UDP / 3=双协议),置于端口询问之前
- 修复 v1.2.4 默认 TCP 时跳过协议询问的 BUG
- 分协议输出:双协议(BOTH)时分别输出 TCP / UDP 节点链接与 JSON(
mieru_client_tcp_*.json、mieru_client_udp_*.json) - 单协议(TCP 或 UDP)时仅输出对应链接与配置
- Clash 片段:双协议输出 tcp / udp 两条独立代理(不再聚合为单条)
- 修复双协议(BOTH)被误判为 TCP,导致卸载时 UDP 防火墙规则未清理
- 修复交互安装时无法选择 UDP/双协议(默认 TCP 跳过协议询问)
--client-config/ 卸载防火墙:从mita describe config精确解析 portBindings- 移除未使用的
--menu参数
- 默认改回 TCP(官方推荐;多数场景 Clash
udp: true即够用) - 双协议 BOTH:TCP 用主端口,UDP 用 主端口+1(对齐官方示例,避免同端口双绑定)
- 修复
mita start未显式调用导致 IDLE 的问题 - 客户端提示:v2rayN 等请选 tcp,勿选「两个都」
- 默认双协议:同端口同时监听 TCP + UDP(
--protocol BOTH,可改为TCP/UDP) - 节点链接:对齐官方
mierus://格式(port/protocol成对出现;单端口时地址含:port) - Clash:双协议时输出 TCP/UDP 两条代理配置
- 防火墙 / 云安全组提示同步覆盖 TCP 与 UDP
- 安装包 SHA256 完整性校验
- 节点链接 URL 编码(支持特殊字符密码)
- Clash / mihomo YAML 片段输出
- deb/rpm 系统 iptables 回退放行
- ufw 端口段语法
9000:9010/tcp - Alpine 启用 BBR 时自动安装 python3
- 本脚本安装标记,卸载前识别官方包
Alpine 使用官方 mita_*_linux_{amd64,arm64}.tar.gz,自动安装 OpenRC 或 systemd 服务,并通过 iptables 放行端口。架构:amd64 / arm64。
常见报错与处理:
| 报错 | 原因 | 处理 |
|---|---|---|
sudo: not found |
Alpine 默认无 sudo | 去掉 sudo,直接 | bash(root 环境) |
请使用 bash 运行 |
默认 shell 为 ash | 先 apk add --no-cache bash curl |
curl: (23) Failure writing |
管道下游命令失败 | 同上,确保 bash 已安装 |
mktemp: Invalid argument |
BusyBox 要求 XXXXXX 在末尾 |
v1.2.11+ 已修复,请拉最新 main |
status: crashed |
守护进程异常退出,OpenRC 进入 crashed | rc-service mita zap && rc-service mita start,或 v1.2.13+ 菜单「状态」自动恢复 |
daemon is not running + systemctl 提示 |
mita 二进制默认提示 systemd | Alpine 用 rc-service mita zap && rc-service mita start;v1.2.13+ 脚本已适配 |
为便于内网多机批量部署,安装时默认端口不再是纯随机,而是按本机内网 IP 的末位八位组推导:
- 端口基数 = IP 末位 × 100,可用端口为段内
xx01-xx99(默认随机取一个) xx00保留给 SSH,不会被占用
以本机 IP 172.16.1.36 为例:
| 项目 | 值 |
|---|---|
| IP 末位 | 36 |
| 端口段 | 3600–3699 |
| 保留(SSH) | 3600 |
| 可用(默认随机) | 3601–3699 |
规则与兜底:
- 交互安装时显示
检测到本机 IP …,按尾号规则端口段 …,回车即用推导端口,也可手动输入覆盖 - 末位过小(基数 < 1025,落入特权端口)或为
0/255(网络号 / 广播)时,自动回退为随机端口 - 双协议(BOTH)下 UDP = 主端口 + 1;为避免溢出到
xx00或相邻机器段,TCP 末两位上限取98 - 如需固定端口仍可用
--port指定;若不在 IP 尾号段内会给出提示(不阻断) - 多网卡 / 装有 Docker(
172.17.0.1)时,脚本优先取默认路由出口 IP;若识别有误,请用--port覆盖
安全提示:端口可由 IP 规律反推,便于管理但降低隐蔽性。建议仅在内网使用;公网暴露时务必配合云安全组限制来源。
curl -fsSL https://raw.githubusercontent.com/ike-sh/mieru-OneClick/main/install-mita.sh | \
sudo bash -s -- --install -y \
--port 2088 \
--protocol TCP \
--user myuser \
--password 'my-secret' \
--enable-bbr| 命令 | 说明 |
|---|---|
--reconfigure |
修改端口/密码/协议(不重装二进制) |
--upgrade |
升级至最新版 |
--uninstall |
卸载 mita、管理脚本、防火墙规则、客户端配置与日志 |
--status |
查看服务与配置 |
--client-config / --show |
查看节点链接并生成客户端 JSON |
快捷命令(子命令不区分大小写):
install-mita # 打开菜单
install-mita reconfigure # 重新配置
install-mita show # 查看节点链接
mita-menu status # 同上
mita status # 登录 shell 下(需已安装 profile.d)卸载后再次管理请重新执行一键安装,或运行 install-mita --help(安装后位于 /usr/local/bin/install-mita)。
上游官方提供 Python 安装器:
curl -fSsLO https://raw.githubusercontent.com/enfein/mieru/refs/heads/main/tools/setup.py
sudo python3 setup.py本仓库的 Bash 脚本在官方能力之上补充了:
- 纯 Bash 入口,
curl \| bash即可 - 非交互参数(
--port/--user/--password/-y) - 防火墙自动放行
- 安装摘要与客户端配置一键导出
安装完成后,将服务器 IP、端口、用户名、密码填入 mieru 客户端 或 Clash Verge Rev 等兼容客户端。
安装脚本 MIT;mita/mieru 软件遵循上游 GPL-3.0。