Atualizado Março 2026 ~2 horas de configuração

Como Hospedar o Dify por Conta Própria em 2026

Um guia completo e prático para executar o Dify em seu próprio VPS. Desde a escolha de um servidor até certificados SSL e manutenção contínua — tudo que você precisa em um só lugar.

O que é Hospedagem Própria do Dify?

O Dify é uma plataforma de desenvolvimento de aplicações LLM de código aberto que permite criar apps com IA, chatbots e pipelines RAG. A hospedagem própria significa executar o Dify em seu próprio servidor em vez de usar Dify Cloud.

Você escolheria a hospedagem própria em vez do Dify Cloud por três razões principais:

  • Custo — Um Hetzner CX22 custa €3,79/mês vs $59/mês para o Dify Cloud Pro. Em escala de equipe, as economias são dramáticas.
  • Controle — Acesso total à configuração, plugins, modelos personalizados, membros de workspace ilimitados e sem limites de créditos de mensagens.
  • Privacidade dos dados — Seus prompts, documentos e histórico de conversas nunca saem da sua própria infraestrutura. Fundamental para setores regulamentados.

A contrapartida é que você é responsável pela configuração, atualizações e tempo de atividade. Este guia torna isso simples.

Requisitos do Servidor

Mínimo

2 vCPU 4 GB RAM 50 GB SSD

Recomendado

4 vCPU 8 GB RAM 80 GB SSD

SO: Ubuntu 22.04 LTS (recomendado). Debian 11/12 também funciona.

1

Escolher um Servidor

Para a maioria dos usuários que hospedam por conta própria, Hetzner CX22 (€3,79/mês, 2 vCPU, 4GB RAM, 40GB NVMe) é o melhor ponto de partida. Executa o Dify e todos os seus serviços confortavelmente. Os data centers europeus o tornam ideal para conformidade com GDPR.

Para iniciantes que querem um painel mais simples, Hostinger VPS começa a partir de $7,99/mês e inclui mais suporte. Se você precisar de 8GB RAM, o plano KVM 2 deles a $9,99/mês oferece um excelente valor.

Dica: Crie o servidor com sua chave pública SSH já adicionada. Isso evita completamente a autenticação por senha e é mais seguro.

2

Configuração Inicial do Servidor

Conecte ao seu servidor e execute a configuração inicial:

# SSH no seu servidor
ssh root@IP_DO_SEU_SERVIDOR

# Atualizar pacotes
apt update && apt upgrade -y

# Instalar ferramentas essenciais
apt install -y curl wget git ufw

# Criar um usuário não-root
adduser dify
usermod -aG sudo dify

# Copiar chaves SSH para o novo usuário
rsync --archive --chown=dify:dify ~/.ssh /home/dify

# Configurar o firewall 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

Agora saia e reconecte como usuário dify para os próximos passos.

3

Instalar o Docker Engine

Instale o Docker usando o repositório apt oficial — não use a versão snap:

# Instalar pré-requisitos
sudo apt install -y ca-certificates curl gnupg lsb-release

# Adicionar a chave GPG oficial do Docker
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

# Adicionar o repositório apt do Docker
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

# Instalar o Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Adicionar seu usuário ao grupo docker (sem precisar de sudo)
sudo usermod -aG docker $USER
newgrp docker

# Verificar instalação
docker --version
4

Instalar o Plugin Docker Compose

O plugin Docker Compose está incluído no pacote anterior. Verifique que funciona:

# Verificar a versão do Docker Compose (deve ser v2.x)
docker compose version

# Se não estiver instalado, adicioná-lo manualmente
sudo apt install -y docker-compose-plugin
5

Clonar e Configurar o Dify

Clone o repositório oficial do Dify e configure seu ambiente:

# Clonar o repositório
git clone https://github.com/langgenius/dify.git
cd dify/docker

# Criar seu arquivo .env a partir do exemplo
cp .env.example .env

# Gerar uma SECRET_KEY segura
openssl rand -base64 42

