惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
美团技术团队
博客园_首页
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
B
Blog
D
DataBreaches.Net
腾讯CDC
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
月光博客
月光博客
V
V2EX
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
The Cloudflare Blog
博客园 - 叶小钗
Y
Y Combinator Blog

祝融说。

第10章 工作图——从计划到验收的闭环 第11章 客观验收门与结构化审查 第12章 Headless 自主运行 第13章 上下文压缩与持久化管理 第14章 Daemon + Client 架构 第15章 可观测性与调试 第16章 测试策略与行为验证 第17章 文件系统即自我 第18章 三分架构——Tool、Skill、Capability 第19章 从 REPL 到操作系统 第1章 自主 AI agent 的困境 第20章 大门开在哪里——自修改系统的信任边界 第21章 事前之图,事后之树 第22章 有用户 vs. 无用户——两种 agent 模式 第23章 第三级验收门——什么时候信任你的 agent 第24章 Agent 应该忘记什么 第25章 第2章 文件系统即自我 第3章 事件驱动与消息模型 AI 辅助编程实战:从入门到团队治理 第八章:高级技能深度解析 第二册:进阶篇 第二章:方法论概览——管理者需要知道的 14 个技能 第二章:需求分析 第二章:准备工作 第九章:实战案例——完整项目拆解 第六章:常见陷阱与应对 第六章:风险控制——常见问题与预案 第六章:项目编排——多功能管理 第七章:全自动构建——从零到部署
PinConsole
祝融 · 2026-06-25 · via 祝融说。

你的访客,你的数据。

开源 ToB 实时访客监控 + 运营互动 + 录像回放平台。AGPL-3.0,自托管,数据从不出门——竞品 SaaS 的开源替代。

设计决策:

  • 数据主权:所有访客行为、运营对话、录像会话存在你自己的 PostgreSQL / Redis / MinIO。无第三方调用、无外部依赖。
  • AGPL-3.0 强 copyleft:任何修改必须开源,云厂商无法拿去做 SaaS——license 层的硬保护。
  • 标准栈,无锁定:Go 1.22 + Vue 3 + PostgreSQL 16 + Redis 7 + MinIO。每一层都是行业标准,Schema 在你手里。

决策者? → pinconsole.com · 工程师? → 自托管


为什么做这个

SaaS 访客互动工具把每个访客的行为、每次运营对话、每段录像都抽到自己的云里。你付费让他们把数据运到他们的基础设施——他们用它训练模型、锁定你、明年再涨价。

pinconsole 存在的理由是:这些数据本来就是你的。跑在你自己的基础设施上,代码你自己审计,想走就走——数据、Schema、二进制本来就在你手里。


能力

  • 实时访客监控 — rrweb 全量采集(DOM 变更 / 鼠标 / 滚动 / 输入)
  • co-browsing 双向协同 — cursor / click / scroll / 表单代填 / 跳转;用 rrweb 节点 ID,不用易碎的 CSS/XPath 选择器
  • 录像回放 — MinIO 归档 + rrweb-player;选择性截图(仅 canvas / WebGL / 跨域 iframe,1fps WebP q70),体积可控
  • 弹窗推送 + 双向聊天 — 运营主动弹窗 + 即时聊天
  • 多运营 claim 锁 — 1:1 访客-运营锁定(Redis SET NX + Lua release)
  • 反爬虫栈 — rate limit + UA 黑名单 + 行为分析 + fingerprint(纵深防御)
  • GDPR 合规 — consent opt-in + 被遗忘权 + IP 截断 + co-browse 知情横幅
  • 中英双语 i18n — 从第一天起,无硬编码文案

自托管

git clone https://github.com/iannil/pinconsole
cd pinconsole
cp .env.example .env

# 启动基础设施 + 构建 release 单二进制
make docker-up && make build

./server/bin/pinconsole-server
  • 访客落地页:http://localhost:8080/
  • 运营后台:http://localhost:8080/admin — 默认 [email protected](密码由 ADMIN_PASSWORD 环境变量设置)

生产部署:

docker compose --profile prod up -d --build

已知限制(部署前必读)

  1. 单实例 hub(不支持横向扩展) WebSocket 路由基于进程内 mapserver/internal/hub/hub.go)。 多实例部署(2+ server behind LB)会静默失败——访客和运营连到不同实例后互不可见。 系统不会报错,只是看起来"坏了"。横向扩展需引入 Redis Pub/Sub 或 NATS 作为消息总线。

  2. 500 WS/房间并发未压测 PLAN.md 把"500 WS/房间"作为设计目标驱动单租户 / hub-and-spoke / 1:1 锁定决策, 但 v1 未做实际压测。默认 PG_MAX_CONNS=25 / REDIS_POOL_SIZE=50 是经验值, 实际容量需部署方按自己工作负载验证。

  3. OSS 项目不提供生产拓扑 docker-compose prod profile 仅作为参考。实际生产拓扑 (VM / k8s / 反代 / TLS / 备份 / 监控 / 日志聚合 / 资源限制)由部署方自行决定。 本仓库只保证:

    • dev / CI 路径可重复运行
    • release 二进制 fail-secure
    • /healthz + /readyz 提供依赖健康检查
  4. Trace_id 端到端传播(1z 已补全) operator browser → server → visitor SDK → server → operator 形成完整 trace_id 闭环:

    • admin SPA 每次 REST 调用注入 X-Trace-Id 头(admin/src/api/client.ts
    • visitor SDK 收到 operator command 时缓存 trace_id,后续 10 个事件或 5 秒内继承(visitor-sdk/src/transport/ws.ts
    • server 端 TraceMiddleware + WS handler 还原 ctx trace_id

License

AGPL-3.0 — 详见 LICENSE

技术栈:Go 1.22 · Vue 3 · PostgreSQL · Redis · MinIO · rrweb。