★ 推荐 · 进阶 · 完整安装 · Telegram 控制

进阶模式完整教程

这是一份独立的完整教程:从准备服务器、安装描述文件和节点,到用 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

建议用一台专门的新机器,不要装在已经运行其它代理服务或网站的服务器上。

创建一个专用 Telegram Bot

  1. 在 Telegram 打开 @BotFather,发送 /newbot,按提示创建一个只给这台服务器使用的新 Bot。
  2. 保存 BotFather 给你的 Bot Token,然后打开刚创建的 Bot,发送一次 /start
  3. 准备你自己的数字 Chat ID。可以打开 @userinfobot 查询;只读取它回复的 ID,不要把 Bot Token 发给任何第三方。
🔐

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
root@landing: ~ # curl … | sudo bash Choose an installation mode: 1) Full proxy endpoint + location modifier (recommended) 2) Proxy endpoint + Telegram controller (advanced) 3) Location modifier only (expert) Selection [1]: 2 Protocol [1]: 1 ==> Validating Telegram bot and authorized chat … Home-Location-Endpoint is ready in advanced mode.
输入 2 选择项目推荐的进阶模式;再按安装器提示选择传输协议。看到「ready in advanced mode」即安装成功。

读懂输出:记下节点链接和描述文件

安装成功后,屏幕最后会打印节点链接、CA 描述文件和指纹;同时会确认 Telegram 控制器已经启动。

Home-Location-Endpoint is ready in advanced mode. Random location city: Santa Clara, US Node URI: protocol://credential…@203.0.113.7:443?…#Home-Location-Endpoint iOS CA profile: /etc/home-location-endpoint/Home-Location-Endpoint-CA.mobileconfig CA SHA-256: 12:CC:44:03:F1:DB:…:4C:0E ① 节点链接 → 导入客户端 ② 描述文件 → 装进 iPhone ③ 指纹 → 装描述文件时核对
①节点链接 ②CA 描述文件路径 ③CA 的 SHA-256 指纹
🤖

安装完成后会主动交付:Bot 依次发送四条独立消息:凭据提示、可直接复制的节点链接、CA 安装说明,以及可直接点击的下载链接。下载链接有效 100 分钟,首次成功下载后立即失效;之后仍可从 Bot 菜单重新获取节点链接或 CA 描述文件附件。

也可以在服务器随时再看这两样:

# 再次打印节点链接
sudo hle show-link
# 打印描述文件所在路径
sudo hle profile

用一次性令牌链接把描述文件下载到 iPhone

最简单的方式是在 Telegram Bot 菜单点击获取描述文件,直接打开收到的 `.mobileconfig` 附件。安装器提供的一次性令牌链接和终端二维码仍作为备用方式:保持当前终端打开,扫码或打开链接即可。

如果你按了 Ctrl+C、链接过期,或者以后需要重新下载,再手动运行:

sudo hle profile serve

阅后即焚:下载链接默认有效 100 分钟,并且只要成功下载一次就立即失效、下载服务自动关闭。过期或用完了,再跑一次 sudo hle profile serve 重新生成即可。

root@landing: ~ 安装完成后自动启动 hle profile serve 临时 CA 描述文件下载 下载地址: http://203.0.113.7:18080/Xk7Rf9q…/CA.mobileconfig 有效时间: 100 分钟 下载次数: 1 CA 指纹 : 12:CC:44:03:…:4C:0E 请临时确保 TCP 18080 可以到达本机。 正在等待一次成功下载…… iPhone 相机扫码
安装完成后,终端自动给出临时下载地址 + 二维码、CA 指纹、有效期与「下载次数:1」。

然后在 iPhone 上,二选一:

  • 扫码:用 iPhone 自带「相机」对准终端里的二维码,点弹出的横幅。
  • 打开链接:用 Safari 打开终端输出的那个 http://…:18080/… 下载地址。

Safari 打开通常最顺:会直接提示「此网站正尝试下载一个配置描述文件」,点允许,随后到设置里安装(下一步)。

📂

如果下载后没有直接弹出安装(用夸克 / QQ 等第三方浏览器扫码时很常见):文件会先被存到浏览器的「下载 / 暂存」或「文件」App,不会自己打开。这时——到「文件」App 找到刚下载的 Home-Location-Endpoint-CA(约 2 KB)→ 点它 → 在弹出的「选择设备 / Choose a Device」里点 iPhone →系统才会跳到「设置」里安装(下一步)。若只弹出分享菜单,选 存到文件在 iPhone 上打开 再从「文件」里点开即可。

