- Dify는 통합 RAG 엔진을 갖춘 LLM 기반 애플리케이션을 생성하도록 설계된 오픈 소스 플랫폼입니다.
- Docker Compose를 이용한 배포는 여러 마이크로서비스와 데이터베이스를 관리하는 데 권장되는 방법입니다.
- 이 플랫폼은 OpenAI, Anthropic 등 다양한 모델 제공업체와의 유연한 통합을 지원하며, Ollama를 통한 로컬 실행도 가능합니다.
- 이 제품에는 고급 워크플로 오케스트레이션 도구, 프롬프트 관리 및 강력한 개발자 API가 포함되어 있습니다.
인공지능 애플리케이션을 처음부터 전체 인프라를 직접 프로그래밍하지 않고 개발하고 싶다면, Dify는 자체 서버에 설치할 수 있는 가장 포괄적인 플랫폼 중 하나입니다. 직관적인 인터페이스를 통해 웹 브라우저를 벗어나지 않고도 챗봇, 에이전트, 워크플로우, 증강 현실 시스템을 구축할 수 있습니다.
Dify는 여러 기능을 결합합니다. 서비스형 백엔드(BaaS), 모델 관리 및 LLMOps이를 통해 단일 환경에서 애플리케이션을 설계하고, 인공지능 제공업체를 연결하고, 문서를 업로드하고, 기록을 검토하고, API를 게시할 수 있습니다.
커뮤니티 에디션은 Docker Compose를 사용하여 자체 호스팅할 수 있습니다. 이렇게 하면 프로젝트, 구성 및 파일이 사용자가 제어하는 인프라에 저장됩니다. 하지만 Dify를 자체 호스팅하는 것은 불가능합니다. 이는 모든 데이터가 자동으로 로컬에 저장된다는 의미는 아닙니다.외부 모델이나 도구를 연결하는 경우, 요청을 보내는 데 필요한 정보가 해당 서비스로 전송됩니다.
Docker를 사용하여 Dify를 설치하기 위한 요구 사항

시작하기 전에 Docker에 충분한 리소스가 있는지 확인해야 합니다. Dify는 API, 태스크 워커, 프런트엔드, PostgreSQL, Redis, Nginx, 샌드박스 및 선택한 벡터 데이터베이스를 포함한 여러 서비스를 동시에 실행합니다.
Windows 또는 macOS에 Docker Desktop을 설치하려면 공식 문서에서 최소한 다음 용량을 할당할 것을 권장합니다.
- 가상 CPU 두 개.
- 8GiB의 RAM.
- Docker Compose 2.24.0 이상 버전.
Linux 환경에서는 Docker 19.03 이상 및 Docker Compose 2.24.0 이상이 필요합니다. 다른 배포 방식에 따라 최소 요구 사항이 다를 수 있지만, 대용량 문서를 처리하거나 여러 요청을 동시에 처리할 계획이라면 더 많은 메모리를 확보하는 것이 좋습니다.
또한 다음이 필요합니다. Git, curl, 그리고 jq GitHub API를 쿼리하여 최신 안정 버전을 자동으로 복제하는 공식 명령어를 사용하려면 저장된 문서, 로그, 이미지 및 데이터베이스의 양에 따라 필요한 디스크 공간이 달라집니다. 또한 로컬 모델을 실행하는 경우 해당 파일들을 위한 추가 공간을 확보해야 합니다.
Windows에서는 Dify를 다음 명령어를 사용하여 배포해야 합니다. WSL 2를 사용한 Docker Desktop권한 문제를 방지하고 더욱 안정적인 성능을 얻으려면 코드와 데이터를 리눅스 파일 시스템 내에 저장하는 것이 좋습니다.
Dify 다운로드 및 배포 방법

