将本地 Docker 部署的 Dify 迁移到自己的服务器,需要完成以下关键步骤:
一、迁移前准备工作
-
环境检查
-
确保服务器满足:
- OS: Ubuntu 20.04+/CentOS 7+
- 内存: ≥4GB(推荐8GB)
- 存储: ≥50GB SSD
- 开放端口:80 (HTTP), 443 (HTTPS), 22 (SSH)
-
-
备份本地数据
bash
bash# 备份数据库 docker exec -t dify-postgres pg_dumpall -c -U postgres > dify_db_backup.sql # 备份知识库文件 tar czvf knowledgebase_backup.tar.gz ./volumes/storage
二、服务器环境配置
1. 安装基础依赖
bash
bash
# Ubuntu
sudo apt update && sudo apt install -y docker.io docker-compose git nginx
# CentOS
sudo yum install -y docker git nginx
sudo systemctl start docker
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. 配置防火墙
bash
bash
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
三、部署 Dify 到服务器
1. 获取部署文件
bash
bash
git clone https://github.com/langgenius/dify.git
cd dify/docker
2. 配置环境变量
编辑 .env
文件:
env
ini
# 关键配置项
NGINX_HTTP_PORT=80
NGINX_HTTPS_PORT=443
APP_SECRET_KEY=your_strong_secret_key # 生成命令:openssl rand -hex 32
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/dify
3. 启动服务
bash
docker-compose up -d
4. 验证部署
bash
css
docker ps -a # 应看到3个容器:app, worker, nginx
curl http://localhost/api/system/status # 返回{"status":"ok"}即成功
四、恢复数据
1. 恢复数据库
bash
bash
# 将备份文件复制到容器
docker cp dify_db_backup.sql dify-postgres:/tmp/
# 执行恢复
docker exec -it dify-postgres psql -U postgres -f /tmp/dify_db_backup.sql
2. 恢复知识库
bash
bash
# 解压备份到存储卷
tar xzvf knowledgebase_backup.tar.gz -C ./volumes/storage
五、配置域名访问(Nginx 反向代理)
1. 创建 Nginx 配置
/etc/nginx/sites-available/dify.conf
:
nginx
ini
server {
listen 80;
server_name ai.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2. 启用配置
bash
bash
sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
六、启用 HTTPS(Let's Encrypt)
bash
bash
# 安装 certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d ai.yourdomain.com
# 自动续期测试
sudo certbot renew --dry-run
七、系统优化
1. 开机自启
bash
bash
sudo systemctl enable docker nginx
2. 日志管理
bash
bash
# 查看实时日志
docker-compose logs -f app
# 日志轮转(创建 /etc/logrotate.d/dify)
/var/lib/docker/containers/*/*.log {
daily
rotate 7
compress
delaycompress
missingok
copytruncate
}
八、故障排查指南
问题现象 | 解决方案 |
---|---|
502 Bad Gateway | 检查容器状态:docker-compose ps |
数据库连接失败 | 验证 .env 中的 DATABASE_URL |
知识库加载失败 | 检查存储卷权限:chmod -R 755 volumes |
HTTPS 重定向循环 | 在 Nginx 配置中添加:proxy_set_header X-Forwarded-Proto $scheme; |
九、升级维护
bash
bash
# 更新代码
cd dify/docker
git pull origin main
# 重建服务
docker-compose down
docker-compose up -d --build
💡 建议:
使用
watch -n 5 docker stats
监控资源占用重要更新前创建快照:
docker commit dify-app dify-backup-$(date +%F)
设置每日自动备份数据库(通过 crontab)
完成以上步骤后,您的 Dify 已稳定运行在自有服务器上。可通过 https://ai.yourdomain.com
访问智能客服系统。