‹ Search 暂存 ⌄ 🔍 Search Home-Location-Endpoint-CA 02:59 · 2 KB 👆 Choose a Device On which device would you like to install this profile? iPhone Other Devices… Cancel
第三方浏览器下载后:在「文件」里点开该文件 → 选 iPhone → 才会进入设置安装。用 Safari 则一般会直接提示安装。
🔎

核对指纹:终端打印的 CA SHA-256 指纹,应与下一步安装描述文件时看到的一致。

📡

让手机能连到这个端口:该临时下载是 HTTP 明文,默认端口 18080。需要临时确保 TCP 18080 能从手机到达落地机(在云安全组/防火墙里临时放行,用完就关)——安装器不会自动改防火墙。若落地机在 NAT 后、用了 Realm 前置、或是仅定位模式没记录手机可达地址,请加参数 --host 手机可访问的地址

想要更强的传输保护,可改用 SCP / SFTP 或自建可信 HTTPS。可调参数还有 --port--host--bind--timeout-minutes--no-qr

在 iPhone 上安装描述文件

拿到文件后,iPhone 会提示「已下载描述文件」。打开 设置 → 顶部会出现「已下载描述文件」(或到 设置 → 通用 → VPN 与设备管理)→ 点开它 → 右上角安装,按提示输入锁屏密码并再次确认安装。

9:41 📶 🔋 ‹ 通用 安装描述文件 安装 📍 Home Location Endpoint CA 签名者 未验证 包含 证书 描述 安装用于改写受限 Apple 网络定位 响应的私有 CA。 证书 Home Location Endpoint Root CA 点右上角「安装」,输入锁屏密码 并在弹窗中再次确认安装
设置 → 通用 → VPN 与设备管理 → 打开该描述文件 → 右上角「安装」。
🔎

核对指纹(可选但推荐):安装页可查看证书详情,其 SHA-256 应与安装输出的第 ③ 处一致,确认没被中途替换。

开启对该 CA 的「完全信任」

装好描述文件后,还要手动打开完全信任,证书才会真正生效:进入 设置 → 通用 → 关于本机 → 证书信任设置,把 Home Location Endpoint Root CA 的开关打开。

‹ 关于本机 证书信任设置 针对根证书启用完全信任 Home Location Endpoint Root CA 对根证书启用完全信任后, 该证书可用于所在设备。 开关变绿 = 完全信任已开启
设置 → 通用 → 关于本机 → 证书信任设置 → 打开该 CA 的开关。
⚠️

不开这个开关,定位改写会因证书不受信任而失败。这是最容易漏的一步。

把节点导入客户端,并用「全局模式」连接

复制安装输出里的节点链接(第 ① 处,或用 sudo hle show-link 再打印),在兼容所选传输协议的 iOS 客户端里“从剪贴板导入”。连接时务必使用 全局 / Global(全隧道 TUN)模式。

代理客户端 📍 Home-Location-Endpoint 加密传输 · 24ms 路由模式 全局 Global 规则 Rule 已连接 开启全局后,系统定位流量也走隧道
导入节点 → 选「全局 / Global」→ 连接。示意界面,实际以你所用客户端为准。
📶

只装 CA、或只让浏览器走代理都不够。必须全局隧道,才能让 iOS 的定位请求经过落地机。

重启一次 iPhone

描述文件装好、完全信任打开、节点也连上之后,把手机重启一次。重启能让系统定位服务干净地按新的证书信任与隧道路由生效,避免「装好了但定位没变」的中间状态。

🔁

关机再开机即可。开机后确认代理客户端仍是全局连接、描述文件与完全信任都还在。

验证定位已经改变

验证前,先进入 设置 → 隐私与安全性 → 定位服务,关闭顶部的「定位服务」,等待 5 秒后再重新打开,让系统重新请求定位结果。然后保持在室内(避免 GPS 盖过网络定位),把 Wi-Fi 打开着,打开「地图」App 点定位按钮。定位应落在你落地机所在的城市。

📍 Santa Clara, CA
网络定位落在落地机所在城市。若显示真实位置或「无定位」,见下方常见问题。
🤖

定位成功后,打开 Telegram Bot 发送 /menu,即可从菜单切换到其他地点,无需重装、无需重连。

⑪ 使用 Telegram 菜单

安装完成后,向你的 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 没有回复或菜单不更新?

先向 Bot 重新发送 /start,再在服务器运行 sudo hle verify。仍有问题时检查 Bot Token 是否被撤销、服务器能否访问 Telegram,以及这个 Bot 是否同时被其他程序使用。

➡️

落地机在 NAT 后、入口和出口 IP 不同,或前面需要中转?请继续查看 前置配置