Dify
30 ошибок / No-code LLM платформа
Типичные проблемы при развёртывании и использовании Dify с решениями.
Docker и инфраструктура
FATAL: xcalloc: Unable to allocate 1073741816 blocks
Платформа: Docker
Причина: SSRF Proxy (Squid) не может запуститься из-за ошибки выделения памяти — некорректная конфигурация файловых дескрипторов.
FATAL: xcalloc: Unable to allocate 1073741816 blocks of 392 bytes!
Решение:
- Добавьте в
squid.confстроку:max_filedescriptors 1024 - Или удалите volume ssrf_proxy и пересоздайте контейнер:
docker compose down && docker volume rm docker_ssrf_proxy && docker compose up -d - Проверьте логи:
docker compose logs ssrf_proxy
Issue #4371
502 Bad Gateway / PluginDaemonInternalServerError
Платформа: Docker
Причина: Plugin daemon упал или не успел запуститься — плагины недоступны.
502 Bad Gateway PluginDaemonInternalServerError: Plugin daemon is not responding
Решение:
- Проверьте состояние daemon:
docker compose logs plugin_daemon - Перезапустите daemon:
docker compose restart plugin_daemon - Если не помогает — переустановите проблемные плагины через интерфейс Dify
- Убедитесь, что у контейнера достаточно памяти (минимум 512 MB)
Issues #21330, #20448
FATAL: no pg_hba.conf entry for host
Платформа: Docker
Причина: PostgreSQL не доверяет подсети Docker — соединение отклоняется.
FATAL: no pg_hba.conf entry for host "172.19.0.5", user "postgres", database "dify"
Решение:
- Добавьте разрешение для Docker-сети:
docker exec -it docker-db-1 sh -c "echo 'host all all 172.19.0.0/16 trust' >> /var/lib/postgresql/data/pgdata/pg_hba.conf"
- Перезапустите PostgreSQL:
docker compose restart db - Проверьте подключение:
docker compose logs api | grep -i "database"
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Платформа: Docker, Windows
Причина: Порт 80 уже занят другим процессом (IIS, Apache, другой nginx).
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Решение:
- Измените порт в файле
.env:EXPOSE_NGINX_PORT=8080 - Или найдите и остановите процесс на порту 80:
sudo lsof -i :80(Linux/macOS) /netstat -ano | findstr :80(Windows) - Перезапустите Dify:
docker compose down && docker compose up -d
Docker image pull timeout
Платформа: Docker
Причина: Docker Hub недоступен или ограничен из вашего региона (РФ, Китай).
error pulling image: Get "https://registry-1.docker.io/v2/": net/http: TLS handshake timeout
Решение:
- Добавьте зеркало Docker Hub в
/etc/docker/daemon.json:
{
"registry-mirrors": [
"https://mirror.gcr.io",
"https://dockerhub.timeweb.cloud"
]
} - Перезапустите Docker:
sudo systemctl restart docker - Повторите
docker compose pull
Авторизация и конфигурация
401 Unauthorized после смены домена
Платформа: Docker / Local
Причина: URL-переменные в .env не обновлены после смены домена или IP-адреса.
401 Unauthorized
{"code": "unauthorized", "message": "Invalid token"} Решение:
- Откройте
.envи обновите все URL-переменные:
CONSOLE_API_URL=https://your-new-domain.com CONSOLE_WEB_URL=https://your-new-domain.com APP_API_URL=https://your-new-domain.com APP_WEB_URL=https://your-new-domain.com
- Перезапустите все сервисы:
docker compose down && docker compose up -d - Очистите кеш браузера и cookies для старого домена
Database migration failed
Платформа: Docker
Причина: Пропущены промежуточные версии при обновлении Dify — миграции БД не могут применяться с пропусками.
alembic.util.exc.CommandError: Can't locate revision identified by 'abc123' Database migration failed
Решение:
- Восстановите БД из бэкапа (вы же сделали бэкап?)
- Обновляйте последовательно: 0.6 -> 0.7 -> 0.8 -> ... (не перескакивая)
- Перед каждым обновлением делайте бэкап:
docker exec docker-db-1 pg_dump -U postgres dify > backup_$(date +%Y%m%d).sql
Issue #8137
FileNotFoundError в rsa.py — потерян encryption key
Платформа: Docker
Причина: Ключи шифрования удалены или volume с ключами потерян.
FileNotFoundError: [Errno 2] No such file or directory: '/app/api/storage/privkeys/...' File "/app/api/libs/rsa.py", line 15
Решение:
- Сгенерируйте новую пару ключей:
docker exec -it docker-api-1 flask reset-encrypt-key-pair
- Перезапустите Dify:
docker compose restart - Заново введите все API-ключи моделей в настройках
- Для предотвращения — делайте бэкап volume
api_storage
Плагины
failed to install dependencies: signal: killed
Платформа: Docker
Причина: Недостаточно оперативной памяти для plugin daemon, или флаг noexec на volume блокирует выполнение.
failed to install dependencies: signal: killed plugin installation failed
Решение:
- Увеличьте memory limit для plugin_daemon в
docker-compose.yaml:
plugin_daemon:
deploy:
resources:
limits:
memory: 1024M - Проверьте, что volumes монтируются без
noexec:mount | grep noexec - Перезапустите:
docker compose up -d
Issue #29589
blocked by SSRF protection
Платформа: Docker
Причина: Встроенный SSRF-прокси (Squid) блокирует внешние запросы от плагинов и инструментов.
requests.exceptions.ConnectionError: blocked by SSRF protection Access denied by security policy
Решение:
- Отредактируйте
squid.conf— добавьте разрешённые домены:
acl allowed_sites dstdomain .openai.com .anthropic.com .googleapis.com http_access allow allowed_sites
- Или отключите SSRF-прокси в
.env:SSRF_PROXY_HTTP_URL=иSSRF_PROXY_HTTPS_URL= - Перезапустите:
docker compose restart ssrf_proxy api
Issues #31377, #25801
Knowledge Base (RAG)
text embedding error due to Requests rate limit exceeded
Платформа: Docker / Cloud
Причина: Массовая загрузка документов превышает rate limit API провайдера embedding-модели.
text embedding error due to Requests rate limit exceeded RateLimitError: Rate limit reached for text-embedding-3-small
Решение:
- Загружайте документы порциями по 5-10 файлов с паузой между партиями
- Или переключитесь на локальную embedding-модель (Ollama, Xinference) — без rate limit
- Повысьте лимит API у провайдера (OpenAI Tier upgrade)
Issue #3936
Failed to invoke text embedding после смены модели
Платформа: Docker / Cloud
Причина: Размерность векторов новой embedding-модели не совпадает с размерностью в существующей базе знаний.
Failed to invoke text embedding model ValueError: expected 1536 dimensions, got 768
Решение:
- Переиндексируйте все базы знаний: удалите и загрузите документы заново
- Или создайте новую базу знаний с новой моделью и перенесите документы
- Нельзя смешивать модели с разной размерностью в одной базе
Issue #19866
413 Request Entity Too Large
Платформа: Docker
Причина: Размер загружаемого файла превышает лимит nginx или Dify.
413 Request Entity Too Large nginx/1.25.3
Решение:
- Увеличьте лимиты в файле
.env:
UPLOAD_FILE_SIZE_LIMIT=50 NGINX_CLIENT_MAX_BODY_SIZE=50M
- Перезапустите nginx и API:
docker compose restart nginx api - Если за внешним nginx — увеличьте
client_max_body_sizeи там
Workflow и использование
Workflow останавливается после ~1200 секунд
Платформа: Docker / Cloud
Причина: Таймаут выполнения workflow по умолчанию — 1200 секунд (20 минут).
Workflow execution timeout after 1200 seconds Task was cancelled due to timeout
Решение:
- Увеличьте таймаут в
.env:WORKFLOW_MAX_EXECUTION_TIME=3600 - Перезапустите API и worker:
docker compose restart api worker - Для длительных задач рассмотрите разбиение workflow на этапы
Issue #15007
Failed to execute code: No route to host (Sandbox)
Платформа: Docker
Причина: Контейнер sandbox изолирован от сети и не может подключиться к нужным сервисам.
Failed to execute code: No route to host OSError: [Errno 113] No route to host
Решение:
- Проверьте, что sandbox подключён к
ssrf_proxy_network:
docker network inspect ssrf_proxy_network | grep sandbox
- Если sandbox не в сети — добавьте в
docker-compose.yamlсекцию networks для sandbox - Перезапустите:
docker compose down && docker compose up -d
Issues #5887, #12604
Установка для новичков
Docker Compose: .env file not found
Платформа: Docker
Причина: Файл .env не создан — Docker Compose не может запуститься без переменных окружения.
WARNING: The .env file is missing ERROR: Missing required configuration
Решение:
- Скопируйте файл-шаблон:
cp .env.example .env - Откройте
.envи заполните обязательные переменные (SECRET_KEY, DB пароли) - Сгенерируйте SECRET_KEY:
openssl rand -base64 42 - Запустите:
docker compose up -d
Dify Cloud vs Self-hosted — что выбрать
Платформа: Все
Причина: Непонимание различий между облачной и локальной версией приводит к ошибочным ожиданиям.
Когда Cloud (cloud.dify.ai):
- Быстрый старт без DevOps — всё работает из коробки
- Бесплатный Sandbox: 200 вызовов GPT-4 для тестов
- Нет нужды обслуживать сервер, базу, бэкапы
Когда Self-hosted:
- Данные не уходят на сторонние серверы (compliance, NDA)
- Нужны SSO/LDAP, кастомные интеграции (Enterprise Edition)
- Высокие объёмы — дешевле платить за сервер, чем за кредиты
Российские модели
Подключение YandexGPT — модель не появляется
Платформа: Docker / Cloud
Причина: YandexGPT не входит в стандартные провайдеры Dify — нужна ручная интеграция через OpenAI-совместимый API или плагин.
Model provider "yandexgpt" not found
Решение:
- Используйте YandexGPT через OpenAI-совместимый эндпоинт (Yandex Foundation Models API)
- В настройках Dify добавьте провайдер «OpenAI-API-compatible»
- Укажите Base URL:
https://llm.api.cloud.yandex.net/foundationModels/v1 - API Key — IAM-токен (временный, обновлять каждые 12 часов) или API-ключ сервисного аккаунта
- Model name:
yandexgpt-liteилиyandexgpt(с указанием folder_id)
GigaChat: ошибка авторизации или устаревшая модель
Платформа: Docker / Cloud
Причина: GigaChat использует нестандартную OAuth-авторизацию, а модели первого поколения (GigaChat, GigaChat-Plus, GigaChat-Pro) устарели.
401 Unauthorized: invalid credentials Model "GigaChat-Pro" is deprecated, use "GigaChat-2-Pro"
Решение:
- Установите плагин GigaChat из Dify Marketplace: marketplace.dify.ai
- Получите Client ID и Client Secret в developers.sber.ru
- Используйте модели второго поколения: GigaChat-2, GigaChat-2-Max
- Если плагин не работает — проверьте, что SSRF-прокси не блокирует
gigachat.devices.sberbank.ru
Knowledge Base (расширенное)
Knowledge Base даёт нерелевантные ответы
Платформа: Docker / Cloud
Причина: Стандартная конфигурация RAG плохо работает с широкими вопросами — чанки не попадают в контекст или содержат фрагменты без смысла.
Решение:
- Переключитесь на Hybrid Search (векторный + полнотекстовый) в настройках базы знаний
- Увеличьте Top K с 3 до 5-8, Score Threshold снизьте до 0.5
- Уменьшите размер чанка до 300-500 символов с перекрытием 50-100
- Добавьте метаданные к документам (тема, категория) для фильтрации
- Для структурированных данных используйте режим Q&A вместо обычного
Ошибка загрузки документов: кодировка и форматы
Платформа: Docker / Cloud
Причина: Файлы в неправильной кодировке (не UTF-8), битые PDF, или превышен лимит размера.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 upload document embedding error
Решение:
- CSV-файлы сохраняйте в кодировке UTF-8 (в Excel: «Сохранить как» → «CSV UTF-8»)
- PDF с отсканированным текстом — предварительно пропустите через OCR
- Поддерживаемые форматы: TXT, MD, PDF, HTML, XLSX, DOCX, CSV, PPTX, XML, EPUB
- Максимальный размер файла по умолчанию — 15 MB (настраивается в
.env) - Загружайте не более 10 файлов за раз, чтобы не упереться в rate limit embedding-модели
Workflow (расширенное)
Типичные ошибки логики в Workflow
Платформа: Docker / Cloud
Причина: Неправильная передача данных между нодами, пустые промпты, несовместимые типы данных.
LLM node error: prompt is empty ValueError: context only supports string, got array[object] Code node error: variable 'result' is not defined
Топ-5 ошибок новичков:
- Пустой промпт — забыли подставить переменные в шаблон LLM-ноды
- Неверный тип данных — контекст Knowledge Base (array) передан напрямую в LLM (нужен string). Используйте Template-ноду для форматирования
- Нет Variable Aggregator — ветки IF/ELSE сходятся без объединения переменных
- Код без обработки ошибок — Code-нода падает на неожиданном вводе. Добавьте Fail Branch
- HTTP-нода с неверным методом — допустимы только GET, POST, PUT, PATCH, DELETE, HEAD
Custom Tool: invalid schema / requestBody not working
Платформа: Docker / Cloud
Причина: OpenAPI-схема кастомного инструмента содержит неподдерживаемые конструкции (вложенные объекты, массивы в body).
invalid schema: cannot access local variable 'parameter' ToolParameter object has no attribute 'get'
Решение:
- Используйте плоские параметры — Dify не поддерживает вложенные объекты в OpenAPI
- Замените
requestBodyс JSON на query-параметры, если возможно - Массивы в JSON body не распознаются — передавайте как строку и парсите на стороне сервера
- Проверьте схему валидатором: editor.swagger.io
- Убедитесь, что все required-поля указаны и типы совпадают (string, integer, boolean)
Issues #3796, #12456, #11021
Мультимодальность и память
Vision-модель не видит изображения / зависает
Платформа: Docker / Cloud
Причина: Модель не распознана как мультимодальная, или большое изображение вызывает 100% CPU.
Input [TextPromptMessageContent, ImagePromptMessageContent] is not valid Upload large file to vision model: stuck at 100% CPU
Решение:
- Убедитесь, что модель поддерживает Vision (GPT-4o, Claude Sonnet, Gemini Pro Vision)
- Включите «Vision» в настройках модели — для Ollama-моделей это может быть отключено по умолчанию
- Сжимайте изображения до 1-2 MB перед загрузкой (макс. разрешение ~2048x2048)
- В Workflow используйте List Operator для фильтрации — в LLM-ноду передавайте только изображения
- Обновите плагин провайдера до последней версии через Dify Marketplace
Issues #19052, #8777
Чат-бот забывает контекст разговора
Платформа: Docker / Cloud
Причина: LLM по умолчанию не имеет памяти — каждое сообщение обрабатывается независимо, если не настроена память.
Бот повторяет вопросы, забывает имя пользователя, теряет нить беседы
Решение:
- Включите Memory в LLM/Agent ноде → установите Window Size (5-20 сообщений)
- Используйте Conversation Variables для хранения ключевой информации между раундами
- При вызове через API передавайте
conversation_idдля продолжения диалога - Лимиты памяти: максимум 2000 токенов или 500 сообщений (жёсткое ограничение Dify)
- Для долгих диалогов — используйте Variable Assigner для сохранения саммари в переменную
API и интеграции
429 Too Many Requests — rate limit при параллельных запросах
Платформа: Docker / Cloud
Причина: Параллельные запросы превышают лимит провайдера модели (OpenAI, Azure, Anthropic).
429 Too Many Requests RateLimitError: Rate limit reached for gpt-4 in organization
Решение:
- Ограничьте параллельность: не более 3-5 одновременных запросов к одной модели
- Добавьте exponential backoff на клиенте: повтор через 1с → 2с → 4с → 8с
- Повысьте Tier у провайдера (OpenAI: Usage Tier → Tier 2+)
- Используйте Load Balancing — добавьте несколько API-ключей одного провайдера в Dify
- Для Azure OpenAI: проверьте TPM (Tokens Per Minute) лимит в Azure Portal
Issues #19355, Discussion #3493
API 401 Unauthorized: неверный тип ключа
Платформа: Docker / Cloud
Причина: Использован неправильный тип API-ключа (app vs dataset) или ключ от другого приложения.
{"code": "unauthorized", "message": "Invalid token"}
401 Unauthorized: Access token is invalid Решение:
- Ключи для приложений (Chat/Completion) начинаются с
app- - Ключи для Knowledge Base API начинаются с
dataset- - Убедитесь, что ключ от нужного приложения: Settings → API Access
- Заголовок:
Authorization: Bearer app-xxxxxxxx(не забудьте «Bearer») - Проверьте, что Base URL соответствует вашей инсталляции (не перепутали cloud/self-hosted)
Обновление и бэкапы
Обновление 0.x → 1.x: плагины не работают
Платформа: Docker
Причина: Dify 1.0 перешёл на плагинную архитектуру — встроенные инструменты и провайдеры моделей стали плагинами, требуется миграция.
Plugin "openai" not found PluginDaemonInternalServerError: null uniqueIdentifier Workflows broken after upgrade to 1.x
Решение:
- Перед обновлением — полный бэкап:
docker exec docker-db-1 pg_dump -U postgres dify > backup_pre_v1.sql - Выполните миграцию плагинов в контейнере API:
docker exec -it docker-api-1 flask extract-plugins docker exec -it docker-api-1 flask install-plugins docker exec -it docker-api-1 flask migrate-plugin-data
- Проверьте раздел «Plugins» в интерфейсе — все инструменты должны появиться
- Протестируйте каждый workflow — имена провайдеров изменились на формат
langgenius/provider/provider
Бэкап и восстановление данных Dify
Платформа: Docker
Причина: После переустановки или миграции данные потеряны — volumes не были сохранены.
Пустой интерфейс после миграции — приложения и базы знаний исчезли
Что бэкапить:
- Базу данных:
docker exec docker-db-1 pg_dump -U postgres dify > dify_backup.sql - Файловое хранилище:
tar -czf storage_backup.tar.gz ./docker/volumes/app/storage/ - Ключи шифрования:
./docker/volumes/app/storage/privkeys/(без них API-ключи потеряны) - Файл
.envс конфигурацией
Восстановление:
- Разверните чистый Dify той же версии
- Восстановите БД:
cat dify_backup.sql | docker exec -i docker-db-1 psql -U postgres dify - Восстановите storage и privkeys на прежние места
- Перезапустите:
docker compose restart
SSO/LDAP: не работает в Community Edition
Платформа: Docker (Community)
Причина: SSO и LDAP — функции Enterprise Edition. Community Edition поддерживает только email-авторизацию.
SSO configuration not available LDAP: feature not supported in community edition
Варианты решения:
- Enterprise Edition — свяжитесь с
business@dify.aiдля получения лицензии - Обходной путь — настройте nginx с LDAP-модулем перед Dify (Basic Auth)
- Dify Cloud Team/Enterprise — SSO включён в тарифы Team ($199/мес) и Enterprise
Issues #3074, #6481, #20331
Полезные ссылки
- Модуль 1.4 — Dify — подробный курс по работе с платформой
- Официальная документация Dify
- GitHub Issues — баг-трекер проекта
// Обсуждение
Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.