Как установить Dify на VPS через Docker Compose
Разверните Dify с помощью Docker Compose. Требуется минимум 4 GB RAM для шести контейнеров. Обязательно настройте .env и создайте админа на /install.
Что такое Dify и к чему вы готовитесь при развертывании
Dify — это платформа для самостоятельного хостинга, предназначенная для создания приложений на базе больших языковых моделей. Вы получаете веб-интерфейс для проектирования чат-приложений, агентов и конвейеров извлечения данных, API для вызова из собственного кода, а также единое место для управления промптами, наборами данных и ключами моделей. Это инструмент, который небольшие команды развертывают для создания единой общей приватной базы, чтобы не распределять API-ключи по разным скриптам.
Самостоятельный запуск означает работу нескольких компонентов. Dify поставляется в виде набора Docker-контейнеров: API-сервера, фонового воркера, веб-фронтенда, базы данных Postgres, кэша Redis и векторной базы данных; все они связаны через Docker Compose. Это сложнее, чем один бинарный файл, но Compose берет на себя настройку связей, а VPS с парой гигабайт свободной оперативной памяти обеспечит стабильную работу.
Поскольку Dify хранит ваши API-ключи моделей и часто содержит приватные документы, загруженные для извлечения, относитесь к серверу как к критически важному объекту с первой минуты. Данное руководство описывает процесс установки и последующего укрепления защиты (hardening) так же, как это делается для любого сервиса, хранящего секретные данные.
Предварительные условия
Вам необходим VPS под управлением Ubuntu 24.04 с установленными Docker и плагином Docker Compose, а также пользователь с правами sudo или членством в группе docker. Если вы впервые работаете с Docker, основы Docker Compose на VPS объясняют процесс установки и основные команды, которые подразумеваются в данном руководстве. Рекомендуется иметь доменное имя, направленное на сервер, так как вам потребуется TLS перед Dify вместо использования голого IP-адреса.
Шаг 1: Получение Dify и файлов Compose
Dify хранит свою Docker-конфигурацию в основном репозитории. Клонируйте его и перейдите в директорию docker:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envФайл .env содержит всю конфигурацию. Изучите его перед началом работы. Первоочередное значение имеют параметры для установки паролей и секретов: SECRET_KEY, пароль Postgres и пароль Redis. В примере содержатся значения-заглушки; использование этих значений в исходном виде — самая частая причина компрометации self-hosted инстансов Dify. Сгенерируйте настоящий секретный ключ:
openssl rand -base64 42Вставьте его в SECRET_KEY и установите надежные уникальные значения для каждого поля пароля в файле.
Шаг 2: Запуск
Запустите стек:
docker compose up -dПри первом запуске загружаются несколько образов и инициализируется база данных, поэтому подождите минуту. Проверьте состояние контейнеров:
docker compose psКаждый сервис должен отвечать на запросы по running. По умолчанию Dify предоставляет веб-интерфейс через встроенный контейнер nginx на порту 80. При первом посещении http://YOUR_SERVER/install создайте учетную запись администратора. Сделайте это немедленно, прежде чем другие сервисы получат доступ к порту, так как пока эта учетная запись не создана, любой пользователь, открывший страницу, сможет захватить контроль над вашим инстансом.
Шаг 3: Не открывайте доступ напрямую. Используйте TLS и брандмауэр
Именно на этом этапе большинство быстрых установок заканчиваются и начинаются инциденты безопасности. Встроенный nginx в Dify слушает порт 80 без шифрования на всех интерфейсах. Вам не нужно, чтобы логин администратора и ключи моделей передавались по обычному HTTP, и вам не нужно, чтобы внутренние сервисы были доступны извне.
Защитите сервер с помощью брандмауэра с политикой «запрещено всё, что не разрешено», оставив доступ только для SSH и веб-трафика:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableПомните, что брандмауэр, настроенный только для IPv4, может оставлять те же порты открытыми в IPv6; это уязвимость IPv6 firewall gap, на которой попадаются многие пользователи self-hosted решений. Убедитесь, что оба стека фильтруются.
Для настройки TLS оптимальный путь — привязать веб-порт Dify к loopback-интерфейсу и запустить reverse proxy с сертификатом Let's Encrypt перед ним. Таким образом, в публичном интернете будет доступен только прокси, работающий по HTTPS. Параметр .env в Dify позволяет изменить открытый порт; установите привязку к 127.0.0.1 и направьте ваш прокси на этот порт. Идеи по защите агентов из безопасный запуск AI-агента на VPS также применимы здесь: держите рабочие компоненты на loopback, открывайте только необходимое для публичного доступа и используйте один защищенный вход с поддержкой TLS.
Шаг 4: Установка обновлений
Dify быстро развивается, и обновления включают исправления безопасности. Обновление выполняется путем загрузки новых образов и перезапуска из директории docker:
git pull
docker compose pull
docker compose up -dПеред переходом на новую мажорную версию читайте примечания к релизу (release notes), так как Dify иногда меняет схему .env между версиями, и новая переменная, которую вы не установили, может помешать запуску контейнера.
Шаг 5: Резервное копирование данных, которые нельзя восстановить
На сервере Dify есть две незаменимые вещи: база данных Postgres, в которой хранятся ваши приложения, пользователи и настройки, и volume, в котором хранятся загруженные документы и векторный индекс. Оба они находятся в Docker volumes в директории docker. Создавайте снимки (snapshots) по расписанию и копируйте их на другой сервер. API-ключ модели можно перевыпустить, но приложение, на создание которого вы потратили неделю, — нет.
Для создания более автономных агентов, исполняющих код, см. self-hosting Agent Zero. Статья building your own AI agent on a VPS описывает основы, лежащие в основе всех подобных систем.
FAQ
Каковы системные требования для самостоятельного хостинга Dify?
Dify работает как стек Docker Compose, состоящий примерно из полудюжины контейнеров. Планируйте использование VPS минимум с 2 ГБ свободной оперативной памяти (в идеале 4 ГБ), а также с парой ядер CPU и достаточным объемом диска для загружаемых документов и векторного индекса. Основная нагрузка на память ложится на базу данных и векторное хранилище, а не на сам Dify.
Безопасно ли открывать доступ к Dify напрямую через порт 80?
Нет. Встроенный веб-сервер Dify работает по обычному HTTP, через него проходят ваш логин администратора и API-ключи моделей. Используйте reverse proxy с сертификатом Let's Encrypt, привяжите порт Dify к loopback-интерфейсу и оставьте в открытом доступе только HTTPS-прокси. Сочетайте это с брандмауэром с политикой «запрещено всё, что не разрешено» для IPv4 и IPv6.
Как обновить self-hosted Dify?
Из директории docker выполните git pull, затем docker compose pull и docker compose up -d для загрузки новых образов и перезапуска. Сначала прочитайте примечания к релизу, так как Dify иногда добавляет новые переменные .env между версиями, и отсутствие одной из них может остановить запуск контейнера.
Что нужно сделать в первую очередь после установки Dify?
Немедленно перейдите по адресу /install и создайте учетную запись администратора. Пока эта запись не создана, любой, кто имеет доступ к странице, может захватить контроль над системой. Настройте учетную запись сразу после того, как контейнеры перейдут в состояние healthy, и до того, как вы откроете доступ к брандмауэру для внешнего мира.