Gigiomiccio425/dedsec-command-center

GitHub: Gigiomiccio425/dedsec-command-center

面向家庭实验室和 CTF 团队的全离线自托管指挥中心,将加密聊天、服务器监控、运维看板和加密笔记整合在单个 Docker 容器中,服务器端零知识,完全自主可控。

Stars: 0 | Forks: 0

DedSec hooded skull # ▓▒░ 中央指挥中心 ░▒▓ **你的家庭实验室。你的密钥。你做主。** 专为家庭实验室、CTF 团队以及任何不想把基础设施租给 会窥探你数据的公司的人准备的自托管指挥中心。 一个容器。无需云端。无遥测。拔掉网线也能运行。 `加密聊天` · `服务器监控` · `运维看板` · `加密笔记` · `CVE 订阅源` [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Gigiomiccio425/dedsec-command-center/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-FF007F)](LICENSE) [![Security](https://img.shields.io/badge/security-policy-CCFF00)](SECURITY.md) *quis custodiet ipsos custodes?*
## ▓ 这是什么 这四个工具通常意味着四份订阅、四个账户,以及四家 掌握你数据的公司。而在这里,它们只是属于你的一台机器上的一个程序。 | | 模块 | 功能 | |---|---|---| | 🎙️ | **DeadDrop** | 群组聊天,**在你的浏览器中**加密。阅后即焚消息、加密文件共享、以及让你隐身的“幽灵模式”。服务器只存储它无法读取的乱码文本。 | | 🎛️ | **Botnet Monitor** | 实时监控你拥有的每台服务器、树莓派和 VPS 的 CPU / RAM / 磁盘 / 温度。在出现问题时发出警报。标记意外暴露在互联网上的服务。 | | 📋 | **Ops Board** | 用于项目、CTF 挑战和待修补漏洞的 Kanban 看板。优先级最高可达 `SYSTEM FAILURE`。 | | 📁 | **Intel Vault** | 用于保存配置和报告的加密笔记,以及 CVE 订阅源阅读器。发现糟糕的 CVE,一键将其提升至看板。 | **一切都遵循的规则:** 服务器永远看不到你的消息、你的文件 或你的笔记。不是“我们保证不看”——它根本没有可以打开它们的密钥。 即使是管理员也不行。即使是你自己,在一台没有你密钥的机器上也不行。 ### 这不是什么 明说吧,因为只要带有兜帽骷髅标志的东西通常会被误以为占了其中两项,而带“crypto”这个词的又会被误以为是另一项: - **没有任何加密货币。绝对没有。** `@dedsec/crypto` 是 *密码学*(cryptography)—— AES-GCM, ECDH, HKDF。这里没有钱包、没有代币、没有 token、没有区块链、没有 矿工,也绝对没有任何支付途径。浏览器的 Payment Request API 已在 Permissions-Policy 标头中被明确禁用。 - **没有 AI,没有遥测,没有模型。** 这个代码库中没有任何东西调用推理 API、携带模型,或将你的内容发送到任何地方去处理。即使它想这么做也做不到:CSP 设置为 `connect-src 'self'`,而且服务器最初就没有可以读取你消息的密钥。 - **不是黑客工具。** 监控 agent 是只读的,没有命令 通道。它只报告自身所在机器的运行状态,不能被指令去执行 任何操作——接受远程命令的监控 agent 就是一个带有仪表板的后门。 ## ▓ 安装说明 (5 分钟) 你需要 [Docker](https://docs.docker.com/get-docker/)。就这些要求。 ### 1. 获取代码 ``` git clone https://github.com/Gigiomiccio425/dedsec-command-center cd dedsec-command-center cp .env.example .env ``` ### 2. 生成两个密钥 ``` # Linux / macOS — 将每个结果粘贴到 .env openssl rand -base64 48 # → API_SECRET openssl rand -base64 48 # → AGENT_TOKEN_SECRET ```
Windows PowerShell ``` [Convert]::ToBase64String((1..48|%{Get-Random -Max 256})) ```
如果使用占位符值,程序将拒绝启动。这是故意的。 ### 3. 选择你的访问地址 在 `.env` 中,将 `RP_ID` 设置为你将在浏览器中实际输入的主机名: ``` RP_ID=dedsec.lan # then add it to /etc/hosts or your router's DNS TLS_EXTRA_IP=192.168.1.10 # this machine's LAN address ``` ### 4. 启动 ``` docker compose up -d --build ``` ### 5. 信任证书 容器在首次启动时会生成自己的证书。你的浏览器需要 信任它,否则 passkey 登录将不起作用。 ``` make ca # writes dedsec-ca.crt and prints the install command for your OS ```
手动安装 ``` docker compose cp dedsec:/data/tls/ca.crt ./dedsec-ca.crt ``` | 操作系统 | 命令 | |---|---| | Linux | `sudo cp dedsec-ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates` | | macOS | `sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain dedsec-ca.crt` | | Windows | `certutil -addstore -f ROOT dedsec-ca.crt` (管理员终端) | | Android | 设置 → 安全 → 加密与凭据 → 安装证书 → CA | **Firefox 会忽略你操作系统的信任区。** 需要单独导入: `about:preferences#privacy` → 查看证书 → 导入。
### 6. 认领 打开 **`https://:8443`**。注册你的 passkey。第一个账户 将成为 `root`,随后注册通道将随之关闭——之后,加入系统需要 你生成的邀请码。 ## ▓ 将服务器添加到监控 ``` make agent # builds static binaries for amd64 and arm64 ``` 将正确的那个复制到你要监控的机器上,然后在 Web UI 中: **Nodes → Enroll** 会提供给你一个 token 和确切的命令。它看起来像这样: ``` DEDSEC_URL=https://dedsec.lan:8443/api/nodes/ingest \ DEDSEC_TOKEN= \ DEDSEC_CA=/etc/dedsec/ca.crt \ ./dedsec-agent ``` agent 读取 `/proc`,发送数据,然后休眠。**它没有命令通道**—— 它永远无法被指令去运行任何东西。接受远程命令的监控 agent 就是一个带有仪表板的后门。 ## ▓ 日常命令 ``` make up # start / rebuild make logs # follow the logs make backup # snapshot the database and encrypted files make ca # export the certificate for a new device make down # stop ``` ## ▓ 运行原理 ``` ┌─────────────────────────────────┐ your browser ───▶ │ ONE container, ONE process │ (holds the keys) │ │ │ Next.js UI ─┐ │ │ REST API ─┼─ one Fastify │ │ WebSockets ─┘ server, one │ │ SQLite port, one │ │ background jobs origin │ │ TLS (self-signed CA) │ └─────────────────────────────────┘ │ ▼ read-only telemetry your servers / Pis / VPS ``` **为什么只有一个进程:** 多一个容器意味着多一次网络跳转,多一份 TLS 配置,多一套会逐渐产生差异的环境变量,还会多占用约 200MB 的 RAM —— 这几乎耗尽了一个树莓派的可用预算。将 UI 直接挂载在 API 内部还消除了一大类的 bug:这里只有一个地址,所以没什么能 指错地方。 **坦诚的代价:** 一个进程意味着一个爆炸半径。我们对此进行了缓解——每个 后台任务都被包裹起来,因此崩溃会被记录并隔离,API 和 UI 属于隔离的作用域,剩下的交给 Docker 重启即可。
▓ 安全模型 —— 明确陈述的附带细则 **服务器真正做不到的事:** 读取你的消息、你的文件或 你的笔记。消息密钥在你的浏览器中生成,并作为不可导出的浏览器密钥存储—— 即使是注入到页面中的脚本也无法将它们复制走。 **服务器不可避免会知道的事:** 谁在哪个频道里,消息何时 发送,以及它们有多大。加密隐藏了内容,但无法隐藏对话 的存在。UI 在屏幕上直接说明了这一点,而不是把它埋在晦涩的政策中。 **这不是什么:** Signal。这里没有 Double Ratchet,因此窃取了实时频道密钥的攻击者 可以读取该密钥的历史记录。轮换频道(在有人被移除时会自动发生)可以限制后续的损害。 这种妥协换取了多设备同步、离线接收,以及 小到完全可以进行审计的代码量。 **移除某人**可以阻止他们阅读任何新内容。但这无法 抹除他们已经看到的内容。轮换实际的密钥,而不仅仅是访问权限。 **Intel Vault 中没有服务器端搜索**——服务器无法为它无法读取的内容 建立索引。搜索发生在你的浏览器中,在已经在那里解密的笔记上进行。 已通过 `packages/crypto` 测试验证:被篡改的密文、伪造的发送者、 在频道间移动的消息、倒填的日期以及被恶意移除的阅后即焚计时器 都会被拒绝。服务器可以删除或扣押消息。但它无法伪造一条。
▓ 项目布局 ``` ├── Dockerfile the single all-in-one image ├── docker-compose.yml one service ├── docker/entrypoint.sh mint cert · migrate · tune SQLite · run ├── scripts/generate-brand.mjs every graphic, generated from one pixel grid │ ├── apps/ │ ├── api/ THE server — API + WebSockets + UI host + jobs │ │ ├── prisma/schema.prisma │ │ └── src/modules/{auth,comms,nodes,ops,vault}/ │ ├── web/ Next.js UI (mounted inside the API process) │ └── agent/ Go collector, static, ~4MB, arm64 + amd64 │ └── packages/ ├── crypto/ end-to-end encryption. zero dependencies. └── contracts/ shared validation schemas ```
## ▓ LOGO 即源代码 ``` pnpm brand ``` 在 [`scripts/generate-brand.mjs`](scripts/generate-brand.mjs) 中的一个由 `#` 字符组成的 32×32 网格 生成了所有的 SVG、所有的 PNG、网站图标、模板、贴纸表、 ASCII banner 以及 React 组件。**通过打字来修改 LOGO。** 不需要设计 工具,也没有任何无法进行 diff 的二进制资产。PNG 编码器是用 `node:zlib` 手写的——没有任何会破坏 ARM 构建的原生依赖。
Sticker sheet
## ▓ DedSec 是谁,以及这如何塑造了这款应用 DedSec 起源于 **Anonymous**(无领袖、半无政府主义),其名字 来自 **LulzSec**。他们的目标从来不是钱——而是为了打破 *不对称性*:Blume 出售公民数据,将整座城市变成了一个监控面。力量 是以追随者数量来衡量的,而不是利用漏洞的数量,集体的力量 胜过任何个体。这就是为什么每个人都戴着面具。 因此,这个应用没有能读取你消息的管理员,没有恢复邮箱,没有 分析追踪,并在屏幕上直接标明自身的局限性。一个贴着骷髅头贴纸的、监控形状的工具会完全背离我们的初衷。 延伸阅读:[EFF 关于 Watch Dogs 和数字权利的讨论](https://www.eff.org/deeplinks/2026/07/how-watch-dogs-video-game-series-mirrored-and-predicted-real-world-digital-rights) · [Watch Dogs 维基](https://watchdogs.fandom.com/wiki/DedSec) · [PCGamesN](https://www.pcgamesn.com/watchdogs-2/watch-dogs-2-dedsec) ## ▓ 状态 任务书中的每个模块都有了可用的 UI,目前没有任何东西 能阻止人们使用它。剩下的只是打磨——以及再多代码也 无法弥补的一点:**目前还没有人在真实的硬件上运行过它。** Passkey 流程、 Go agent 以及树莓派的部署仅通过了编译器的验证, 除此之外再无他人。 | 层级 | 状态 | |---|---| | 加密 (`packages/crypto`) | ✅ 86/86 个测试通过 — `pnpm --filter @dedsec/crypto test` | | 身份验证 — passkeys, TOTP, 恢复, 邀请 | ✅ | | API — 通信, 节点, 运维, 保险库 | ✅ 113/113 个测试通过 — `pnpm --filter @dedsec/api test` | | Dashboard + 登录 UI | ✅ | | DeadDrop 聊天 UI — 附件, 阅后即焚计时器, 安全码 | ✅ | | Botnet / 机群 UI — ASCII 地图, 实时状态, 警报 | ✅ | | Ops Board UI | ✅ | | Intel Vault + CVE 订阅源 UI | ✅ | | 配置 — passkeys, 恢复轮换, TOTP, 邀请 | ✅ | | Go agent | ✅ 在 CI 中支持 amd64 / arm64 / arm 构建 · 未在真实硬件上测试 | | 在树莓派上验证 | ⬜ 尚未验证 —— 坦诚的差距 | [ROADMAP.md](ROADMAP.md) 是一份坦诚且始终保持更新的缺失清单 —— 包括那些已经构建好的模块内部存在的差距。
**MIT 许可证** · [LICENSE](LICENSE) · [安全政策](SECURITY.md) · [免责声明](NOTICE) 与 Ubisoft 无关。“Watch Dogs” 和 “DedSec” 是他们的商标。 这是一个独立的非商业粉丝项目;这里的每一张图片都是 由源代码生成的原始几何图形。未复制任何游戏资产。 ``` ▓ no cloud · no telemetry · no recovery email · no second chances ▓ ```
标签:CTF协作, Docker, 安全防御评估, 日志审计, 看板工具, 端到端加密, 自动化攻击, 自托管, 请求拦截, 运维监控