huty ac8c49edc7
CI — Docker Build & Push / Build & Push Image (push) Waiting to run
feat: 添加 Linux 一键部署和更新脚本
scripts/deploy.sh — 一键部署:
  - 自动检测发行版(Ubuntu/Debian/CentOS/RHEL/Rocky/AlmaLinux/
    Fedora/Alpine/Arch/Manjaro/openSUSE)并安装 Docker + Compose
  - 兼容 Docker Compose v1(docker-compose)和 v2(docker compose)
  - 支持两种部署模式:新建 MySQL / 现有 MySQL
  - 支持镜像来源:Gitea 仓库拉取 / 本地构建
  - 交互式配置:端口、密钥、管理员账号、MySQL 密码等
  - 自动生成加密随机 SECRET_KEY
  - 可选启用 Nginx 反向代理(--profile nginx)
  - 启动后执行健康检查,访问 /auth/login 验证

scripts/update.sh — 一键更新:
  - 读取 .deploy-state 恢复上次部署配置,无需重新输入参数
  - 更新前自动备份当前镜像标签(rollback-<时间戳>)
  - 拉取新镜像时对比摘要,无变化时提示可跳过
  - 健康检查失败时自动回滚至备份标签并重启服务
  - 自动清理旧备份镜像(仅保留最近 3 个)
  - 支持 --yes 免交互、--tag 指定目标标签

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:58:05 +09:00
2026-04-23 00:21:15 +09:00

个人资料库 (Personal Resource Library)

基于 Flask + MySQL 的个人多媒体资料管理系统。支持文本、图片、音频、视频的上传、URL 下载、磁力下载及在线预览。

功能特性

功能 说明
权限管理 管理员 / 普通用户两级权限,登录保护所有页面
资源管理 文本、图片、音频、视频四类资源
本地上传 拖拽或点击上传,带实时进度条
URL 下载 后台异步下载远程文件,实时轮询进度
磁力下载 调用 aria2c 在后台下载磁力链接资源
在线预览 文本高亮/图片查看/HTML5 音视频播放器
安全 bcrypt 加盐哈希密码、CSRF 防护、SQL 注入防护、XSS 防护

快速开始

1. 环境准备

  • Python 3.10+
  • MySQL 8.0+
  • (可选)aria2c — 用于磁力下载

2. 安装依赖

pip install -r requirements.txt

3. 配置数据库

创建 MySQL 数据库:

CREATE DATABASE resource_library CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

复制并修改环境配置:

cp .env.example .env

编辑 .env

SECRET_KEY=your-random-secret-key
DATABASE_URL=mysql+pymysql://root:yourpassword@localhost:3306/resource_library

4. 初始化数据库

python init_db.py
# 自定义管理员账号:
# python init_db.py --admin-user admin --admin-pass YourPass123 --admin-email admin@example.com

5. 启动服务

python run.py

访问 http://localhost:5000,使用默认管理员账号登录:

  • 用户名:admin
  • 密码:Admin@123456

项目结构

.
├── app/
│   ├── models/          # 数据库模型 (User, Resource, SystemSetting)
│   ├── routes/          # 路由蓝图 (auth, admin, resources, main)
│   ├── utils/           # 工具模块 (decorators, file_handler, downloader)
│   ├── static/          # 静态文件 (CSS, JS, 上传文件)
│   │   └── uploads/     # 用户上传文件目录(自动创建)
│   └── templates/       # Jinja2 模板
├── config.py            # 配置类
├── init_db.py           # 数据库初始化脚本
├── run.py               # 启动入口
└── requirements.txt

安全设计

安全措施 实现方式
密码存储 Flask-Bcryptbcrypt 自动加盐哈希)
CSRF 防护 Flask-WTF CSRFProtect,所有 POST 请求验证 token
权限控制 Flask-Login @login_required + 自定义 @admin_required
SQL 注入 SQLAlchemy ORM 参数化查询
XSS 防护 Jinja2 自动转义 HTML 输出
文件安全 werkzeug.secure_filename + 扩展名白名单验证
Session HTTPOnly Cookie + SameSite=Lax

磁力下载说明

磁力下载需要在服务器上安装 aria2c

  • Linux/macOSapt install aria2 / brew install aria2
  • Windows:从 aria2 Releases 下载并加入 PATH
S
Description
No description provided
Readme 282 KiB
0.1.0 Latest
2026-04-24 13:44:57 +08:00
Languages
HTML 41.5%
Python 32.7%
Shell 18.4%
CSS 3.8%
JavaScript 2.5%
Other 1.1%