Dify의 최신 안정 버전을 자동으로 다운로드하려면 터미널을 열고 다음 명령을 실행하세요.
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
다음으로 Docker 구성 파일이 있는 디렉토리로 이동합니다.
cd dify/docker
샘플 변수 파일을 복사하여 로컬 구성을 생성하세요.
cp .env.example .env
Windows PowerShell에서는 다음과 같은 명령어를 사용할 수 있습니다.
Copy-Item .env.example .env
기본 설치는 모든 변수를 수정하지 않고 시작할 수 있습니다. 그러나 Dify를 온라인에 공개하기 전에 설정을 검토하는 것이 필수적입니다. 비밀번호, 내부 키, 공용 주소 및 프록시 설정.
컨테이너를 시작하려면 다음 명령을 실행하세요.
docker compose up -d
Docker가 필요한 모든 이미지를 다운로드해야 하므로 초기 설정에는 몇 분 정도 소요될 수 있습니다. 다음 명령어를 사용하여 서비스 상태를 확인할 수 있습니다.
docker compose ps
컨테이너가 중지되거나 시작되지 않으면 다음 명령으로 해당 컨테이너의 로그를 확인하십시오.
docker compose logs
출력을 특정 서비스로 제한할 수도 있습니다.
docker compose logs api docker compose logs worker docker compose logs nginx
배포가 완료되면 브라우저에서 열어보세요.
http://localhost/install
이 페이지에서 초기 관리자 계정을 생성할 수 있습니다. 초기 등록 후에는 메인 설치 주소를 통해 정상적으로 접속할 수 있습니다.
환경 변수를 설정하는 방법
El 보관소 .env 이 파일에는 배포에 사용되는 필수 변수들이 포함되어 있습니다. 이 파일에서 다음을 수행할 수 있습니다... 내부 키, PostgreSQL, Redis, 스토리지, 공개 도메인, 이메일 및 기타 구성 요소를 조정합니다..
고급 및 공급업체별 구성은 디렉터리 내의 샘플 파일에서 확인할 수 있습니다. docker/envs/필요한 부분만 복사하고 활성화하면 되므로, 메인 파일에 불필요한 변수를 추가하지 않도록 주의해야 합니다.
Dify는 관계형 데이터베이스로 PostgreSQL을 사용하고, 캐싱 및 작업 큐에는 Redis를 사용합니다. Docker Compose에 포함된 서비스를 사용하거나, 주소와 자격 증명을 올바르게 구성하면 외부 서버에 연결할 수 있습니다.
변수를 사용하여 벡터 데이터베이스를 선택하는 것도 가능합니다.
VECTOR_STORE=weaviate
이 프로젝트는 Weaviate, Qdrant, Milvus, pgvector 등 다양한 대안을 지원하며, 디렉토리에 나열된 다른 옵션들도 이용할 수 있습니다. envs/vectorstores/.
이 선택은 문서 색인 작업을 시작하기 전에 이루어져야 합니다. 데이터 세트가 이미 존재하는 경우, 단순히 변수를 변경하고 컨테이너를 재시작해서는 안 됩니다.이전 시스템에 저장된 벡터는 자동으로 전송되지 않습니다. 벡터를 보존하려면 해당 마이그레이션 절차를 따라야 합니다.
서비스 제공업체와 인공지능 모델을 연결하는 방법
Dify에는 요청에 응답할 수 있는 기본 모델이 포함되어 있지 않습니다. 관리자 계정을 생성한 후에는 최소 하나 이상의 공급자를 설치하고 구성해야 합니다.
해당 섹션에 액세스하세요 마켓플레이스 또는 모델 제공업체해당 통합 기능을 설치하고 요청된 자격 증명을 추가하세요. 제공업체에 따라 언어 모델, 이미지 생성, 재순위 지정, 음성 또는 임베딩을 구성할 수 있습니다.
둘을 구분하는 것이 중요합니다. 채팅 모델은 사용자에게 응답할 수 있는 반면, 임베딩 모델은 문서를 벡터로 변환합니다. 지식 기반을 구축하기 위해서입니다. RAG를 사용하려면 선택한 공급업체가 모든 기능을 제공하지 않는 경우 두 가지 유형 모두를 구성해야 합니다.
입력한 자격 증명은 워크스페이스에 적용되며, 요청 시 제공업체의 약관에 따라 요금이 부과됩니다. 관리자 패널 접근을 제한하고 외부 계정의 사용량을 제한하는 것이 좋습니다.
Dify와 Ollama를 연결하는 방법