# Editar o arquivo .env
nano .env

Configurações principais a atualizar em .env:

# OBRIGATÓRIO: Definir uma chave secreta aleatória forte
SECRET_KEY=sua-chave-secreta-gerada-aqui

# Defina seu domínio (usado em e-mails e links)
CONSOLE_URL=https://seu-dominio.com
APP_URL=https://seu-dominio.com

# Alterar a senha padrão do banco de dados
DB_PASSWORD=sua-senha-forte-do-bd

# Alterar a senha padrão do Redis
REDIS_PASSWORD=sua-senha-forte-do-redis

# Opcional: Adicione sua chave API da OpenAI para início rápido
OPENAI_API_KEY=sk-...
6

Iniciar o Dify

Inicie todos os serviços do Dify com o Docker Compose:

# Iniciar todos os serviços em segundo plano
docker compose up -d

# Verificar que todos os contêineres estão em execução
docker compose ps

# Acompanhar os logs para ver a inicialização (Ctrl+C para sair)
docker compose logs -f

Quando todos os contêineres mostrarem status healthy (leva 1-2 minutos), visite http://IP_DE_TU_SERVIDOR para completar o assistente de configuração do administrador.

7

Configurar SSL com Nginx

O stack Docker do Dify inclui seu próprio Nginx na porta 80. Para SSL, adicionaremos um Nginx no nível do host como proxy reverso na frente dele. Primeiro, mude a porta do Dify para evitar conflitos:

# Em dify/docker/.env, mude a porta do Nginx
EXPOSE_NGINX_PORT=8080

# Reiniciar para aplicar
docker compose down && docker compose up -d

# Instalar Nginx do host e Certbot
sudo apt install -y nginx certbot python3-certbot-nginx

# Criar config do Nginx para seu domínio
sudo nano /etc/nginx/sites-available/dify

Adicione esta configuração (substitua tu-dominio.com):

server {
    listen 80;
    server_name seu-dominio.com www.seu-dominio.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;
    }
}
# Habilitar e testar
sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# Obter certificado SSL (configura automaticamente o Nginx para HTTPS)
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
8

Manutenção

Atualizar o Dify — O Dify lança atualizações frequentemente. Atualize sem perder configurações:

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

Backup — Faça backup do seu banco de dados PostgreSQL e dos arquivos enviados:

# Backup do banco de dados
docker compose exec db pg_dump -U postgres dify > backup_$(date +%Y%m%d).sql

# Backup dos arquivos enviados
tar -czf dify_storage_$(date +%Y%m%d).tar.gz ./volumes/app/storage

Monitoramento — Verifique o uso de recursos:

# Uso de recursos dos contêineres
docker stats

# Uso de disco
df -h
docker system df

Perguntas Frequentes

Conflito de porta: algo já está usando a porta 80

Outro serviço (geralmente o Apache) está ocupando a porta 80. Pare-o (sudo systemctl stop apache2) ou mude a porta do Nginx do Dify em .env definindo EXPOSE_NGINX_PORT=8080.

O contêiner sai com erro de falta de memória

O Dify precisa de pelo menos 4GB de RAM. Verifique com free -h. Se a RAM estiver no limite, adicione um arquivo swap de 4GB: fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile.

Não consigo acessar a página de configuração do administrador

Verifique que todos os contêineres estão em execução (docker compose ps) e que seu firewall permite a porta 80 (sudo ufw status). O contêiner API leva 30-60 segundos para ficar pronto — aguarde o status healthy.

Esqueci a senha do administrador

Redefina-a pelo contêiner API: docker compose exec api flask reset-password — siga os prompts para inserir seu e-mail e nova senha.

Como atualizar o Dify sem tempo de inatividade?

Execute docker compose pull para baixar previamente as novas imagens, depois docker compose up -d para aplicar. O Docker Compose realiza reinicializações contínuas por padrão, então o tempo de inatividade é tipicamente inferior a 30 segundos.