本指南介绍如何部署 Paper Burner X 的 Docker 版本(包含后端和数据库)。
- Docker 和 Docker Compose 已安装
- Git 已安装(用于克隆仓库)
# 1. 克隆仓库
git clone https://github.com/Feather-2/paper-burner-x.git
cd paper-burner-x
# 2. 复制环境变量模板
cp .env.example .env
# 3. 编辑环境变量(重要!)
nano .env # 或使用其他编辑器
# 4. 启动服务
docker-compose up -d
# 5. 查看日志
docker-compose logs -fcp .env.example .env打开 .env 文件并修改以下必须配置的项目:
# 1. 数据库密码(强烈建议修改)
DB_PASSWORD=你的超强密码123!@#
# 2. JWT 密钥(必须修改,至少 32 个字符)
JWT_SECRET=你的超级安全密钥-至少32个字符-请使用随机字符串
# 3. 管理员账户(首次启动时创建)
ADMIN_EMAIL=admin@yourdomain.com
ADMIN_PASSWORD=你的管理员密码
ADMIN_NAME=管理员方法 1:使用 OpenSSL(推荐)
# 生成 JWT 密钥
openssl rand -base64 32
# 生成数据库密码
openssl rand -base64 24方法 2:使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"方法 3:在线生成器 访问 https://randomkeygen.com/ 生成强密码
# OCR 服务(如果需要 OCR 功能)
MINERU_API_TOKEN=your_mineru_token
DOC2X_API_TOKEN=your_doc2x_token
# AI 翻译模型(如果需要后端提供 API keys)
DEEPSEEK_API_KEY=your_deepseek_key
GEMINI_API_KEY=your_gemini_key
CLAUDE_API_KEY=your_claude_key
TONGYI_API_KEY=your_tongyi_key
VOLCANO_API_KEY=your_volcano_key
# CORS 配置(如果需要限制访问域名)
CORS_ORIGIN=https://yourdomain.com,https://app.yourdomain.com
# 其他配置
MAX_UPLOAD_SIZE=100 # 文件上传大小限制(MB)
LOG_LEVEL=info # 日志级别检查你的 .env 文件是否包含所有必要的配置:
# 检查关键配置是否存在
grep -E "DB_PASSWORD|JWT_SECRET|ADMIN_EMAIL|ADMIN_PASSWORD" .env启动服务:
docker-compose up -d查看日志:
docker-compose logs -f停止服务:
docker-compose down重启服务:
docker-compose restart查看运行状态:
docker-compose psLinux/Mac:
chmod +x scripts/deploy.sh
./scripts/deploy.shWindows (PowerShell):
.\scripts\deploy.ps1# 拉取最新镜像
docker pull feather2dev/paper-burner-x:latest
# 手动运行(需要先启动 PostgreSQL)
docker run -d \
--name paper-burner-x \
-p 3000:3000 \
-e DATABASE_URL="postgresql://user:pass@host:5432/dbname" \
-e JWT_SECRET="your-secret-key" \
-e ADMIN_EMAIL="admin@example.com" \
-e ADMIN_PASSWORD="admin-password" \
feather2dev/paper-burner-x:latest# 检查容器是否运行
docker-compose ps
# 应该看到两个服务都是 "Up" 状态:
# - paper-burner-x_app
# - paper-burner-x_postgres- 前端界面: http://localhost:3000
- 管理面板: http://localhost:3000/admin
- API 健康检查: http://localhost:3000/api/health
- 访问 http://localhost:3000/admin
- 使用
.env中配置的管理员邮箱和密码登录 - 如果登录成功,说明后端和数据库都正常工作
# 1. 停止服务
docker-compose down
# 2. 拉取最新代码
git pull origin main
# 3. 重新构建镜像
docker-compose build --no-cache
# 4. 启动服务
docker-compose up -d# 1. 停止服务
docker-compose down
# 2. 拉取最新镜像
docker-compose pull
# 3. 启动服务
docker-compose up -d# 备份数据库
docker-compose exec postgres pg_dump -U paperburner paperburner > backup_$(date +%Y%m%d).sql
# 或使用 Docker 卷备份
docker run --rm \
-v paper-burner-x_postgres_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/postgres_data_backup.tar.gz /data# 从 SQL 文件恢复
docker-compose exec -T postgres psql -U paperburner paperburner < backup_20250115.sql# 进入数据库容器
docker-compose exec postgres psql -U paperburner -d paperburner
# 常用 SQL 命令
\dt # 列出所有表
\d User # 查看 User 表结构
SELECT * FROM "User" LIMIT 5; # 查看用户数据错误信息:
Error: Environment variable not found: DATABASE_URL
解决方法:
- 检查
.env文件是否存在 - 检查
docker-compose.yml是否正确引用了.env - 确保 PostgreSQL 容器已启动:
docker-compose ps
可能原因:
- 首次启动时
.env中的管理员配置不正确 - 数据库中管理员账户未创建
解决方法:
# 查看容器日志,确认管理员是否创建成功
docker-compose logs app | grep -i admin
# 重新创建管理员账户
docker-compose exec app node server/src/utils/initAdmin.js错误信息:
Error: port is already allocated
解决方法:
修改 docker-compose.yml 中的端口映射:
ports:
- "3001:3000" # 改为 3001 或其他可用端口排查步骤:
# 1. 查看详细日志
docker-compose logs
# 2. 检查环境变量
docker-compose config
# 3. 重新构建
docker-compose build --no-cache
docker-compose up如果你使用旧版本的代码遇到以下错误:
Error loading shared library libssl.so.1.1
解决方法: 拉取最新代码,已修复此问题(使用 OpenSSL 3.x)
使用 Nginx 或 Traefik 作为反向代理,配置 SSL 证书:
# 在 docker-compose.yml 中启用 Nginx 服务
# 取消注释 nginx 服务部分- ✅ 修改
DB_PASSWORD - ✅ 修改
JWT_SECRET(至少 32 个字符) - ✅ 修改
ADMIN_PASSWORD
# 在 .env 中设置允许的域名
CORS_ORIGIN=https://yourdomain.com# 只允许特定端口访问
ufw allow 80/tcp
ufw allow 443/tcp
ufw deny 3000/tcp # 禁止直接访问应用端口设置定时任务自动备份数据库:
# 添加到 crontab
0 2 * * * /path/to/backup-script.sh- README.md - 项目介绍
- LOCAL_TESTING.md - 本地测试指南
- docker-compose.yml - Docker Compose 配置
- Dockerfile - Docker 镜像构建配置
- 📖 查看文档:GitHub Wiki
- 🐛 报告问题:GitHub Issues
- 💬 讨论交流:GitHub Discussions
祝部署顺利!🎉