Технологии

Селф-хостинг Dify.AI на VPS: от установки до продакшена

Установка Dify.AI на VPS за ~20 минут: Docker, SSL, Ollama для локальных моделей, бэкапы. От $21.24/мес вместо $59/мес в Dify Cloud. Все команды и примеры.

Команда is*hosting 14 мая 2026 7 мин
Селф-хостинг Dify.AI на VPS: от установки до продакшена
Содержание

Dify Cloud Professional — $59/мес: лимиты на запуски, кредиты на сообщения, данные на чужих серверах. За $21.24-$47.99/мес на VPS вы получаете собственный инстанс — без квот платформы, без привязки к вендору, с полным контролем по SSH.

В этом гайде: установка, продакшен-настройка (SSL, секреты, бэкапы) и первый AI-воркфлоу. На чистом сервере — 20-30 минут.

Что понадобится

Выберите план под вашу задачу:

Dify с внешними API (OpenAI, Anthropic). Хватает для основного стека, но локальные модели не потянет:

  • Medium VPS
  • От $21.24/мес при оплате за год
  • Характеристики: 3 CPU / 4 ГБ RAM / 40 ГБ NVMe

Dify + лёгкие локальные модели (3B–4B) — Qwen, Phi-3:

  • Premium VPS
  • От $31.99/мес при оплате за год
  • Характеристики: 4 CPU / 8 ГБ RAM / 50 ГБ NVMe

Dify + модели до 13B — Llama 3, Qwen:

  • Elite VPS
  • От $47.99/мес при оплате за год
  • Характеристики: 6 CPU / 16 ГБ RAM / 80 ГБ NVMe

Прочие требования

  • Ubuntu 24.04 LTS. Проверьте, установлен ли Docker: docker --version — если команда вернула версию, пропускайте шаг установки.
  • SSH-доступ к серверу
  • Доменное имя опционально, нужно для HTTPS
  • API-ключ от провайдера модели или Ollama для локального инференса

Установка Dify.AI на VPS

Все команды — Ctrl+C, Ctrl+V. Плейсхолдеры — ЗАГЛАВНЫМИ. Это полный гайд по селф-хостингу Dify на Ubuntu: от чистого сервера до рабочего дашборда Dify.AI.

Шаг 1. Подготовка сервера

Подключаемся и обновляем:

# Подключение
ssh root@YOUR_SERVER_IP

# Обновление системы
apt update && apt upgrade -y

# Открываем порты для Dify
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Настройка файрвола UFW на VPS

SSH остаётся открытым, наружу только HTTP/HTTPS. Всё остальное заблокировано.

Если Docker не установлен:

curl -fsSL https://get.docker.com | sh

docker compose version

Вывод версии Docker Compose

Вторая команда проверяет наличие Docker Compose. Если ошибка, то установите отдельно:apt install docker-compose-plugin -y

Шаг 2. Установка Dify

# Клонируем репозиторий
git clone https://github.com/langgenius/dify.git

# Переходим в директорию Docker
cd dify/docker

# Создаём конфиг
cp .env.example .env

# Если на VPS стоит панель управления (ispmanager, Hestia и т.д.),
# порты 80 и 443 уже заняты. Переназначаем порты Dify:
sed -i 's/EXPOSE_NGINX_PORT=80/EXPOSE_NGINX_PORT=8090/g' .env
sed -i 's/EXPOSE_NGINX_SSL_PORT=443/EXPOSE_NGINX_SSL_PORT=8443/g' .env

# Запускаем все сервисы
docker compose up -d

Клонирование репозитория Dify с GitHub

Первый запуск тянет все Docker-образы (~2-4 ГБ). На 1 Gbps канале займёт примерно 3-5 минут.

Вывод docker compose up — все контейнеры Dify запущены

Проверяем, что стек поднялся:

docker compose ps

У всех контейнеров должен быть статус "running". Если какой-то показывает "exited": docker compose logs SERVICE_NAME

Вывод docker compose ps — все контейнеры Dify работают

Шаг 3. Первый вход

Открываем http://YOUR_SERVER_IP:8090 (или порт 80, если не меняли порты). Откроется мастер настройки.

Мастер настройки Dify — создание аккаунта администратора

  • Создайте аккаунт администратора.
  • Перейдите в SettingsModel Provider и добавьте первую AI-модель.
  • Вставьте API-ключ (OpenAI, Anthropic, Gemini или любой поддерживаемый провайдер). Dify проверит подключение сразу.
  • Дашборд готов. Можно собирать воркфлоу.

