将dify部署到服务器上

将本地 Docker 部署的 Dify 迁移到自己的服务器,需要完成以下关键步骤:


一、迁移前准备工作

  1. 环境检查

    • 确保服务器满足:

      • OS: Ubuntu 20.04+/CentOS 7+
      • 内存: ≥4GB(推荐8GB)
      • 存储: ≥50GB SSD
      • 开放端口:80 (HTTP), 443 (HTTPS), 22 (SSH)
  2. 备份本地数据

    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

💡 建议

  1. 使用 watch -n 5 docker stats 监控资源占用

  2. 重要更新前创建快照:docker commit dify-app dify-backup-$(date +%F)

  3. 设置每日自动备份数据库(通过 crontab)

完成以上步骤后,您的 Dify 已稳定运行在自有服务器上。可通过 https://ai.yourdomain.com 访问智能客服系统。

相关推荐
间彧7 小时前
Java双亲委派模型的具体实现原理是什么?
后端
间彧7 小时前
Java类的加载过程
后端
DokiDoki之父7 小时前
Spring—注解开发
java·后端·spring
提笔了无痕8 小时前
什么是Redis的缓存问题,以及如何解决
数据库·redis·后端·缓存·mybatis
浪里行舟8 小时前
国产OCR双雄对决?PaddleOCR-VL与DeepSeek-OCR全面解析
前端·后端
lang201509288 小时前
Spring Boot缓存机制全解析
spring boot·后端·缓存
桦说编程9 小时前
Java并发编程:两种控制并发度的实现方法及其比较
java·后端
Moment9 小时前
性能狂飙!Next.js 16 重磅发布:Turbopack 稳定、编译提速 10 倍!🚀🚀🚀
前端·javascript·后端
lecepin10 小时前
AI Coding 资讯 2025-10-22
前端·javascript·后端