#!/bin/bash # 检查是否为 root if [ "$EUID" -ne 0 ]; then echo "请用 root 或 sudo 运行此脚本。" exit 1 fi # 询问是否使用 gh-proxy.com 代理 echo "是否使用 https://gh-proxy.com/ 加速 GitHub 下载?(国内网络推荐 y)" read -p "(y/n,默认 n): " use_proxy use_proxy=${use_proxy:-n} if [[ $use_proxy == [Yy]* ]]; then PROXY="https://gh-proxy.com/" echo "已启用 gh-proxy.com 加速代理" else PROXY="" echo "使用 GitHub 官方直连" fi # 检测架构(社区常见 musl 静态二进制命名) case "$(uname -m)" in x86_64) ARCH="x86_64-unknown-linux-musl" ;; aarch64) ARCH="aarch64-unknown-linux-musl" ;; *) echo "不支持的架构: $(uname -m)" echo "目前仅支持 x86_64 和 aarch64 (musl)。请从源码编译安装。" exit 1 ;; esac # 获取最新版本(通过代理或直连) API_URL="${PROXY}https://api.github.com/repos/zhboner/realm/releases/latest" VERSION=$(curl -sL "$API_URL" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') if [ -z "$VERSION" ]; then echo "获取最新版本失败,请检查网络或代理设置。" exit 1 fi echo "检测到最新版本: $VERSION" # 构建下载链接 FILE="realm-${ARCH}.tar.gz" URL="${PROXY}https://github.com/zhboner/realm/releases/download/${VERSION}/${FILE}" echo "正在下载 $URL ..." curl -L -o "$FILE" "$URL" if [ $? -ne 0 ] || [ ! -f "$FILE" ]; then echo "下载失败!可能原因:" echo "1. 该版本官方未提供预编译二进制(zhboner/realm 官方 Releases 仅源码)" echo "2. 社区第三方二进制链接失效" echo "建议:使用 cargo 从源码编译(见下方说明)或尝试不使用代理重新运行" rm -f "$FILE" exit 1 fi # 解压并安装(覆盖旧版) tar -xzf "$FILE" rm -f "$FILE" chmod +x realm mv -f realm /usr/local/bin/realm echo "Realm 二进制已更新到 /usr/local/bin/realm (版本 $(/usr/local/bin/realm --version 2>/dev/null || echo '未知'))" # 配置目录与默认 config(仅首次创建) mkdir -p /etc/realm if [ ! -f /etc/realm/config.toml ]; then cat < /etc/realm/config.toml [network] no_tcp = false use_udp = true [[endpoints]] listen = "0.0.0.0:51000" remote = "1.1.1.1:443" EOF echo "已创建默认配置文件 /etc/realm/config.toml(请手动添加 endpoints)" else echo "保留现有配置文件 /etc/realm/config.toml(未覆盖)" fi # systemd 服务(覆盖更新) cat < /etc/systemd/system/realm.service [Unit] Description=Realm Simple Tunnel After=network.target Wants=network.target [Service] Type=simple ExecStart=/usr/local/bin/realm -c /etc/realm/config.toml Restart=always [Install] WantedBy=multi-user.target EOF # 启动服务 systemctl daemon-reload systemctl enable realm --now systemctl --no-pager status realm echo "==================================" echo "安装/更新完成!" echo "配置路径:/etc/realm/config.toml(建议 sudo nano 编辑添加转发规则)" echo "修改后重启:sudo systemctl restart realm" echo "查看日志:journalctl -u realm -f" echo "卸载命令:systemctl disable --now realm ; rm -f /usr/local/bin/realm /etc/systemd/system/realm.service ; rm -rf /etc/realm"