Дашборд Dify Studio — готов к созданию приложений

Настройки Dify — страница Model Provider с доступными AI-провайдерами

Шаг 4 (опционально). Подключение Ollama для локальных моделей

Если вы на Medium VPS, этот шаг пропускайте — не хватит RAM для локальных моделей. Инструкции ниже рассчитаны на Premium VPS (8 ГБ) и выше. На Premium нормально работают лёгкие модели (3B-4B) вроде Qwen или Phi-3. Для 7B+ нужен Elite (16 ГБ).

Ollama позволяет запускать модели Llama, Qwen, Gemma на том же сервере, что и Dify.

# Устанавливаем Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Скачиваем модель (llama3 — ~4.7 ГБ)
ollama pull llama3

# Проверяем, что модель загрузилась
ollama list

Установка Ollama на VPS

Вывод ollama pull llama3 и ollama list

Модель скачивается в /usr/share/ollama/.ollama/models. Перед скачиванием проверьте свободное место: df -h

Исправляем сетевую ошибку Ollama

Возможны две причины, почему Dify не видит Ollama: Ollama слушает только localhost (Docker-контейнеры не достучатся), и UFW блокирует порт 11434.

Открываем Ollama на все интерфейсы через systemd override:

mkdir -p /etc/systemd/system/ollama.service.d

echo '[Service]' > /etc/systemd/system/ollama.service.d/environment.conf
echo 'Environment="OLLAMA_HOST=0.0.0.0"' >> /etc/systemd/system/ollama.service.d/environment.conf

systemctl daemon-reload
systemctl restart ollama

Ollama теперь слушает на всех интерфейсах. Переопределение сохраняется после перезагрузки.

Открываем порт в UFW:

# Разрешаем доступ только из Docker-контейнеров (не из интернета)
ufw allow from 172.17.0.0/16 to any port 11434

# У Ollama нет встроенной аутентификации.
# Не используйте 'ufw allow 11434/tcp' — это откроет модели для всех.

Подключаем Ollama к Dify

Находим IP Docker bridge gateway:

ip route | grep docker | awk '{print $9}'
# Обычно возвращает: 172.17.0.1

IP Docker bridge gateway — 172.17.0.1

Bridge IP держит трафик внутри хоста. Если не работает, используйте http://YOUR_SERVER_IP:11434.

В Dify: SettingsModel Provider, найдите Ollama, нажмите Add Model. Заполните:

Dify Model Provider — поиск и установка Ollama

Ollama установлена в Dify — кнопка Add Model

  • Model Name: llama3
  • Base URL: http://172.17.0.1:11434 (Docker bridge IP из команды выше)
  • Model Type: LLM (по умолчанию, оставляем)
  • Authorization Name: оставить пустым
  • Completion mode: Chat (по умолчанию)
  • Model context size: 8192
  • Upper bound for max tokens: 4096
  • Vision support: No
  • Function call support: No

Форма добавления модели Ollama в Dify

Нажмите Save. Рядом с Ollama появится зелёный бейдж Active — значит подключение работает.

Если бейдж не появился, проверьте, что выполнены оба шага: systemd override и ufw allow from 172.17.0.0/16 to any port 11434 Повторите Save.

Настройка для продакшена

01_ru

Инстанс на порту 8090 с дефолтными кредами — это тестовое окружение. Прежде чем пускать на него реальный трафик, настройте SSL, секреты и бэкапы.

Обратный прокси и SSL

Убеждаемся, что Dify работает на порту 8090 (мы задали это в Шаге 2):

cd ~/dify/docker

# Проверяем, что порт задан на Шаге 2:
grep EXPOSE_NGINX_PORT .env
# Должно вернуть: EXPOSE_NGINX_PORT=8090

# Если всё ещё показывает 80, переназначаем:
sed -i 's/EXPOSE_NGINX_PORT=80/EXPOSE_NGINX_PORT=8090/g' .env
sed -i 's/EXPOSE_NGINX_SSL_PORT=443/EXPOSE_NGINX_SSL_PORT=8443/g' .env
docker compose down && docker compose up -d

Теперь Dify работает на порту 8090 внутри. Системный Nginx будет проксировать с 80/443 на 8090.

Устанавливаем Nginx и Certbot:

apt install nginx certbot python3-certbot-nginx -y

Создаём конфиг Nginx:

nano /etc/nginx/sites-available/dify

Вставляем серверный блок:

server {
    listen 80;
    server_name YOUR_DOMAIN;

    location / {
        proxy_pass         http://127.0.0.1:8090;
        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_buffering    off;
        proxy_read_timeout 3600s;
        client_max_body_size 100M;
    }
}

