ntfy 推送通知工具指南 一、工具简介 ntfy 是一款开源的 HTTP 推送通知服务，使用 Go 编写，单二进制发布，采用 Apache-2.0 协议。 核心目标： 解决脚本、训练、爬虫等长时间任务完成后，无法及时获知结果的问题。 核心特点： 一行 curl 命令即可发送通知 公共服务器 ntfy.sh 免费使用，无需注册、无需 API Key 手机端 App（Android / iOS，均开源）订阅同一 Topic 即可接收 Topic 名称即权限凭证，务必使用足够复杂、难以猜测的名称 二、基础用法示例 发送简单文本通知 curl -d "备份完成了" ntfy.sh/mytopic-secret123 带标题、优先级、标签的通知 curl -H "Title: 构建失败" \ -H "Priority: urgent" \ -H "Tags: warning,skull" \ -d "第 3 步测试挂了" \ ntfy.sh/mytopic-secret123 推送文件（如日志、截图） curl -T error.log \ -H "Filename: error.log" \ ntfy.sh/mytopic-secret123 三、适用人群与注意事项 推荐使用 经常写脚本做自动化任务的开发者 需要轻量级运维报警的运维人员 自托管玩家，希望自建私有推送通道 谨慎使用 仅需简单 IM 转发的轻度用户（微信群发可能更顺手） 介意数据经过第三方服务器、又不愿自建服务的用户 重要提醒 iOS 用户注意： 使用公共服务器时，后台推送可能存在延迟；如需稳定推送，建议自建服务并配置推送证书（比 Android 复杂）。 Android 用户体验更顺畅，推荐优先使用。 四、快速上手步骤 方式一：零安装体验（5 分钟） 构思一个复杂难猜的 Topic 名称 终端执行： curl -d "hello from terminal" ntfy.sh/你的topic名 手机安装 ntfy App 并订阅相同 Topic 方式二：完整体验（20–30 分钟） Android： Google Play / F-Droid 搜索 ntfy iOS： App Store 搜索 ntfy 打开 App → 订阅 → 输入 Topic 名称 方式三：自托管（可选） 适合对数据隐私有要求的用户： docker run -p 80:80 -it binwiederhier/ntfy serve 详细文档：https://docs.ntfy.sh/install/ 五、项目信息 项目字段 内容 项目名称 ntfy GitHub https://github.com/binwiederhier/ntfy 官网 https://ntfy.sh Star 数 ~3.2 万（截至 2026-07-14） 开源协议 Apache-2.0 六、一句话评价 ntfy 将「被通知」从 IM 中解耦，封装成可编程的 HTTP 接口，是自动化工具链中极其轻量、实用的一块拼图。
一款用于分析任何网站的一体化开源情报工具
官网：https://web-check.xyz/ github: https://github.com/lissy93/web-check 目前仪表盘将显示：IP 信息、SSL 证书链、DNS 记录、Cookie、标头、域名信息、搜索抓取规则、页面地图、服务器位置、重定向记录、开放端口、路由追踪、DNS 安全扩展、网站性能、跟踪器、关联主机名、碳足迹。
一、写作背景与核心主题 本文针对服务端主动向客户端推送数据的常见业务场景（数据大屏实时刷新、消息中心未读提醒、在线聊天等），对比分析了三类主流实现方案的优劣，重点介绍了 SSE（Server-Sent Events，服务端推送事件） 的使用场景、核心API与落地实践，帮助开发者根据业务需求选择更合适的推送方案。 二、三类实时推送方案全面对比 方案 核心原理 优点 缺点 适用场景 轮询 客户端定时/不间断向服务端发起HTTP请求，模拟“推送”效果 实现简单，兼容所有浏览器 1. 每次请求都要经历HTTP建连/断连流程，资源浪费严重2. 长期占用浏览器并发名额（Chrome同域名并发限制为6）3. 轮询间隔短则耗资源，间隔长则实时性差 仅作为浏览器完全不支持WebSocket和SSE的兜底方案，不推荐常规使用 WebSocket 基于ws/wss协议的全双工双向通信，客户端和服务端可随时互相发送数据 1. 双向通信能力强2. 实时性极高3. 现代浏览器兼容性良好 1. 是独立于HTTP的新协议，需要服务端额外适配支持2. 协议复杂度高，相对“重量级”3. 断线重连需要自行实现 需要双向交互的场景：在线聊天、多人协作编辑、实时游戏等 SSE 基于HTTP/1.1的单向长连接，仅支持服务端主动向客户端推送数据 1. 轻量，协议复杂度远低于WebSocket2. 完全复用现有HTTP服务端生态，无需额外适配3. 默认支持断线重连4. 客户端资源消耗低5. 支持自定义数据类型 1. 仅支持单向通信（服务端→客户端）2. IE浏览器、小程序不支持 仅需服务端单向推送的场景：数据大屏实时数据、消息中心通知、系统公告、日志实时输出等 三、SSE核心知识点详解 1. 连接状态（readyState） 通过EventSource实例的readyState属性可获取当前连接状态： 0（对应常量EventSource.CONNECTING）：连接未建立，或连接已断线正在重试 1（对应常量EventSource.OPEN）：连接已建立，可正常接收数据 2（对应常量EventSource.CLOSED）：连接已断开，且不会重连 2. 核心事件监听 事件名 触发时机 典型用途 open 连接成功建立时触发 初始化页面状态、打印连接成功日志 message 收到服务端推送的数据时触发 解析数据并更新页面UI error 发生通信错误、连接中断时触发 提示用户连接异常、记录错误日志 3. 服务端响应规范 SSE要求服务端返回特定的HTTP响应头和数据格式： Content-Type: text/event-stream # 声明SSE流式数据格式 Cache-Control: no-cache # 禁止缓存，保证数据实时性 Connection: keep-alive # 声明长连接 数据体格式必须以data:开头，两个换行符\n\n结束： data: {"message": "Current time is 10:30:00"}\n\n 四、SSE实战Demo说明 文章提供了原生HTML前端 + Node.js Express后端的完整可运行示例，无需任何框架即可验证SSE效果： 1. 前端实现逻辑 首先检测浏览器是否支持window.EventSource，不支持则抛出错误 通过new EventSource('http://localhost:8088/sse/')建立SSE连接 监听open/message/error事件，收到数据后动态创建 元素插入页面 2. 后端实现逻辑（Node.js Express） 配置跨域支持，允许前端页面访问 设置SSE要求的响应头 通过setInterval每秒向客户端推送一次当前时间 const express = require('express'); const app = express(); const port = 8088; // 跨域配置 app.all("*", (req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With"); res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); req.method === 'OPTIONS' ? res.sendStatus(200) : next(); }); // SSE接口 app.get("/sse", (req, res) => { res.set({ 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); setInterval(() => { const data = { message: `Current time is ${new Date().toLocaleTimeString()}` }; res.write(`data: ${JSON.stringify(data)}\n\n`); }, 1000); }); app.listen(port, () => console.log(`服务启动成功：http://localhost:${port}`)); 五、关键结论与注意事项 选型优先级：能用SSE解决的单向推送需求，不要用更复杂的WebSocket；需要双向通信再选WebSocket；轮询仅作为兜底方案。 兼容性提醒： SSE和WebSocket现代浏览器兼容性均较好 ❌ IE浏览器不支持SSE ❌ 微信小程序不支持SSE 开发小技巧：轮询虽然不推荐用于生产环境，但开发调试时实现成本极低，适合快速验证逻辑。
Gatus 介绍：Go 语言编写的主动式健康监控状态页
Gatus 介绍：Go 语言编写的主动式健康监控状态页 核心定位 Gatus 是一款用 Go 开发的主动式健康状态监控面板（GitHub 10k+ Star），用于填补传统监控工具的盲区： 传统监控（如 Prometheus Alertmanager）依赖流量触发告警，若服务无访问则无法发现故障。 Gatus 采用主动探测逻辑，按预设间隔主动检查端点，在用户感知问题前发出预警。 核心公式：主动健康检查 + 可视化状态页 + 多通道告警 支持 HTTP、ICMP、TCP、DNS、gRPC、WebSocket 等十余种协议，单 Docker 命令即可启动。 核心特性 特性 说明 灵活条件语法 不止校验状态码，可基于响应体（支持 JSONPath）、响应耗时、SSL 证书/域名过期时间等配置规则，支持数组长度、多值匹配、正则等函数，也可用于简易 UAT 测试。 Suite 端到端监控 支持串联多步请求，前序请求的返回结果可作为后续请求参数，实现「创建-更新-校验-删除」等完整业务流的可用性监控。 外部端点推送 内网服务无需暴露端口，可通过 Agent 主动推送健康状态，支持心跳检测，超时未上报即触发告警。 40+ 告警通道 覆盖协作工具（Slack/Discord/企业微信）、PagerDuty、短信、邮件、主流云厂商平台，支持自定义 Webhook；可配置「连续失败 N 次才告警」「恢复自动通知」。 SSH 隧道 可通过跳板机监控 Kubernetes 集群内或私有云内网服务。 生态兼容 暴露 Prometheus 指标，可对接现有监控体系；生成 SVG 状态徽章，可直接嵌入 GitHub README、文档站点。 低资源与安全 Go 实现，生产环境内存占用仅几十 MB，支持配置热加载、断网防误报，支持 Basic Auth/OIDC/mTLS 等安全特性。 部署与存储 部署方式 支持 Docker、Kubernetes Helm、Terraform、单二进制直接运行；配置文件支持多 YAML 文件拆分合并，便于多团队协作管理。 存储方案 存储类型 适用场景 Memory 快速体验，重启后数据丢失 SQLite 轻量单机部署、小团队/个人项目 PostgreSQL 生产环境、高可用需求 生产环境推荐 PostgreSQL + 写穿缓存，提升仪表盘加载速度。 同类工具对比 特性 Gatus Uptime Kuma Healthchecks.io 开发语言 Go Node.js Python 协议支持 极广（含 gRPC/SSH 等） 中等 较少 条件规则 灵活（支持 JSONPath/函数） 简单 简单 工作流监控 支持 不支持 不支持 SSH 隧道 支持 不支持 不支持 资源占用 极低 中等 中等 Gatus 更适合需要深度定制、监控复杂业务场景的技术团队。 适用场景 个人/小团队：快速搭建轻量监控，SQLite + 常用告警即可满足需求。 中大型团队：统一管理数百个微服务的健康状态，对接现有 Prometheus 监控体系。 SaaS 产品：对外提供用户可见的服务状态页，搭配徽章展示历史可用性。 DevOps 运维：补位传统监控盲区，实现无流量场景下的故障前置发现。 项目地址 GitHub：https://github.com/TwiN/gatus
开源工具 HTTPSMS 介绍 用 Android 手机做 SMS 网关，通过 HTTP API 收发短信，完全自托管、数据自主可控 核心定位 无需对接第三方商业短信平台，把闲置安卓手机变成私有短信网关： 调用简单 HTTP API 即可用你的手机号发信 手机收到的短信可通过 Webhook 实时推送到你的服务器 支持完全自托管，无厂商锁定期，数据自己掌握 整体架构 开源工具 HTTPSMS 介绍 用 Android 手机做 SMS 网关，通过 HTTP API 收发短信，完全自托管、数据自主可控 来源：「AI开源提效指南」公众号分享 核心定位 无需对接第三方商业短信平台，把闲置安卓手机变成私有短信网关： 调用简单 HTTP API 即可用你的手机号发信 手机收到的短信可通过 Webhook 实时推送到你的服务器 支持完全自托管，无厂商锁定期，数据自己掌握 整体架构 你的业务/脚本 → 调用 /v1/messages/send 接口 ↓（立即返回 202 Accepted，不阻塞） HTTPSMS 服务端（Go + Fiber）→ 异步通过 FCM 通知安卓端 ↓ 安卓 App（Kotlin）→ 调用系统短信能力收发信，回传状态 核心优势 特性 说明 多语言支持 官方 SDK 覆盖 Go / Python / JS / Java / C# / PHP 等，curl 可直接调用 端到端加密 AES-256 加密，密钥仅存于本地手机，服务器被攻破也无法解密短信 流量管控 支持自定义发送速率、消息过期时间，避免推送延迟、突发流量导致异常 低成本 开源免费（AGPL-3.0），无按条收费，仅需一台安卓机 典型使用场景 个人/内部系统的 2FA 短信验证码下发 服务器运维告警（比邮件/推送到达率更高） 自动化测试收验短信 无公网 IoT 设备的状态通知通道 与同类方案对比 特性 HTTPSMS Twilio/云短信 自建 GSM Modem 成本 免费/极低 按条收费 硬件采购成本 端到端加密 支持 不支持 本地处理 完全自托管 支持 不支持 支持 开源 AGPL-3.0 闭源 多数闭源 Webhook 转发 原生支持 部分支持 很少支持 快速上手 GitHub 地址：https://github.com/NdoleStudio/httpsms（当前 1.9k Star） 官方文档：https://docs.httpsms.com 部署方式：支持 Docker Compose 一键自托管，安卓端安装对应 App 即可使用
开源工具推荐：轻量终端网络监控工具 RustNet
开源工具推荐：轻量终端网络监控工具 RustNet 解决了什么痛点？ 传统网络排查工具往往顾此失彼，RustNet 旨在解决以下核心问题： 传统工具 存在的短板 netstat / ss 只能看到连接，无法关联到具体进程 tcpdump / Wireshark 抓包数据难绑定应用，远程服务器使用门槛高 X11 转发 配置极其繁琐，体验差 核心诉求：快速定位「哪个进程在和谁通信、用的什么协议、占了多少带宽」。 项目简介 RustNet 是一款用 Rust 编写的跨平台终端 UI（TUI）网络监控工具。 极简体积：不足 3MB 广泛兼容：支持 Linux / macOS / Windows / FreeBSD 技术栈：ratatui 构建界面、libpcap 抓包，Linux 下默认启用 eBPF 加速 社区热度：GitHub 收获 3.2k Star，已发布 20 个版本 核心功能亮点 精准溯源：直接将 TCP/UDP/QUIC 连接映射到对应进程。 深度识别：自动识别 HTTP / DNS / SSH / QUIC 等常见协议。 状态可视：颜色标记连接活跃度（白=活跃、黄=老化、红=超时），支持查看历史连接。 高效筛选：Vim 风格过滤（支持 port:/process:/sni: 等字段），支持快速排序。 附加能力：内置本地 GeoIP 库（离线查归属地）、进程分组折叠、网卡级统计。 快速安装 各平台安装命令 平台 安装命令 macOS / Linux (Homebrew) brew tap domcyrus/rustnet && brew install rustnet Ubuntu 25.10+ sudo add-apt-repository ppa:domcyrus/rustnet && sudo apt install rustnet 通用 (Cargo) cargo install rustnet-monitor Windows (Chocolatey) choco install rustnet (需先装 Npcap) 权限配置 抓包需要权限，推荐以下两种方式之一： 方式一：临时使用（最简单） sudo rustnet 方式二：永久免 sudo（Linux） sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon=eip' $(which rustnet) 常用操作 操作类型 命令/快捷键 说明 启动参数 -i eth0 指定监听网卡 --resolve-dns 开启反向 DNS 解析 -r 500 设置刷新间隔（毫秒） 界面交互 / 进入过滤模式（如 process:chrome） s 切换排序列（找流量大户） a 开启进程分组视图 i 切换到网卡统计视图 Enter 查看单条连接详情（含 SNI 域名） 适用人群 运维工程师：快速排查服务器流量暴涨原因。 后端开发者：确认服务连接的健康状态与协议合规性。 安全审计：在无图形界面的远程服务器上进行网络诊断。 项目地址：https://github.com/domcyrus/rustnet
OpenObserve：轻量级 Rust 日志系统 一句话总结：一个二进制、100MB 内存、内置 UI、支持 SQL 查日志，可作为 Elasticsearch / Loki 的轻量替代方案。 一、核心优势 Rust 编写：高性能、低内存、无 GC 抖动 单二进制部署：无外部依赖，一个容器即可运行 内置 Web UI：日志查询、仪表盘、告警一体化 SQL 查询日志：无需学习 LogQL 或 DSL 自动展平 JSON：嵌套字段可直接 SELECT / WHERE 多存储后端：本地磁盘 / S3 / MinIO / GCS 自动过期清理：按天或大小自动删除旧数据 二、与 Elasticsearch / Loki 对比 维度 Elasticsearch Loki OpenObserve 内存起步 4–8 GB ~256 MB ~100 MB 自带 UI Kibana（重） 需 Grafana 内置 查询语言 DSL LogQL SQL 单二进制 否 是 是 告警 需配置 需 Grafana 内置 部署复杂度 高 中 极低 三、快速部署（Docker） docker run -d \ --name openobserve \ --restart unless-stopped \ -p 5080:5080 \ -v /data/openobserve:/data \ -e ZO_DATA_DIR=/data \ -e ZO_ROOT_USER_EMAIL=admin@example.com \ -e ZO_ROOT_USER_PASSWORD=YourPassword \ public.ecr.aws/zinclabs/openobserve:latest 访问地址： http://<服务器IP>:5080/web/ 四、数据接入（HTTP API） 单条日志 curl -u "admin@example.com:TOKEN" \ -X POST http://localhost:5080/api/default/default/_json \ -H "Content-Type: application/json" \ -d '{ "message": "用户登录成功", "level": "info", "service": "web-api" }' 批量日志 curl -u "admin@example.com:TOKEN" \ -X POST http://localhost:5080/api/default/default/_json \ -H "Content-Type: application/json" \ -d '[ {"message": "/api/users", "latency_ms": 45, "status": 200}, {"message": "DB timeout", "level": "error", "status": 500} ]' 五、SQL 查询示例 -- 最近 1 小时错误日志 SELECT * FROM "default" WHERE _timestamp > now() - INTERVAL '1 HOUR' AND message LIKE '%error%' ORDER BY _timestamp DESC LIMIT 100; -- 每小时请求量统计 SELECT date_trunc('hour', _timestamp) AS hour, count(*) AS request_count FROM nginx_logs GROUP BY hour ORDER BY hour; 六、常见坑与解决方案 问题 原因 解决方式 数据不过期 WebUI 优先级高于环境变量 在 UI 中设置或检查变量名 401 错误 Ingestion Token 不等于 Query Token 使用 JWT 或查询 Token 镜像拉取失败 ECR 访问受限 使用 Docker 镜像加速 磁盘写满 默认保留 10 年 设置 ZO_DATA_RETENTION_DAYS 中文乱码 非 UTF-8 编码 推送时强制使用 UTF-8 七、适用场景 1–2 台服务器 不想维护 Grafana 全家桶 熟悉 SQL，不愿学习 LogQL 需要快速可用的日志系统 若重度依赖 LogQL 流式实时分析，Loki 仍然不可替代。 八、相关资源 官网：https://openobserve.ai GitHub：https://github.com/openobserve/openobserve 文档：https://openobserve.ai/docs
官网：https://easytier.cn/ github: https://github.com/EasyTier/Easytier 特征 核心功能 去中心化：节点平等且独立，无需中心化服务 易于使用：可通过网页、客户端和命令行进行多种操作 跨平台：支持 Windows/MacOS/Linux/FreeBSD/Android 以及 X86/ARM/MIPS 架构 安全：采用 AES-GCM 或 WireGuard 加密，防止中间人攻击 高级功能 高效的 NAT 穿越：支持 UDP 和 IPv6 穿越，适用于 NAT4-NAT4 网络 子网代理：节点可以共享子网，供其他节点访问。 智能路由：延迟优先级和自动路由选择，带来最佳网络体验 高性能：全程零拷贝，支持 TCP/UDP/WSS/WG 协议 网络优化 UDP 抗丢包能力：KCP/QUIC 代理可优化高丢包环境下的延迟和带宽 Web 管理：通过 Web 界面轻松配置和监控 零配置：使用静态链接可执行文件进行简单部署
Dockhand 一款现代化、高效的 Docker 管理应用程序，提供实时容器管理、Compose 堆栈编排和多环境支持
Dockhand 是一款现代化、高效的 Docker 管理应用程序，提供实时容器管理、Compose 堆栈编排和多环境支持。所有功能都集成在一个轻量级、安全且注重隐私的软件包中。 特征 容器管理：实时启动、停止、重启和监控容器 Compose Stacks：Docker Compose 部署的可视化编辑器 Git 集成：通过 Webhook 和自动同步从 Git 仓库部署堆栈 多环境：管理本地和远程 Docker 主机 终端和日志：交互式 shell 访问和实时日志流 文件浏览器：浏览、上传和下载容器中的文件 身份验证：通过 OIDC 实现 SSO、本地用户以及可选的 RBAC（企业级） github: https://github.com/Finsys/dockhand 官网：https://dockhand.pro/