将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 访问智能客服系统。

相关推荐
To_OC4 小时前
从一行入口代码啃透 NestJS:工厂模式、装饰器和依赖注入是怎么串起来的
后端·设计模式·nestjs
Python私教4 小时前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
Python私教6 小时前
从表格到管理系统:别先写页面,先补齐权限、流程和审计
数据库·后端·架构
北斗落凡尘6 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
SomeB1oody8 小时前
【RustyML入门】6.0. 数学工具
开发语言·后端·机器学习·rust·教程
IT_陈寒8 小时前
为什么我的JavaScript闭包总是漏掉那个变量?
前端·人工智能·后端
用户8356290780519 小时前
如何使用 Python 将 PowerPoint 转换为 PDF 文档
后端·python
倔强的石头_9 小时前
从 8 行报错到一条故障链:我用蓝耘 MaaS 做了一个 AI 日志分析助手
后端
敲个大西瓜9 小时前
Spring Could Alibaba 核心面试题
java·后端·spring
用户8356290780519 小时前
如何使用 Python 为 PowerPoint 幻灯片添加切换效果
后端·python