LightningFast012/cyber-dashboard
GitHub: LightningFast012/cyber-dashboard
自托管的网络威胁情报 RSS 仪表板,聚合安全新闻源并自动提取 CVE 与关键词,支持实时告警和团队协作。
Stars: 0 | Forks: 0
# Cyber Dashboard
**版本 1.6.2** (Dash Prototype) — 一个可用于生产环境的、自托管的网络威胁情报仪表板,用于监控来自网络安全新闻源的 RSS feed。使用 FastAPI、Next.js、PostgreSQL 和 Docker 构建。
**仓库:** [github.com/LightningFast012/cyber-dashboard](https://github.com/LightningFast012/cyber-dashboard)
## 功能
### 核心
- **RSS Feed 聚合** — 添加、管理和轮询网络安全新闻 feed,支持可配置的刷新间隔
- **Feed 库** — 一键安装流行的网络安全 RSS feed
- **每日 Feed** — 今天的天气、实时时钟,以及按当天过滤的网络新闻
- **书签** — 保存文章并在专门的书签页面查看
- **文章情报** — 自动提取 CVE、严重性分类和关键词高亮
### Dash Prototype (v1.6.2)
- **服务选择器** — 登录后选择 Cyber、Tech 或 Game Dash(Cyber Dash 已上线;其他即将推出)
- **切换仪表板** — 无需登出即可返回选择器
### 管理 (v1.6.1)
- **GitHub 更新** — 管理页面会检查 GitHub Releases 并支持一键 Docker 重建
- **集中式版本控制** — 单一的 `VERSION` 文件驱动 API、UI 和备份
### 主题 (v1.6)
- **6 种内置预设** — 基础颜色、咖啡、拟物化、霓虹、终端、午夜
- **设置 → 主题标签页** — 预设画廊、颜色模式、强调色选择器、侧边栏布局、自定义 CSS
- **按用户区分的主题** — 偏好设置按账户存储;在登出和 Docker 重建后依然保留
- **自定义 CSS** — 经过净化的主题叠加层,支持导入/导出 ([主题开发指南](docs/theme-development.md))
### 改进 (v1.5.1)
- **文章来源过滤器** — 按 RSS 来源过滤文章 feed
- **天气预报** — 天气组件中包含当前天气和未来 5 小时展望
- **RSS feed 编辑** — 安装后更新名称、URL 和刷新间隔
- **日历组件** — 更大、更易读的日期显示
- **自定义 favicon** — 浏览器标签页中的 CD 徽标
### 移动端 (v1.5)
- **底部导航** — 仪表板、每日 Feed、书签和设置始终一键直达
- **可展开标签网格** — 折叠箭头可显示所有板块(Feed、通知、管理)
- **移动端搜索** — 手机上的全屏搜索覆盖层
- **触控友好的布局** — 移动端隐藏侧边栏;内容上方根据底部导航留白
- **只读组件网格** — 触摸设备上禁用拖拽/调整大小
### 仪表板
- **组件系统** — 具有自动配置和简化的“添加组件”流程的按用户划分仪表板
- **拖放布局** — 使用 React Grid Layout 重新定位和调整组件大小(桌面端)
- **15 个内置组件** — 天气、时钟、系统状态、网络信息、笔记、Markdown 等
- **每日 Feed 同步** — 时钟和天气组件与每日 Feed 共享相同的实时卡片
- **类别选择器** — 组件按信息、系统、网络和实用工具分组
- **可扩展框架** — 添加自定义组件 ([组件开发指南](docs/widget-development.md))
### 搜索与过滤
- **全局搜索** — 从页眉搜索文章、feed 和组件
- **搜索操作** — 跳转到仪表板上的某篇文章(带高亮显示)或打开全屏文章预览
- **高级过滤器** — 按严重性、CVE 存在情况和关键词关注列表复选框进行过滤
### 安全与访问
- **JWT 身份验证** — 用户名/邮箱和密码登录
- **Passkey (WebAuthn) 支持** — 在设置中注册 Passkey;在 Cloudflare 和反向代理后支持感知 HTTPS
- **基于角色的访问控制** — 管理员、用户和只读角色
- **管理员用户管理** — 从管理页面创建、编辑和删除用户
### 通知 (v1.3)
- **实时关键词警报** — RSS 导入在关键词匹配时向配置的频道发送通知
- **测试通知** — 在正式上线前从设置中验证 webhook/邮件频道
- **通知频道** — 每个用户支持 Discord、Slack、电子邮件、webhook 或 Matrix
- **紧急关键词** — 将关键词分类为紧急(红色轮廓 + 优先警报)或普通
### 关键词监控
- **关键词关注列表** — 监控术语(CVE、勒索软件、零日漏洞等),并带有紧急/普通分类
- **视觉高亮** — 紧急匹配使用红色卡片轮廓;普通匹配使用强调色高亮
- **过滤复选框** — 按关注列表中的关键词过滤文章 feed
### 自定义与数据
- **主题引擎 (v1.6)** — 六种预设、按用户区分的偏好设置、自定义 CSS,可通过 设置 → 主题 导入/导出
- **备份系统** — 将配置和数据以 JSON/ZIP 格式导出到项目的 `backups/` 文件夹
- **文章保留** — 管理员可配置的自动清理,并受书签保护
### API
- **REST API** — 完整的 OpenAPI/Swagger 文档位于 `/docs`
- **仪表板 API** — `GET /api/dashboard`、`POST /api/dashboard/widgets` 及相关 endpoint
## 快速开始
### 前置条件
- Docker 和 Docker Compose v2+
- 最低 2 GB 内存(推荐 4 GB)
- 端口 **3012** (Web) 和 **8095** (API) 可用
### 安装说明
```
git clone https://github.com/LightningFast012/cyber-dashboard.git
cd cyber-dashboard
cp .env.example .env
# 编辑 .env — 设置 SECRET_KEY、JWT_SECRET_KEY、POSTGRES_PASSWORD 和 ADMIN_* 值
docker compose up -d --build
docker compose logs -f
```
首次启动需要 2–5 分钟,用于构建镜像和初始化数据库。
### 访问
| 服务 | URL | 备注 |
|---------|-----|-------|
| **仪表板** | http://localhost:3012 | 主要入口点 (nginx) |
| **API** | http://localhost:8095 | 直接 API 访问 |
| **Swagger 文档** | http://localhost:3012/docs | 也可通过 `:8095/docs` 访问 |
| **健康检查** | http://localhost:8095/health | 后端健康 endpoint |
### 登录
凭据通过 `.env` 中的 `ADMIN_EMAIL`、`ADMIN_USERNAME` 和 `ADMIN_PASSWORD` 设置。在每次后端重启时,管理员账户都会同步为这些值。
登录后可以在 **设置 → Passkeys** 下注册 Passkey。
## 架构
```
┌─────────────┐
Browser :3012 ──▶ │ Nginx │
└──────┬──────┘
│
┌────────────┴────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Frontend │ │ Backend │
│ Next.js │ │ FastAPI │
│ :3000 │ │ :8000 │
└─────────────┘ └──────┬──────┘
│
┌──────▼──────┐ ┌──────────────┐
│ Worker │────▶│ PostgreSQL │
│ RSS Scheduler│ └──────────────┘
└──────┬──────┘
│
┌──────▼──────┐
│ Redis │
└─────────────┘
```
Nginx 将 `/` 路由到前端,将 `/api`、`/docs` 和 `/health` 路由到后端。在开发过程中直接访问时,前端也会代理 API 调用。
## 服务
| 容器 | 描述 |
|-----------|-------------|
| `cyberdash-nginx` | 反向代理 — 公共入口端口 3012 |
| `cyberdash-frontend` | Next.js React 仪表板(内部) |
| `cyberdash-backend` | FastAPI REST API |
| `cyberdash-worker` | 后台 RSS feed 轮询器 |
| `cyberdash-postgres` | PostgreSQL 数据库 |
| `cyberdash-redis` | Redis 缓存/队列 |
## 导航
| 标签页 | 描述 |
|-----|-------------|
| 仪表板 | 组件网格和最新情报 feed |
| 每日 Feed | 天气、时钟和当天的网络新闻 |
| RSS Feed | 管理、批量编辑和安装 feed |
| 书签 | 仅显示保存的文章 |
| 通知 | 活动警报频道概览 |
| 设置 | 主题、Passkey、通知频道、关键词 |
| 管理 | 用户管理(仅限管理员) |
在移动端上,底部栏显示仪表板、每日 Feed、书签和设置。点击 **更多** 展开完整的标签网格。
## 文档
- [安装指南](docs/installation.md)
- [Docker 部署指南](docs/docker-deployment.md)
- [配置指南](docs/configuration.md)
- [CasaOS 与 Portainer 指南](docs/casaos-portainer.md)
- [组件开发指南](docs/widget-development.md)
- [更新日志](docs/CHANGELOG.md)
## 开发
### 后端
```
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8095
```
### 前端
```
cd frontend
npm install
NEXT_PUBLIC_API_URL=http://localhost:8095 npm run dev
```
### 测试
```
cd backend && pytest
cd frontend && npm test
```
## 反向代理
兼容 Traefik、Nginx Proxy Manager、Caddy 和 Cloudflare。当 `FRONTEND_URL` 设置为您的公共 HTTPS URL 时,WebAuthn 和 HTTPS 来源检测即可正常工作。请参阅 [Docker 部署指南](docs/docker-deployment.md)。
## 发布到 GitHub
推送更改时,**请务必同时推送分支、标签和 GitHub Release** — 管理员更新检查器读取的是 Release,而不仅仅是 commit。请参阅 **[发布指南](docs/releasing.md)** 或运行:
```
./scripts/publish-github.sh
```
## 安全
- 在生产部署之前更改所有默认密码和密钥
- 带有可配置过期时间的 JWT 身份验证
- 支持在反向代理后进行自动域名和 HTTPS 检测的 WebAuthn/Passkey
- 速率限制(默认 60 请求/分钟)
- HTML 净化和 XSS 保护
- RSS feed 的 URL 验证
- 安全的 HTTP 标头
## 许可证
MIT
标签:AV绕过, Docker, FastAPI, RSS聚合, 威胁情报, 安全资讯监控, 安全防御评估, 开发者工具, 搜索引擎查询, 测试用例, 自动化攻击, 请求拦截