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

SSH остаётся открытым, наружу только HTTP/HTTPS. Всё остальное заблокировано.
Если Docker не установлен:
curl -fsSL https://get.docker.com | sh
docker compose version

Вторая команда проверяет наличие 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

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

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

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

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


Шаг 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


Модель скачивается в /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

Bridge IP держит трафик внутри хоста. Если не работает, используйте http://YOUR_SERVER_IP:11434.
В Dify: Settings → Model Provider, найдите Ollama, нажмите 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

Нажмите Save. Рядом с Ollama появится зелёный бейдж Active — значит подключение работает.
Если бейдж не появился, проверьте, что выполнены оба шага: systemd override и ufw allow from 172.17.0.0/16 to any port 11434 Повторите Save.
Настройка для продакшена

Инстанс на порту 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-воркфлоу

Самый полезный первый воркфлоу: RAG-чатбот, который отвечает по вашим документам, а не по своим обучающим данным. Так вы получаете генеративного AI-ассистента, который знает ваш продукт.
Создаём базу знаний
- Перейдите в Knowledge → Create Knowledge.
- Загрузите документы: PDF, DOCX, TXT или Markdown.
- Выберите модель эмбеддингов. OpenAI text-embedding-3-small подходит для большинства задач.
- Дождитесь окончания индексации. Дашборд покажет количество чанков и статус.
Собираем чатфлоу
- Перейдите в Studio → Create App → Chatflow.
- Добавьте ноду Knowledge Retrieval и подключите к базе знаний.
- Добавьте ноду LLM после неё — здесь модель будет генерировать ответ.
- Задайте системный промпт:


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.

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-адресов на тариф.
Решение проблем
С чем вы можете столкнуться при первом запуске 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"]}) }}