2026年3月更新 ~2小时配置

2026年如何自托管Dify

在您自己的VPS上运行Dify的完整实用指南。从选择服务器到SSL证书和持续维护——一站式解决所有问题。

什么是Dify自托管?

Dify是一个开源的LLM应用开发平台,让您能够构建AI驱动的应用、聊天机器人和RAG管道。自托管意味着在您自己的服务器上运行Dify,而不是使用Dify Cloud

相对于Dify Cloud选择自托管的三个主要原因:

  • 成本 — Hetzner CX22每月€3.79,而Dify Cloud Pro每月$59。在团队规模时,节省非常显著。
  • 控制 — 完全访问配置、插件、自定义模型、无限工作区成员,无消息额度限制。
  • 数据隐私 — 您的提示词、文档和对话历史永远不会离开您自己的基础设施。对于受监管的行业至关重要。

权衡之处在于您负责配置、更新和正常运行时间。本指南使这变得简单。

服务器要求

最低配置

2 vCPU 4GB内存 50GB SSD

推荐配置

4 vCPU 8GB内存 80GB SSD

操作系统:Ubuntu 22.04 LTS(推荐)。Debian 11/12也可以使用。

1

选择服务器

对于大多数自托管用户,Hetzner CX22(€3.79/月,2 vCPU,4GB内存,40GB NVMe)是最佳起点。它可以轻松运行Dify及其所有服务。欧洲数据中心使其成为GDPR合规的理想选择。

对于想要更简单控制面板的初学者,Hostinger VPS从$7.99/月起,提供更多帮助。如果您需要8GB内存,其$9.99/月的KVM 2套餐提供出色的性价比。

提示:创建服务器时已添加您的公钥SSH。这完全避免了密码认证,更安全。

2

初始服务器配置

连接到您的服务器并运行初始配置:

# SSH连接到您的服务器
ssh root@YOUR_SERVER_IP

# 更新软件包
apt update && apt upgrade -y

# 安装必要工具
apt install -y curl wget git ufw

# 创建非root用户
adduser dify
usermod -aG sudo dify

# 复制SSH密钥到新用户
rsync --archive --chown=dify:dify ~/.ssh /home/dify

# 配置UFW防火墙
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw --force enable
ufw status

现在退出并以dify用户身份重新连接以完成剩余步骤。

3

安装Docker Engine

使用官方apt仓库安装Docker——不要使用snap版本:

# 安装前提条件
sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 添加Docker apt仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 将您的用户添加到docker组(无需sudo)
sudo usermod -aG docker $USER
newgrp docker

# 验证安装
docker --version
4

安装Docker Compose插件

Docker Compose插件已包含在上述软件包中。验证其是否正常工作:

# 检查Docker Compose版本(应为v2.x)
docker compose version

# 如果未安装,手动添加
sudo apt install -y docker-compose-plugin
5

克隆并配置Dify

克隆官方Dify仓库并配置您的环境:

# 克隆仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker

# 从示例创建您的.env文件
cp .env.example .env

# 生成安全的SECRET_KEY
openssl rand -base64 42

# 编辑.env文件
nano .env

.env中需要更新的关键配置:

# 必须:设置强随机密钥
SECRET_KEY=your-generated-secret-key-here

# 设置您的域名(用于邮件和链接)
CONSOLE_URL=https://your-domain.com
APP_URL=https://your-domain.com

# 更改默认数据库密码
DB_PASSWORD=your-strong-db-password

# 更改默认Redis密码
REDIS_PASSWORD=your-strong-redis-password

# 可选:添加OpenAI API密钥以快速启动
OPENAI_API_KEY=sk-...
6

启动Dify

使用Docker Compose启动所有Dify服务:

# 在后台启动所有服务
docker compose up -d

# 验证所有容器都在运行
docker compose ps

# 查看启动日志(Ctrl+C退出)
docker compose logs -f

当所有容器显示healthy状态(需要1-2分钟),访问http://YOUR_SERVER_IP完成管理员配置向导。

7

使用Nginx配置SSL

Dify的Docker栈在端口80上包含自己的Nginx。对于SSL,我们将在其前面添加一个主机级别的Nginx作为反向代理。首先,更改Dify的端口以避免冲突:

# 在dify/docker/.env中,更改Nginx端口
EXPOSE_NGINX_PORT=8080

# 重启以应用更改
docker compose down && docker compose up -d

# 安装主机Nginx和Certbot
sudo apt install -y nginx certbot python3-certbot-nginx

# 为您的域名创建Nginx配置
sudo nano /etc/nginx/sites-available/dify

添加此配置(替换your-domain.com):

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
        client_max_body_size 100M;
    }
}
# 启用并测试
sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# 获取SSL证书(自动为HTTPS配置Nginx)
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
8

维护

更新Dify — Dify频繁发布更新。无需配置更改即可更新:

cd ~/dify
git pull origin main
cd docker
docker compose pull
docker compose up -d

备份 — 备份您的PostgreSQL数据库和上传的文件:

# 备份数据库
docker compose exec db pg_dump -U postgres dify > backup_$(date +%Y%m%d).sql

# 备份上传的文件
tar -czf dify_storage_$(date +%Y%m%d).tar.gz ./volumes/app/storage

监控 — 检查资源使用情况:

# 容器资源使用情况
docker stats

# 磁盘使用情况
df -h
docker system df

常见问题

端口冲突:80端口已被占用

另一个服务(通常是Apache)占用了80端口。停止它(sudo systemctl stop apache2)或通过在.env中设置EXPOSE_NGINX_PORT=8080来更改Dify的Nginx端口。

容器因内存不足而退出

Dify需要至少4GB内存。使用free -h检查。如果内存不足,添加4GB交换文件:fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile

无法访问管理员配置页面

检查所有容器是否正在运行(docker compose ps)以及防火墙是否允许80端口(sudo ufw status)。API容器需要30-60秒才能就绪——等待healthy状态。

忘记管理员密码

通过API容器重置:docker compose exec api flask reset-password——按照提示输入您的电子邮件和新密码。

如何零停机更新Dify?

运行docker compose pull预下载新镜像,然后docker compose up -d应用。Docker Compose默认执行滚动重启,因此停机时间通常不到30秒。