Macless-Haystack 自制AirTag

十二月 25, 2025 / Ming / 3阅读 / 1评论

Macless-Haystack 自制AirTag

最近在gitee发现了个有意思的项目

macless-haystack: 制作自己的AirTag

如果是从零开始弄要自己画pcb买芯片“NRF5x系列” 电阻 自己焊接等 很麻烦

然后去咸鱼搜了一下 有人在卖成品 带刷好固件的 直接就跳过了这个项目的前期步骤

只需要用docker去部署一个后端就行

(除非你是需要大量的AirTag 不然不建议自手搓

(在淘宝 1688 嘉立创等平台买芯片和电阻 pcb等

只有大批量才划算不然不够运费)


安装


服务器设置

服务器设置

1. 创建一个 docker 网络

在终端中执行以下命令,创建一个新的docker网络

docker network create mh-network

2. 运行 Anisette Server

docker run -d --restart always --name anisette -p 6969:6969 --volume anisette-v3_data:/home/Alcoholic/.config/anisette-v3/ --network mh-network dadoum/anisette-v3-server

注意:首次执行该命令会自动从 docker 官方仓库拉取镜像,因国内网络环境的原因,需要设置镜像仓库。如下修改 docker 的配置文件/etc/docker/daemon.json(不存在就新建),增加 registry-mirrors

{
  "registry-mirrors": [
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev",
    "https://docker.1ms.run",
    "https://hub.1panel.dev",
    "https://docker.itelyou.cf"
  ]
}

之后运行如下命令重启 docker 服务:

systemctl restart docker
# 或者
service docker restart

此时,镜像源应该生效了。可以用 docker info 命令验证,如果输出末尾有如下Registry Mirrors,说明镜像源配置成功了:

Registry Mirrors:
  https://docker.1ms.run/
  https://hub.1panel.dev/
  https://docker.itelyou.cf/
  ......

如果配置未生效,拉取docker镜像还是出错,可能的原因:
1、Ubuntu 可能是因为你的docker是snap安装的,解决方法请移步
https://blog.csdn.net/lovelyelfpop/article/details/146802408
2、群晖 配置方法请移步
https://post.smzdm.com/p/ag82opxd/https://blog.csdn.net/Falleaves_Yu/article/details/120316411https://wiki.slarker.me/basic/docker_mirrors.html 3、有些nas系统是有设置界面可以增加自定义镜像源的,在那里添加即可

镜像源配置生效后,继续执行上面安装 Anisette Server 的命令。

要检测 Anisette 是否正常运行,可以浏览器打开 http://服务器ip:6969,如果能访问就说明正常;或者执行命令 curl http://服务器ip:6969,如果有输出{"X-Apple-I-Client-Time":"202......则正常。

如果 anisette 服务起不来,一直显示 restarting,docker 日志报错 Permission denied,特别是在一些 nas 系统上比较常见。解决办法:把当前docker用户设为 /var/lib/docker/volumes/anisette-v3_data 这个目录的拥有者(或者加可读写权限比如775)。详见 Permission denied error

如果你没有在安卓手机或网页端查看 Tag 标签定位的需求,就不用看下面的3、4步骤了。

3. 运行 Macless Haystack 服务

运行下面命令启动 macless-haystack 服务:

docker run -it --restart unless-stopped --name macless-haystack-gitee -p 6176:6176 --volume mh_data:/app/endpoint/data --network mh-network lovelyelfpop/macless-haystack-gitee

启动服务时,系统会要求您输入 Apple ID、密码和两步验证短信验证码(注意如果 AppleID 是大陆手机号,前面要加上 +86)。
如果您看到命令行显示 serving at port 6176 over HTTP 则所有设置均正确。

如果报错503 Server Error: Service Temporarily Unavailable for url: https://gsa.apple.com/grandslam/GsService2,说明服务器 IP 被苹果屏蔽了。

要检测 Macless Haystack 服务是否正常运行,可以浏览器打开 http://服务器ip:6176,如果页面显示Nothing to see here就说明正常;或者执行命令 curl http://服务器ip:6176,如果有输出Nothing to see here则正常。

4. 另开终端重启 Macless Haystack

立即开启另一个终端,执行下面命令重新启动 Macless Haystack 服务

docker restart macless-haystack-gitee

前端应用程序

前端应用程序

如果你没有在安卓手机或网页上查看 Tag 标签定位的需求,就不用看本节内容了。

您可以使用 Gitlab 提供的前端 web 网站,也可以自己托管网站服务器;也可以使用 Android app。
另外,请自己去高德开放平台申请 web 服务 key(key 类型一定要是 Web服务,申请是免费的),在 app/web 网站的设置中需要填入。不填也可以用,但是只会显示位置坐标,不会显示中文地址描述。

  • 安装/打开前端应用

    • 安卓设备请安装 apk

    • Windows x64 电脑有客户端,下载解压 windows x64 portable.zip后运行 exe

    • 非安卓的设备(iOS/鸿蒙/电脑)可使用浏览器打开网站 Gitlab Pages
      注意:上述网站是 https://。因浏览器限制,https:// 的网站只能访问 https:// 的后台服务。所以如果你选择使用 Gitlab Pages,那么必须将 macless_haystack 服务部署为 https://。

      • 1、可以使用 nginx 等工具进行反代,或使用服务内置支持的 SSL 使用方法(需要自己申请 SSL 证书)

      • 2、也可以直接使用内网穿透工具(简单,无需自备 SSL 证书)。比如 ngrok节点小宝ZeroNews 都有免费版;花生壳 9块9永久用,每月免费1G流量;

    • 可选: 如果需要iOS、Linux 或 Windows 客户端,有能力的可以自己打包(本项目前端基于 Flutter)

  • 点击前端应用程序(app 或 网站)右上角齿轮图标进入设置,填写 高德web 服务 keymacless haystack 服务 url 地址。其它设置项默认或按需设置。

  • 回主界面,点"+"图标,选择"导入 json 文件",将 XXXXXX_devices.json 文件导入前端应用程序内。

  • 注意:

    • 1、"高德web 服务 key" 如果不填,位置只会显示成经纬度,而不显示中文地址描述。

    • 2、"macless haystack 服务 url 地址" 形如 http://服务器ip:6176https://服务器域名,https://服务器域名:端口
      若要在公网使用,需将 macless haystack 服务公开到公网,可以用 路由器端口映射 或 内网穿透 的方式实现。具体操作不属于本文范畴,请自行搜索。

    • 3、如果 app 获取位置报告时报错未获取到位置。AppleID登录失效,请移除 auth.json 并重启 macless-haystack 服务,请移步 FAQ#重新注册/更改账户

    • 4、部分国产安卓机因系统魔改,点"导入 json 文件"可能弹不出文件选择。可以安装 "File Manager Plus" 这个文件管理器([GooglePlay] [Apkpure] [百度]),即可支持文件选择。


如果你想自手搓的话 刷固件可以参考这个

一键airtag烧录nrf5x工具 · Issue #IC03GF · lovelyelfpop/macless-haystack - Gitee.com

一键式解决刷固件问题 你只需要解决前期的焊接 以及链接电脑的问题就行

使用体验还不错 一些使用过程中中的图:

文章作者:Ming

文章链接:https://11ao.cn/archives/XikjTFsM

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!


评论