区块链中文技术社区 - Other-新手教程
type: channel
link: https://bcskill.com/index.php/category/Other-新手教程/
items: 一个简单的 Go 语言 HTTP、REST 和 SSE 客户端库
items: ntfy 推送通知工具指南
items: 一款用于分析任何网站的一体化开源情报工具
items: 你还在使用 WebSocket 实现实时消息推送吗？
items: Gatus 介绍：Go 语言编写的主动式健康监控状态页
items: 开源工具 HTTPSMS 介绍
items: 开源工具推荐：轻量终端网络监控工具 RustNet
items: OpenObserve：轻量级 Rust 日志系统
items: Easytier 一款简单、去中心化的网状 VPN，支持 WireGuard
items: Dockhand 一款现代化、高效的 Docker 管理应用程序，提供实时容器管理、Compose 堆栈编排和多环境支持

一个简单的 Go 语言 HTTP、REST 和 SSE 客户端库
type: item
date: 2026-07-16T09:17:16+08:00
description: https://github.com/go-resty/resty

ntfy 推送通知工具指南
type: item
date: 2026-07-16T08:21:57+08:00
description: 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 接口，是自动化工具链中极其轻量、实用的一块拼图。

一款用于分析任何网站的一体化开源情报工具
type: item
date: 2026-07-16T08:14:10+08:00
description: 官网：https://web-check.xyz/ github: https://github.com/lissy93/web-check 目前仪表盘将显示：IP 信息、SSL 证书链、DNS 记录、Cookie、标头、域名信息、搜索抓取规则、页面地图、服务器位置、重定向记录、开放端口、路由追踪、DNS 安全扩展、网站性能、跟踪器、关联主机名、碳足迹。

你还在使用 WebSocket 实现实时消息推送吗？
type: item
date: 2026-06-26T10:17:00+08:00
description: 一、写作背景与核心主题 本文针对服务端主动向客户端推送数据的常见业务场景（数据大屏实时刷新、消息中心未读提醒、在线聊天等），对比分析了三类主流实现方案的优劣，重点介绍了 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", (r…

Gatus 介绍：Go 语言编写的主动式健康监控状态页
type: item
date: 2026-05-27T09:38:56+08:00
description: 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 介绍
type: item
date: 2026-05-27T09:14:16+08:00
description: 开源工具 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
type: item
date: 2026-05-27T09:10:06+08:00
description: 开源工具推荐：轻量终端网络监控工具 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 日志系统
type: item
date: 2026-05-27T08:47:28+08:00
description: 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

Easytier 一款简单、去中心化的网状 VPN，支持 WireGuard
type: item
date: 2026-05-26T08:46:00+08:00
description: 官网：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 堆栈编排和多环境支持
type: item
date: 2026-03-24T08:50:00+08:00
description: Dockhand 是一款现代化、高效的 Docker 管理应用程序，提供实时容器管理、Compose 堆栈编排和多环境支持。所有功能都集成在一个轻量级、安全且注重隐私的软件包中。 特征 容器管理：实时启动、停止、重启和监控容器 Compose Stacks：Docker Compose 部署的可视化编辑器 Git 集成：通过 Webhook 和自动同步从 Git 仓库部署堆栈 多环境：管理本地和远程 Docker 主机 终端和日志：交互式 shell 访问和实时日志流 文件浏览器：浏览、上传和下载容器中的文件 身份验证：通过 OIDC 实现 SSO、本地用户以及可选的 RBAC（企业级） github: https://github.com/Finsys/dockhand 官网：https://dockhand.pro/