「我在这里」只负责采集位置,数据存到你自己部署的服务里 —— 不走任何第三方。这个服务叫 here-server。

先确认你走哪条路

1. 装好 Docker,三条命令起步

git clone https://github.com/yinguobing/here-server.git && cd here-server
echo "ADMIN_TOKEN=$(openssl rand -hex 16)" > .env
docker compose up -d --build

第一次构建要编译 Rust 依赖,大约 5–15 分钟。国内网络慢,可以走镜像:

docker compose build --build-arg CARGO_MIRROR=https://rsproxy.cn && docker compose up -d

服务默认监听 9001 端口。

2. 创建一个用户,拿到口令

docker compose exec here-server here add-user "你的名字"

输出里有一个用户 ID 和一个口令。口令只在创建时完整显示一次;忘了就用 here rotate-token <用户ID> 换一个新的。

3. 填进手机

服务器地址
http://<你的地址>:9001/location
口令
上一步拿到的口令

地址要写到 /location 结尾。App 就是往你填的这个完整地址 POST 数据的,少一段路径会返回 404。

填完先点「测试连接」:显示「连接正常,口令有效」才算成功。保存后 App 也会自动探测一次,结论会当场告诉你。

4. 验证服务活着

curl http://<你的地址>:9001/health   # → ok

接给你的 AI agent(MCP)

服务自带 MCP 端点,agent 侧加一段配置就能读位置(X-Admin-Token 用 .env 里那个):

{
  "mcpServers": {
    "here-server": {
      "url": "http://<你的地址>:9001/mcp",
      "headers": { "X-Admin-Token": "<ADMIN_TOKEN>" }
    }
  }
}

手机访问不到服务器?

要暴露到公网,请套一层 HTTPS。口令是明文放在请求头里的,纯 http 在公网上等于把口令公开。用 Nginx 或 Caddy 反代到 9001 加上证书即可;地址填 https://你的域名/location。

两件容易踩的事

常见报错对照

口令无效(401)
口令不对,或者已经被轮换过。
地址不存在(404)
地址少了 /location,或者反向代理没把路径转过去。
地址不对:返回的不是服务接口
这个地址打到的是网页,不是接口——多半是少了 /location,或者反代把请求重定向(301)走了。用浏览器打开这个地址,看到的是你的博客或首页,就是这种情况。
无法连接
手机访问不到这个地址:不在同一网络、端口没放行、服务没起来。
服务起不来
docker compose logs here-server 看日志;.env 里必须有 ADMIN_TOKEN。