
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
我在服务器上使用由https://github.com/bbernhard开发的优秀https://github.com/bbernhard/signal-cli-rest-api,并将Home Assistant配置为向我和家庭群组发送各类通知。对于许多自动化场景,快速发送消息至关重要,因此我将API运行在https://github.com/bbernhard/signal-cli-rest-api?tab=readme-ov-file#execution-modes。
最近,我希望添加一种方式,让Home Assistant能够接收我们发送的消息以触发(或停止)自动化。然而,当signal-api运行在json-rpc模式时,/v1/receive端点仅支持WebSocket,而Home Assistant的signal_messenger集成依赖REST API调用,不支持WebSocket。
本项目signal-api-receiver提供了一个轻量级包装器,通过以下方式解决该问题:
/v1/receive端点的WebSocket流这种方式使Home Assistant能够轻松接收Signal消息并触发自动化,无需修改现有的signal-cli-rest-api或Home Assistant集成。
虽然开发signal-api-receiver解决了我的即时需求,但还有其他潜在解决方案:
signal-cli-rest-api提议新增一个支持REST的端点这些替代方案长期来看可能更全面,但创建包装器为我的特定用例提供了更即时、更聚焦的解决方案。
signal-api-receiver提供以下API端点:
GET /receive/pop:
204 No Content状态码GET /receive/flush:
[])适用于已部署signal-cli-rest-api(运行在json-rpc模式)并使用Home Assistant的用户,需要通过接收Signal消息触发自动化场景,例如:
signal-api-receiver在https://hub.docker.com/r/kalbasit/signal-api-receiver提供镜像,这是推荐的运行方式。
首先拉取镜像:
bashdocker pull kalbasit/signal-api-receiver:latest
示例运行命令:
bashdocker run -p 8105:8105 \ -e SIGNAL_ACCOUNT="your_signal_account" \ -e SIGNAL_API_URL="wss://your-signal-api-url" \ kalbasit/signal-api-receiver:latest
参数说明:
-p 8105:8105:将主机的8105端口映射到容器的8105端口-e SIGNAL_ACCOUNT="your_signal_account":设置Signal账号环境变量,需替换为实际账号-e SIGNAL_API_URL="wss://your-signal-api-url":设置Signal API的WebSocket URL,需替换为实际API地址更多信息请参考https://hub.docker.com/r/kalbasit/signal-api-receiver页面。
从源码运行时,需提供以下命令行参数:
全局选项:
--log-level <value>:设置日志级别(默认:"info"),可通过$LOG_LEVEL环境变量设置serve命令选项:
--record-message-type <value>:指定要记录的消息类型,有效值:"receipt"、"typing"、"data"、"data-message"、"sync",可重复指定多个类型(默认:"data-message")--repeat-last-message:若启用,当无新消息时重复最后一条消息(适用于/receive/pop),可通过$REPEAT_LAST_MESSAGE环境变量设置(默认:false)--signal-account <value>:必填,指定Signal账号,可通过$SIGNAL_ACCOUNT环境变量设置--signal-api-url <value>:必填,指定Signal API的URL(含协议,如wss://signal-api.example.com),可通过$SIGNAL_API_URL环境变量设置--server-addr <value>:设置服务器监听地址(默认:":8105"),可通过$SERVER_ADDR环境变量设置默认服务器监听地址为:8105,可通过--server-addr修改(如--server-addr :8080)。
查看所有可用选项:
bashsignal-api-receiver serve --help
以下是在Kubernetes中部署signal-api-receiver的示例(假设已存在signal-cli-rest-api部署,此处未展示):
yamlapiVersion: apps/v1 kind: Deployment metadata: name: signal-api-receiver labels: app: signal-receiver tier: api spec: replicas: 1 selector: matchLabels: app: signal-receiver tier: api template: metadata: labels: app: signal-receiver tier: api spec: containers: - image: kalbasit/signal-receiver:latest name: signal-receiver args: - /bin/signal-api-receiver - serve - --signal-api-url=ws://signal-api.ns.svc:8080 - --signal-account=+19876543210 ports: - containerPort: 8105 name: receiver-web livenessProbe: httpGet: path: /healthz port: receiver-web initialDelaySeconds: 15 periodSeconds: 20 readinessProbe: httpGet: path: /healthz port: receiver-web initialDelaySeconds: 5 periodSeconds: 10
yamlapiVersion: v1 kind: Service metadata: name: signal-api-receiver labels: app: signal-receiver tier: api spec: type: ClusterIP ports: - name: receiver-web port: 8105 selector: app: signal-receiver tier: api
yamlapiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: signal-api spec: entryPoints: - web - websecure routes: # 此规则用于已存在的signal-cli-rest-api服务(未展示) - kind: Rule match: Host(`signal-api.example.com`) priority: 10 services: - name: signal-api port: http-web # 新规则用于signal-api-receiver - kind: Rule match: Host(`signal-api.example.com`) && Path(`/receive`) priority: 20 services: - name: signal-api-receiver port: receiver-web tls: secretName: signal-api-tls
本项目采用MIT许可证 - 详见https://github.com/kalbasit/signal-api-receiver/blob/main/LICENSE%E6%96%87%E4%BB%B6%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务