Ollama를 사용하면 특정 모델을 자신의 컴퓨터나 서버에서 실행할 수 있습니다. 파일에 추가하는 것은 필수 사항이 아닙니다. docker-compose.yaml Dify를 사용하면 호스트 시스템에 설치하고 네트워크를 통해 두 서비스를 연결할 수 있습니다.
먼저 Ollama를 설치하고 사용하려는 템플릿을 다운로드하세요. 예를 들면 다음과 같습니다.
ollama pull llama3.1
다음으로, Dify 마켓플레이스에서 Ollama 공급자를 설치하고 모델 이름과 서버 주소를 구성합니다.
올바른 URL은 Ollama가 실행되는 위치에 따라 다릅니다.
- Dify와 Ollama가 동일한 Docker 네트워크에 있는 경우 다음을 사용할 수 있습니다. 서비스 이름, 처럼
http://ollama:11434. - Docker Desktop을 사용하면 일상적으로 사용할 수 있습니다.
http://host.docker.internal:11434. - Linux 환경에서는 Docker 브리지 주소를 사용하거나 호스트에 대한 접근 권한을 명시적으로 구성해야 할 수 있습니다.
출입 금지 http://localhost:11434 Dify에서 Ollama가 컨테이너 외부에서 실행되는 경우, 컨테이너 내부에서는 다음과 같습니다. localhost 이는 호스트 시스템이 아닌 컨테이너 자체를 가리킵니다.
또한 Ollama가 Docker에서 접근 가능한 인터페이스에서 수신 대기 중인지 확인해야 합니다. 만약 제한되어 있다면... 127.0.0.1Dify가 연결을 설정하지 못할 수 있습니다. 인증, 적절한 프록시 및 네트워크 규칙 없이 포트 11434를 인터넷에 직접 노출하지 마십시오.
성능은 모델, 양자화 방식 및 사용 가능한 리소스에 따라 달라집니다. Dify는 제한된 리소스에서도 실행될 수 있지만, 로컬 모델을 실행하려면 추가 RAM 또는 VRAM이 필요합니다. 이는 플랫폼의 기본 요구 사항에 포함되지 않습니다.
Dify에서 지식 기반을 만드는 방법
템플릿 설정이 완료되면 지식 기반을 생성하고 PDF, Markdown, TXT 또는 DOCX 파일과 같은 문서를 업로드할 수 있습니다. Dify는 콘텐츠를 추출하고, 조각으로 분할한 다음, 선택한 임베딩 템플릿을 사용하여 벡터 표현을 생성합니다.
이 과정에서 다음과 같은 사항들을 결정해야 합니다.
- 인덱싱 방법.
- 조각들의 크기와 겹치는 부분.
- 임베딩 모델.
- 회복 전략.
- 검색된 결과의 수.
- 재순위 모델의 사용.
모든 문서에 적합한 완벽한 조각 크기는 없습니다.조각이 너무 작으면 맥락을 잃을 수 있고, 지나치게 크면 더 많은 토큰을 소비하고 관련 없는 정보를 포함할 수 있습니다.
콘텐츠 색인을 생성한 후에는 지식 기반을 챗봇, 에이전트 또는 워크플로에 연결할 수 있습니다. 또한 웹 인터페이스를 통해 애플리케이션을 게시하거나 [메서드 이름 누락]을 사용하여 다른 프로그램에서 액세스할 수도 있습니다. Dify에서 제공하는 API.
데이터 손실 없이 Dify를 업데이트하는 방법
자체 호스팅 설치를 업데이트하는 것은 단순히 새 이미지를 다운로드하는 것 이상의 작업입니다. 시작하기 전에 릴리스 노트를 참조하십시오. 일부 업데이트에는 데이터베이스 마이그레이션이나 구성 변경 사항이 포함될 수 있습니다.
최소한 다음 사항은 보관해야 합니다.
- 파일
docker/.env. - 선택적으로 생성되는 파일들
docker/envs/. - 전체 디렉토리
docker/volumes.
volumes 디렉터리에는 Docker Compose 배포의 영구 데이터가 저장됩니다. 또한 설명서에서는 업그레이드하기 전에 Dify 디렉터리의 전체 복사본을 날짜별로 생성하는 것을 권장합니다.
cp -r dify "dify.bak.$(date +%Y%m%d%H%M%S)"
다음으로, 저장소에서 원하는 버전을 다운로드하고, 샘플 파일의 변경 사항을 검토하고, 사용자 지정 변수를 저장한 다음, 해당 버전에 특화된 지침을 따르십시오. 마지막으로 이미지를 다운로드하고 서비스를 다시 시작하십시오.
docker compose pull docker compose up -d
업데이트가 완료되면 다음 도구를 사용하여 상태를 확인하세요. docker compose ps 오류가 발생한 컨테이너의 기록을 검토하십시오.
PostgreSQL 내보내기 파일을 단순히 복사하는 것만으로는 충분하지 않을 수 있습니다. Dify는 파일, 벡터 데이터베이스 데이터 및 영구 구성도 저장합니다. 따라서 Docker Compose 배포 환경에서는 전체 볼륨 디렉토리를 복사하는 것이 가장 안전한 방법입니다..
Dify를 실제 운영 환경에서 사용하기 위한 권장 사항
로컬 주소는 테스트에는 적합하지만, 서비스를 인터넷에 직접 게시하는 데는 적합하지 않습니다. 실제 운영 환경에서는 도메인, HTTPS, 강력한 비밀번호, 정기적인 백업, 그리고 접근 가능한 포트를 제한하는 네트워크 규칙을 구성해야 합니다.
또한 코드가 실행되는 격리된 환경의 권한을 검토하고, 이미지를 정기적으로 업데이트하며, PostgreSQL, Redis 및 벡터 데이터베이스에 대한 접근을 제한하는 것이 좋습니다. 이러한 서비스는 공개적으로 노출되어서는 안 됩니다.
자체 호스팅은 파일과 인프라에 대한 더 큰 제어권을 제공하지만, 궁극적인 개인정보 보호는 연결된 모든 구성 요소에 달려 있습니다. OpenAI, Anthropic, Google 또는 다른 원격 제공업체를 사용하는 경우 요청은 해당 서버로 전송됩니다. 네트워크 내에서 처리를 유지하려면 로컬 모델을 사용하고 정보를 전송하는 외부 도구를 사용하지 않아야 합니다.
Docker Compose를 사용하여 Dify를 설치하면 시각적 인터페이스를 통해 애플리케이션, 에이전트 및 RAG 시스템을 생성할 수 있는 완벽한 환경이 제공됩니다. 초기 설정은 비교적 간단하지만, 보안, 백업 및 유지 관리는 관리자의 책임입니다..
나는 그의 "괴짜" 관심을 직업으로 바꾼 기술 열광자입니다. 나는 10년 넘게 최첨단 기술을 사용하고 순수한 호기심으로 온갖 프로그램을 만지작거리며 살아왔습니다. 이제 저는 컴퓨터 기술과 비디오 게임을 전공했습니다. 왜냐하면 저는 5년 넘게 기술 및 비디오 게임에 관한 다양한 웹사이트에 글을 쓰고 모든 사람이 이해할 수 있는 언어로 필요한 정보를 제공하려는 기사를 작성해 왔기 때문입니다.
질문이 있으시면 제가 알고 있는 지식은 Windows 운영 체제는 물론 휴대폰용 Android까지 다양합니다. 그리고 저는 여러분을 위한 헌신을 하고 있습니다. 저는 항상 몇 분씩만 시간을 내어 이 인터넷 세계에서 여러분이 가질 수 있는 모든 질문을 해결하도록 도와드릴 의향이 있습니다.