SecFeedAI 是一个开源的安全新闻智能聚合与分析系统,通过 RSS 源实时获取全球安全新闻,结合 AI 技术进行智能分析,为安全从业者提供高效、精准的安全资讯服务。
最简单的部署方式,使用 Docker Compose 一键部署:
# 克隆项目
git clone https://github.com/YouChenJun/SecFeedAI.git
cd SecFeedAI
# 运行一键部署脚本
./start.sh
脚本会自动引导你完成配置,包括:
详细文档: QUICKSTART.md | DOCKER.md
如果你想本地开发或调试,可以按照以下步骤手动部署:
git clone https://github.com/YouChenJun/SecFeedAI.git
cd SecFeedAI
cd backend
cp configs/config.example.yaml configs/config.yaml
编辑 configs/config.yaml 文件,配置数据库、Redis 和 API 密钥等信息:
server:
port: "8080"
mode: "debug"
database:
host: "localhost"
port: "5432"
user: "postgres"
password: "postgres"
dbname: "secnews"
sslmode: "disable"
redis:
host: "localhost"
port: "6379"
password: ""
db: 0
eino:
api_key: "your_eino_api_key"
base_url: "https://api.eino.ai/v1"
pusher:
webhook_urls:
- "https://your-webhook-url.com"
auth:
username: "" # 首次运行时通过初始化页面设置
password: "" # 首次运行时通过初始化页面设置
jwt_secret: "" # 可选,留空将自动生成
guest_mode: true # 访客模式,允许未登录用户只读访问
cd ../frontend
cp .env.example .env
编辑 .env 文件,配置后端 API 地址:
VITE_API_BASE_URL=http://localhost:8080
SecFeedAI 现在包含完整的认证系统和访客模式支持。首次运行时,系统会自动检测配置状态:
首次运行初始化:
http://localhost:5173)backend/configs/config.yaml访客模式说明:
当启用访客模式(guest_mode: true)时:
安全建议:
backend/configs/config.yaml 文件权限为 600
chmod 600 backend/configs/config.yaml
guest_mode: false已配置系统:
如果 config.yaml 中已包含认证配置,访问前端时会直接跳转到登录页面,使用配置的用户名和密码登录即可。
Token 有效期: 访问令牌有效期为 24 小时,过期后需要重新登录。
cd backend
# 安装依赖
go mod download
# 启动服务
go run cmd/server/main.go
后端服务将在 http://localhost:8080 启动。
cd ../frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev
前端服务将在 http://localhost:5173 启动。
cd backend
go build -o server cmd/server/main.go
./server
cd frontend
npm run build
# 构建产物将生成在 dist 目录
后端提供了完整的 RESTful API,主要包括以下端点:
POST /api/v1/auth/login - 用户登录,获取访问令牌POST /api/v1/auth/setup - 首次运行时初始化认证配置GET /api/v1/auth/setup/status - 检查认证配置状态和访客模式GET /api/v1/auth/verify - 验证访问令牌有效性(需要认证)GET /api/v1/rss/sources - 获取 RSS 源列表(访客可访问)POST /api/v1/rss/sources - 创建 RSS 源(需要认证)PUT /api/v1/rss/sources/:id - 更新 RSS 源(需要认证)DELETE /api/v1/rss/sources/:id - 删除 RSS 源(需要认证)POST /api/v1/rss/sources/:id/test - 测试 RSS 源(需要认证)GET /api/v1/articles - 获取新闻列表(访客可访问)GET /api/v1/articles/:id - 获取新闻详情(访客可访问)GET /api/v1/articles/dashboard - 获取仪表板统计数据(访客可访问)GET /api/v1/analysis/results - 获取分析结果列表(访客可访问)GET /api/v1/analysis/results/:id - 获取分析结果详情(访客可访问)POST /api/v1/analysis/analyze - 手动触发 AI 分析(需要认证)GET /api/v1/system/status - 获取系统状态(访客可访问)认证说明:
Authorization: Bearer <your_token>
guest_mode 时无需认证即可访问SecFeedAI/ ├── backend/ # 后端代码 │ ├── cmd/ # 命令行入口 │ │ └── server/ # 主服务器入口 │ ├── configs/ # 配置文件 │ │ ├── config.yaml # 主配置文件 │ │ └── config.example.yaml # 配置示例 │ ├── internal/ # 内部包 │ │ ├── analyzer/ # AI 分析器 │ │ ├── api/ # API 处理程序 │ │ │ ├── routes.go # 路由配置 │ │ │ ├── auth_handler.go # 认证处理 │ │ │ ├── rss_handler.go # RSS 源管理 │ │ │ ├── article_handler.go # 文章管理 │ │ │ └── analysis_handler.go # 分析结果 │ │ ├── middleware/ # 中间件 │ │ │ └── auth.go # JWT 认证和访客模式中间件 │ │ ├── model/ # 数据模型 │ │ ├── repository/ # 数据仓库 │ │ ├── scheduler/ # 任务调度器 │ │ └── service/ # 业务逻辑 │ └── pkg/ # 公共包 │ └── config/ # 配置管理 └── frontend/ # 前端代码 ├── public/ # 静态资源 ├── src/ # 源代码 │ ├── api/ # API 客户端 │ ├── components/ # Vue 组件 │ ├── router/ # 路由配置(含访客模式路由守卫) │ ├── stores/ # Pinia 状态管理 │ │ └── auth.ts # 认证状态和访客模式 │ ├── views/ # 页面视图 │ │ ├── Login.vue # 登录页(含访客模式入口) │ │ ├── Setup.vue # 初始化页面 │ │ ├── Dashboard.vue # 仪表板 │ │ ├── RSSManagement.vue # RSS 源管理 │ │ ├── ArticleList.vue # 文章列表 │ │ └── Analysis.vue # 内容分析 │ ├── App.vue # 主应用组件(含访客模式 UI) │ └── main.ts # 应用入口 └── dist/ # 构建产物
欢迎参与 SecFeedAI 项目的开发!无论是报告 Bug、提交功能建议,还是直接贡献代码,我们都非常欢迎。
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证,详见 LICENSE 文件。
感谢所有为 SecFeedAI 项目做出贡献的开发者和社区成员!
SecFeedAI - 让安全新闻触手可及,让 AI 分析赋能安全!