# realm.sh [realm](https://github.com/zhboner/realm) 的交互式安装与管理脚本。安装时会自动写入 systemd 单元 (`realm.service`) 作为守护进程。 ## 系统要求 - Linux x86_64 / aarch64 / armv7 - 使用 systemd 的发行版(Debian 10+ / Ubuntu 20.04+ / CentOS 8+ / Rocky / AlmaLinux 等) - root 权限 ## 依赖 | 依赖 | 用途 | | --- | --- | | `curl` | 下载二进制、查询 GitHub API | | `tar` | 解压发行包 | | `systemd` | 服务管理 | Debian / Ubuntu: ```bash apt update && apt install -y curl tar ``` CentOS / RHEL / Rocky / Alma: ```bash dnf install -y curl tar ``` ## 一键执行 ```bash bash <(curl -fsSL https://git.suhang.me/suhang/scripts/raw/branch/release/realm/realm.sh) ``` ## 菜单 | 选项 | 说明 | | --- | --- | | 1 | 安装 realm(询问安装目录与 GitHub 代理,下载最新版二进制 + 写入 systemd 单元) | | 2 | 添加一条转发规则(监听端口 → 远端地址:端口) | | 3 | 删除指定编号的转发规则 | | 4 | 列出当前所有转发规则 | | 5 / 6 / 7 | 启动 / 停止 / 重启服务 | | 8 | 查看 `systemctl status realm` | | 9 | `journalctl -u realm -f` 实时日志 | | 10 | 更新 realm 内核到 GitHub 最新版 | | 11 | 更新本脚本(从 release 分支拉取) | | 12 | 卸载(删除二进制、配置目录、systemd 单元、日志) | ## 路径与文件 安装时会询问安装目录,默认 `/opt/realm`。所有自身文件都集中在该目录下,systemd 单元固定在 `/etc/systemd/system/`。 | 路径 | 说明 | | --- | --- | | `/realm` | 可执行二进制(默认 `/opt/realm/realm`) | | `/config.toml` | 配置文件(TOML) | | `/realm.log` | realm 自身日志 | | `/etc/systemd/system/realm.service` | systemd 单元(`ExecStart` 即所选目录) | 后续运行脚本时,会从 `realm.service` 的 `ExecStart` 反查出原安装目录,无需再次输入。 ## GitHub 代理 安装时会提示输入 GitHub 代理域名(**默认直连,不使用代理**;如需走代理推荐填 `ghfast.top`)。代理只作用于 release 二进制下载地址,例如: ``` https://ghfast.top/https://github.com/zhboner/realm/releases/download/... ``` > `api.github.com`(用于查询最新版本号)不会走代理 —— 该接口大多数 GitHub 反代都无法转发。如果你的网络无法直连 `api.github.com`,需自行解决(例如通过 hosts 或本机代理)。 选择会保存到 `/.proxy`,更新内核(菜单 `10`)时会沿用。如需更换代理,可直接编辑该文件后再执行更新。 ## 调试 启动脚本时加 `--debug`(或 `-d`)可打印更多日志,包括架构识别、代理拼接结果、curl 详细输出、写入配置等: ```bash bash <(curl -fsSL https://git.suhang.me/suhang/scripts/raw/branch/release/realm/realm.sh) --debug ``` ## 配置示例 脚本生成的 `config.toml` 大致如下,每条规则对应一个 `[[endpoints]]` 块: ```toml [log] level = "warn" output = "/opt/realm/realm.log" [network] no_tcp = false use_udp = true [[endpoints]] listen = "0.0.0.0:5000" remote = "example.com:443" ``` 如需手动编辑,可直接修改该文件后执行 `systemctl restart realm`。 ## 卸载 进入菜单选择 `12` 即可移除二进制、配置目录、systemd 单元和日志文件。