这是一份独立的完整教程:从准备服务器、安装描述文件和节点,到用 Telegram 菜单切换地点,全程约 20 分钟,不需要先阅读新手页。
你将依次完成:① 准备落地机 → ② 创建 Telegram Bot → ③ 安装进阶模式 → ④ 读懂输出 → ⑤ 下载描述文件 → ⑥ 安装描述文件 → ⑦ 开启完全信任 → ⑧ 导入节点并全局连接 → ⑨ 重启手机 → ⑩ 验证定位 → ⑪ 使用 Telegram 菜单。
准备一台 Debian 12/13 或 Ubuntu 22.04/24.04 的 VPS(amd64 或 arm64 都行,内存 ≥ 384 MiB)。这台机器所在的国家/城市,就是你「假装所在」的位置——想显示在美国,就买一台美国 VPS。
用 SSH 以 root(或能 sudo 的用户)登录:
# 把 IP 换成你的落地机地址 ssh root@你的落地机IP
建议用一台专门的新机器,不要装在已经运行其它代理服务或网站的服务器上。
Bot Token 相当于控制密码,只粘贴到你自己的服务器安装器里。不要与其他程序共用这个 Bot,否则它们会争抢消息。
在落地机上粘贴下面的命令。模式选择时输入 2 安装项目推荐的进阶模式,再按安装器提示选择兼容的传输协议,最后粘贴 Bot Token 和数字 Chat ID。
curl -fsSL https://raw.githubusercontent.com/Loading886/Home-Location-Endpoint/v0.3.0/install.sh \ | sudo env HLE_VERSION=v0.3.0 bash
熟悉命令行时也可以无人值守安装:
curl -fsSL https://raw.githubusercontent.com/Loading886/Home-Location-Endpoint/v0.3.0/install.sh \
| sudo env \
HLE_VERSION=v0.3.0 \
HLE_TELEGRAM_BOT_TOKEN='BOT_TOKEN' \
HLE_TELEGRAM_CHAT_ID='NUMERIC_CHAT_ID' \
bash -s -- --mode advanced --protocol vless-reality --port 443安装成功后,屏幕最后会打印节点链接、CA 描述文件和指纹;同时会确认 Telegram 控制器已经启动。
安装完成后会主动交付:Bot 依次发送四条独立消息:凭据提示、可直接复制的节点链接、CA 安装说明,以及可直接点击的下载链接。下载链接有效 100 分钟,首次成功下载后立即失效;之后仍可从 Bot 菜单重新获取节点链接或 CA 描述文件附件。
也可以在服务器随时再看这两样:
# 再次打印节点链接 sudo hle show-link # 打印描述文件所在路径 sudo hle profile
最简单的方式是在 Telegram Bot 菜单点击获取描述文件,直接打开收到的 `.mobileconfig` 附件。安装器提供的一次性令牌链接和终端二维码仍作为备用方式:保持当前终端打开,扫码或打开链接即可。
如果你按了 Ctrl+C、链接过期,或者以后需要重新下载,再手动运行:
sudo hle profile serve
阅后即焚:下载链接默认有效 100 分钟,并且只要成功下载一次就立即失效、下载服务自动关闭。过期或用完了,再跑一次 sudo hle profile serve 重新生成即可。
然后在 iPhone 上,二选一:
用 Safari 打开通常最顺:会直接提示「此网站正尝试下载一个配置描述文件」,点允许,随后到设置里安装(下一步)。
如果下载后没有直接弹出安装(用夸克 / QQ 等第三方浏览器扫码时很常见):文件会先被存到浏览器的「下载 / 暂存」或「文件」App,不会自己打开。这时——到「文件」App 找到刚下载的 Home-Location-Endpoint-CA(约 2 KB)→ 点它 → 在弹出的「选择设备 / Choose a Device」里点 iPhone →系统才会跳到「设置」里安装(下一步)。若只弹出分享菜单,选 存到文件 或 在 iPhone 上打开 再从「文件」里点开即可。
核对指纹:终端打印的 CA SHA-256 指纹,应与下一步安装描述文件时看到的一致。
让手机能连到这个端口:该临时下载是 HTTP 明文,默认端口 18080。需要临时确保 TCP 18080 能从手机到达落地机(在云安全组/防火墙里临时放行,用完就关)——安装器不会自动改防火墙。若落地机在 NAT 后、用了 Realm 前置、或是仅定位模式没记录手机可达地址,请加参数 --host 手机可访问的地址。
想要更强的传输保护,可改用 SCP / SFTP 或自建可信 HTTPS。可调参数还有 --port、--host、--bind、--timeout-minutes、--no-qr。
拿到文件后,iPhone 会提示「已下载描述文件」。打开 设置 → 顶部会出现「已下载描述文件」(或到 设置 → 通用 → VPN 与设备管理)→ 点开它 → 右上角安装,按提示输入锁屏密码并再次确认安装。
核对指纹(可选但推荐):安装页可查看证书详情,其 SHA-256 应与安装输出的第 ③ 处一致,确认没被中途替换。
装好描述文件后,还要手动打开完全信任,证书才会真正生效:进入 设置 → 通用 → 关于本机 → 证书信任设置,把 Home Location Endpoint Root CA 的开关打开。
不开这个开关,定位改写会因证书不受信任而失败。这是最容易漏的一步。
复制安装输出里的节点链接(第 ① 处,或用 sudo hle show-link 再打印),在兼容所选传输协议的 iOS 客户端里“从剪贴板导入”。连接时务必使用 全局 / Global(全隧道 TUN)模式。
只装 CA、或只让浏览器走代理都不够。必须全局隧道,才能让 iOS 的定位请求经过落地机。
描述文件装好、完全信任打开、节点也连上之后,把手机重启一次。重启能让系统定位服务干净地按新的证书信任与隧道路由生效,避免「装好了但定位没变」的中间状态。
关机再开机即可。开机后确认代理客户端仍是全局连接、描述文件与完全信任都还在。
验证前,先进入 设置 → 隐私与安全性 → 定位服务,关闭顶部的「定位服务」,等待 5 秒后再重新打开,让系统重新请求定位结果。然后保持在室内(避免 GPS 盖过网络定位),把 Wi-Fi 打开着,打开「地图」App 点定位按钮。定位应落在你落地机所在的城市。
定位成功后,打开 Telegram Bot 发送 /menu,即可从菜单切换到其他地点,无需重装、无需重连。
安装完成后,向你的 Bot 发送 /menu、/start、/location 或 /status,都会打开同一个定位控制菜单。
点击地点后,服务端配置会立即切换,但 iPhone 可能继续使用定位缓存。请先等待几分钟;仍未变化时,到“设置 → 隐私与安全性 → 定位服务”关闭后重新打开,必要时重启手机。
点击“真实定位”会暂停改写,但代理仍保持连接;再次选择地点即可恢复。
按菜单提示输入名称、地址和“纬度, 经度”,确认后保存为新的按钮。
选择不再需要的地点并二次确认。当前正在使用的地点不会被误删。
进阶模式内置多个常用地点,并会保留你后来增加的地点。重复运行同一模式的安装器不会清空地点菜单。
只有安装时填写的 Chat ID 能控制这台服务器。Bot 不需要开放公网入站端口;仍请妥善保管 Bot Token,不要把同一个 Bot 交给其他控制程序。
都在落地机上运行,需要 root(前面加 sudo)。
| 命令 | 作用 |
|---|---|
| sudo hle status | 查看当前城市、坐标、定位修改状态与服务运行状态 |
| sudo hle pause | 暂停坐标改写,保持代理正常并返回 Apple 原始定位响应 |
| sudo hle resume | 恢复坐标改写,无需重启服务或重新连接节点 |
| sudo hle verify | 本地完整性自检(证书、权限、监听、服务等) |
| sudo hle show-link | 再次打印节点链接 |
| sudo hle profile | 打印 CA 描述文件路径 |
| sudo hle profile serve | 生成一次性令牌链接 + 二维码把描述文件下到手机(100 分钟、下载一次即失效) |
| Telegram /menu | 打开地点菜单,切换、增加、删除地点或恢复真实定位 |
| sudo systemctl status home-location-telegram-bot | 检查 Telegram 控制器是否正常运行 |
| sudo hle uninstall | 停服务并删除本项目安装的全部文件、证书与账户(加 --yes 免确认) |
不用了想彻底删除时,在落地机上运行 sudo hle uninstall 即可;装到手机上的描述文件也记得从手机移除。
只想临时还原真实定位?优先点击 Bot 菜单里的“真实定位”。也可以在服务器运行 sudo hle pause,需要恢复时运行 sudo hle resume。
先重启一次手机(第 ⑨ 步,最容易被忽略)。仍不行再检查:① 客户端是全局 / TUN 模式;② 第 ⑦ 步的证书信任开关已打开;③ 你在室内(户外 GPS 会盖过网络定位);④ Wi-Fi 保持开启。落地机上运行 sudo hle status 查看服务状态。
如果落地机在 NAT 后、入口和出口 IP 不同、或你前面还有中转机,安装时检测到的地址可能不对。用 --server 你的入口地址 重新安装,并检查云厂商安全组是否放行了对应端口。详见前置配置。
「未验证」是正常的(自签 CA)。关键是装好后到证书信任设置里把开关打开。若 iOS 版本较新,安装入口在 设置 → 通用 → VPN 与设备管理。
一些 App 会综合多种信号(GPS、蓝牙、账号、IP)。本项目只改写 Apple 网络定位,无法覆盖全部信号,结果可能不稳定。这是方案的固有局限,请阅读安全与局限。
在 Bot 菜单点击“真实定位”。它不会断开代理;需要恢复时,重新选择任意地点即可。
先向 Bot 重新发送 /start,再在服务器运行 sudo hle verify。仍有问题时检查 Bot Token 是否被撤销、服务器能否访问 Telegram,以及这个 Bot 是否同时被其他程序使用。
落地机在 NAT 后、入口和出口 IP 不同,或前面需要中转?请继续查看 前置配置。