proxy_read_timeout 3600s — для долгих запросов инференса. client_max_body_size 100M — чтобы можно было загружать документы в базу знаний.

# Включаем сайт
ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

# Получаем бесплатный SSL-сертификат
certbot --nginx -d YOUR_DOMAIN

Certbot настроит HTTPS автоматически и включит авто-обновление сертификата. После этого Dify доступен по https://YOUR_DOMAIN.

Секреты

Замените все три значения до подключения реальных данных:

cd ~/dify/docker

# Генерируем три отдельных секрета
openssl rand -base64 32   # для SECRET_KEY
openssl rand -base64 32   # для DB_PASSWORD
openssl rand -base64 32   # для REDIS_PASSWORD

# Редактируем .env и обновляем три строки:
nano .env

SECRET_KEY=YOUR_GENERATED_SECRET
DB_PASSWORD=YOUR_GENERATED_DB_PASSWORD
REDIS_PASSWORD=YOUR_GENERATED_REDIS_PASSWORD

Запускайте каждую команду openssl отдельно и вставляйте результат в соответствующую строку. Не используйте одно и то же значение для разных полей.

# Перезапускаем для применения секретов
docker compose down && docker compose up -d

# Блокируем прямой доступ к внутреннему порту Dify
ufw deny 8090/tcp

Бэкапы

is*hosting делает еженедельные бэкапы инфраструктуры — это покрывает сам сервер. Данные приложения Dify — воркфлоу, базы знаний, загруженные документы, векторные эмбеддинги — живут в директории dify/docker/volumes/. Их нужно бэкапить отдельно.

#!/bin/bash
# Скрипт бэкапа Dify
# Сохраните как /home/backup_dify.sh
# chmod +x /home/backup_dify.sh

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/dify_backups"
DIFY_DIR="/root/dify/docker"

mkdir -p $BACKUP_DIR

# Бэкапим всю директорию volumes
tar czf $BACKUP_DIR/dify_volumes_$DATE.tar.gz \
  -C $DIFY_DIR volumes/

echo "Backup done: dify_volumes_$DATE.tar.gz"

Архивирует всю директорию volumes/: БД, файловое хранилище, векторный стор. Бэкап только БД не восстановит файлы базы знаний.

# Настраиваем ежедневный бэкап в 2:00
crontab -e

# Добавляем строку:
0 2 * * * /bin/bash /home/backup_dify.sh >> /var/log/dify_backup.log 2&1

Первый AI-воркфлоу

02_ru

Самый полезный первый воркфлоу: RAG-чатбот, который отвечает по вашим документам, а не по своим обучающим данным. Так вы получаете генеративного AI-ассистента, который знает ваш продукт.

Создаём базу знаний

  • Перейдите в KnowledgeCreate Knowledge.
  • Загрузите документы: PDF, DOCX, TXT или Markdown.
  • Выберите модель эмбеддингов. OpenAI text-embedding-3-small подходит для большинства задач.
  • Дождитесь окончания индексации. Дашборд покажет количество чанков и статус.

Собираем чатфлоу

  • Перейдите в StudioCreate AppChatflow.
  • Добавьте ноду Knowledge Retrieval и подключите к базе знаний.
  • Добавьте ноду LLM после неё — здесь модель будет генерировать ответ.
  • Задайте системный промпт:

Dify Studio — Create from Blank

Dify Create from Blank — выбор типа Chatflow

Answer questions based ONLY on the context below.
If the answer is not in the context, say so.
Do not make things up.

