# Henry **Repository Path**: richhenry/henry ## Basic Information - **Project Name**: Henry - **Description**: 包管理服务器本地源码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2025-10-20 - **Last Updated**: 2025-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Package Manager Server 一个基于 SQLite 混合数据库模型的软件包管理系统,支持 Debian/Ubuntu 和 RPM 包的浏览、下载和统计。 ## 功能特性 - 📦 **软件包浏览**:支持 Debian/Ubuntu (.deb) 和 RPM (.rpm) 包 - 🔍 **智能筛选**:按操作系统版本、Agiros 版本、架构筛选 - 📊 **下载统计**:实时统计下载次数和来源分析 - 🔐 **管理员面板**:版本配置、下载日志管理 - 📈 **数据可视化**:包统计矩阵、趋势图表 - 🗄️ **混合数据库**:SQLite 中央索引 + 专属数据库 ## 技术栈 ### 后端 - **FastAPI** - Web 框架 - **SQLite** - 数据库(混合模型) - **Docker** - 容器化部署 - **Nginx** - 反向代理 ### 前端 - **Vue 3** - 前端框架 - **Element Plus** - UI 组件库 - **TypeScript** - 类型安全 - **Vite** - 构建工具 ## 项目结构 ``` package_manager_server/ ├── src/api/ # 后端 API 服务 │ ├── api/v1/ # API 端点 │ ├── crud/ # 数据库操作 │ ├── models/ # 数据模型 │ └── schemas/ # Pydantic 模式 ├── services/ # 微服务 │ ├── web/ # 前端应用 │ ├── db-worker/ # 数据库工作器 │ └── synchronizer/ # 同步服务 ├── nginx/ # Nginx 配置 └── docker-compose.yml # Docker 编排 ``` ## 快速开始 ### 环境要求 - Docker & Docker Compose - Node.js 16+ (开发环境) ### 启动服务 ```bash # 克隆项目 git clone cd package_manager_server # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` ### 访问应用 - **前端界面**: http://localhost:3000 - **API 文档**: http://localhost:8000/docs - **管理员面板**: http://localhost:3000/admin ## 配置说明 ### 环境变量 复制 `env.example` 为 `.env` 并修改配置: ```bash # 应用配置 SECRET_KEY=your-secret-key PROJECT_NAME=Package Manager Server # SQLite数据库配置 SQLITE_DB_DIR=data # JWT配置 ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=10080 # 仓库路径 REPO_PATH=/app/repo ``` ### 数据库初始化 系统会自动初始化数据库结构,首次启动后: 1. 扫描 `/app/repo` 目录下的软件包 2. 解析包信息并建立索引 3. 创建中央数据库和专属数据库 ## 开发指南 ### 后端开发 ```bash cd src/api pip install -r requirements.txt uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` ### 前端开发 ```bash cd services/web npm install npm run dev ``` ## API 文档 ### 主要端点 - `GET /api/v1/packages` - 获取软件包列表 - `GET /api/v1/packages/{basename}/details` - 获取包详情 - `GET /api/v1/download-stats` - 下载统计 - `GET /api/v1/stats/matrix` - 统计矩阵 - `POST /api/v1/admin/login` - 管理员登录 详细 API 文档请访问:http://localhost:8000/docs ## 部署说明 **详细的部署文档请参考 [DEPLOYMENT.md](./DEPLOYMENT.md)** 该文档包含: - 完整的环境要求和安装步骤 - 详细的容器构建说明 - 数据库初始化流程 - 服务启动和验证步骤 - 更新部署流程 - 常见问题解决方案 ### 快速部署(生产环境) ```bash # 1. 克隆项目 git clone cd package_manager_server # 2. 配置环境变量 cp env.example .env vim .env # 修改 SECRET_KEY 等配置 # 3. 构建前端 cd services/web npm install && npm run build cd ../.. # 4. 构建并启动服务 docker compose build docker compose up -d # 5. 初始化数据库和扫描仓库 docker compose run --rm db-worker # 6. 创建管理员账户 docker compose exec api python -c " from crud.sqlite_user import create_user, init_users_database init_users_database() create_user(username='admin', password='admin123', email='admin@example.com', is_admin=True) print('✅ 管理员创建成功') " ``` ### 数据备份 ```bash # 备份数据库 docker exec api tar -czf - /app/data > backup-data-$(date +%Y%m%d).tar.gz # 备份仓库文件 docker exec api tar -czf - /var/www/html > backup-repo-$(date +%Y%m%d).tar.gz ``` ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 - 项目主页:https://gitee.com/agiros/package-manager-server - 问题反馈:https://gitee.com/agiros/package-manager-server/issues