Context: {{#context#}}
Question: {{#sys.query#}}

{{#context#}} автоматически заменяется на релевантные чанки из базы знаний. Ответы привязаны к вашим документам.

Публикация

  • Нажмите Publish. Dify выдаст встраиваемый чат-виджет и REST API эндпоинт.
  • Встройте виджет на сайт или вызывайте API из приложения.
  • Ваши документы теперь доступны для поиска всем, кому вы дадите доступ, и всё это работает на вашем VPS.

Редактор Chatflow в Dify с нодой LLM и опциями публикации

Dify Cloud vs селф-хостинг: цифры

Критерий

Dify Cloud (Professional)

Селф-хостинг на is*hosting

Стоимость

$59/мес ($49/мес при годовой оплате)

от $21.24/мес (годовая оплата)

Лимиты запусков

Квоты платформы

Без квот платформы

Кредиты сообщений

Ограничены планом

Нет системы кредитов

Ваши данные

На серверах Dify

На вашем VPS, в вашей юрисдикции

Локальные модели

Не поддерживаются

Поддерживаются, через Ollama

Маршрутизация API-ключей

Через платформу Dify

Напрямую к провайдеру

Кастомизация

Ограничена рамками SaaS

Полный доступ (open source)

SSL

Включён

Бесплатно через Let's Encrypt

Разница — $11-38/мес в зависимости от плана. Добавьте Ollama, и экономия растёт.

Но главный аргумент за селф-хостинг — резидентность данных. Dify — open-source LLMOps-платформа, и при селф-хостинге контроль у вас: клиентские данные, юридические документы и требования комплаенса остаются на вашем сервере, а не на серверах Dify.

VPS

VPS на KVM с NVMe-хранилищем в 40+ локациях. Полный root-доступ, выделенные ресурсы и до 256 IPv4-адресов на тариф.

Сравнить VPS

Решение проблем

С чем вы можете столкнуться при первом запуске Dify.AI на VPS:

Dify не запускается

Смотрим логи упавшего сервиса:

docker compose logs --tail=50 api

Две причины покрывают большинство случаев: RAM меньше 4 ГБ или конфликт портов.

Конфликт портов: failed to bind host port 0.0.0.0:80/tcp или 443/tcp: address already in use

Порты заняты системным веб-сервером или панелью управления (ispmanager, Hestia). Не останавливайте её, переключите порты Dify:

docker compose down
sed -i 's/EXPOSE_NGINX_PORT=80/EXPOSE_NGINX_PORT=8090/g' .env
sed -i 's/EXPOSE_NGINX_SSL_PORT=443/EXPOSE_NGINX_SSL_PORT=8443/g' .env
docker compose up -d

Теперь Dify на порту 8090. Проверяем: docker compose ps

Ошибка сети Ollama в Dify

Dify не может подключиться к Ollama. Две причины:

  • Ollama слушает только localhost — Docker-контейнеры до него не достучатся.
  • UFW блокирует порт 11434 — соединение не проходит.

Исправляем оба:

# Шаг 1 — открываем Ollama на все интерфейсы
mkdir -p /etc/systemd/system/ollama.service.d
echo '[Service]' > /etc/systemd/system/ollama.service.d/environment.conf
echo 'Environment="OLLAMA_HOST=0.0.0.0"' >> /etc/systemd/system/ollama.service.d/environment.conf
systemctl daemon-reload
systemctl restart ollama

# Шаг 2 — открываем порт только для Docker
ufw allow from 172.17.0.0/16 to any port 11434

Если Docker bridge IP (172.17.0.1) всё равно не работает в Dify, то используйте публичный IP сервера: http://YOUR_SERVER_IP:11434

Модели не подключаются

Проверяем исходящую связность с VPS и логи воркера:

curl -I https://api.openai.com

docker compose logs --tail=30 worker

Некоторые провайдеры блокируют исходящий трафик на определённые диапазоны IP. Если curl ничего не возвращает, проверьте файрвол и сетевые настройки VPS.

Медленная работа

Смотрим потребление ресурсов по контейнерам:

docker stats --no-stream

Стабильно высокое потребление памяти на контейнере API или worker — узкое место в RAM. Medium (4 ГБ) нормально тянет API-модели. Dify + Ollama — это 12-16 ГБ, территория плана Elite.

502 Bad Gateway

Nginx работает, но не может достучаться до Dify. Проверяем, что бэкенд запущен и прокси указывает на правильный порт:

# Смотрим, на каком порту Dify
docker compose ps

# Тестируем прямое подключение
curl -I http://127.0.0.1:8090

Если напрямую работает, а Nginx возвращает 502 — proxy_pass в конфиге Nginx указывает на неправильный порт. Сверьте его с выводом docker compose ps.

Что дальше?

Medium (4 ГБ RAM) спокойно тянет Dify.AI с API-моделями — стек занимает менее 3 ГБ. Для Ollama берите Premium (8 ГБ) под лёгкие модели (3B–4B) или Elite (16 ГБ) под 7B-13B.

Все планы включают KVM, NVMe-хранилище и 40+ локаций. Весь стартовый набор из этого гайда работает на любом из них — разница в том, сколько моделей запустите локально.

Начните с Premium для локальных AI-воркфлоу или сравните все VPS-планы.

{{ include_custom_fonts({"Whitney":["Bold","Bold Italic","Light","Light Italic","Medium","Medium Italic","Regular","Semi Bold","Semi Bold Italic"]}) }}
Выделенный сервер

На тот случай, если VPS недостаточно.

От $66.67/месяц