toolkitbox

~/ / AI 기사 / VPS에서 로컬 LLM / 내 VPS의 Ollama에 Dify 연결하기

내 VPS의 Ollama에 Dify 연결하기

Dify는 AI 앱을 만드는 플랫폼으로, 내 서버에서 직접 실행할 수 있습니다. 모델은 Ollama가 실행합니다. 이 글은 VPS 한 대에서 둘을 연결하는 방법을 다룹니다. 서버가 얼마나 커야 하는지, Dify를 어떻게 시작하는지, Ollama 플러그인이 어떤 입력란을 요구하는지, 그리고 노트북에서는 되던 주소가 Docker 안에서는 왜 실패할 수 있는지를 설명합니다. 문서가 어디까지만 다루는지도 함께 적어 두었으니, 직접 테스트해야 할 부분을 알 수 있습니다.

게시: · 읽는 데 약 9분 · 2026-10-27에 공식 문서와 저장소를 기준으로 사실을 확인했습니다. Dify는 변화가 빠르므로 설치하는 버전의 릴리스 노트를 읽어 보세요.

시작하기 전에 필요한 것

Dify 셀프 호스팅 가이드에는 Dify 자체의 최소 사양이 나와 있습니다. 모델은 그와 별도로 자체 메모리가 필요하므로 두 수치를 더해야 합니다. 아래 추정기는 모델에 필요한 수치를 알려 줍니다. 이 수치를 Dify의 최소 사양에 더하는 것은 우리의 경험칙이며 Dify 문서에 있는 내용이 아닙니다.

항목Dify 가이드의 설명
CPUCPU >= 2 Core
메모리RAM >= 4 GiB
Docker ComposeDify에는 Docker Compose 2.24.0 이상이 필요합니다.
Git, curl, jq아래의 clone 명령은 git, curl, jq를 사용합니다.

직접 해 보기: Local LLM Memory Estimator

모델

Ollama 태그 qwen3:8b, 양자화 Q4_K_M, 다운로드 크기 5.2 GB.

추정값

모델 가중치
4.84 GiB
KV 캐시
0.56 GiB
예비분
1.00 GiB
합계
6.41 GiB (6.88 GB)
담을 수 있는 가장 작은 일반 메모리 크기
8 GiB

이 값은 추정입니다. 런타임의 연산 버퍼는 포함하지 않으며, 모든 레이어의 KV 구조가 같다고 가정합니다. 플랜을 정하기 전에 실제로 실행해 측정하세요.

모델 데이터 확인일: 2026-10-26.

출처: Ollama library · 모델 구성 파일 (config.json) · Ollama FAQ

모든 처리는 브라우저 안에서 이루어지며 아무것도 업로드되지 않습니다.

1단계: Docker Compose로 Dify 시작하기

Dify 셀프 호스팅 가이드의 명령입니다. 첫 번째 명령은 GitHub에서 최신 릴리스 태그를 내려받으므로, 미완성 브랜치가 아니라 릴리스에서 시작하게 됩니다. 우리가 확인한 시점의 최신 릴리스는 1.18.0(2026-10-23 공개)이었습니다.

단계명령
최신 릴리스 클론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
에이전트 백엔드용 토큰 생성openssl rand -base64 32
Dify 시작docker compose up -d

시작하기 전에 openssl이 출력한 토큰을 .env의 DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN에 넣으세요. 가이드에 따르면 이 토큰이 없으면 에이전트 백엔드와 그 샌드박스가 시작되지 않습니다.

2단계: 관리자 계정 만들기

컨테이너가 모두 올라간 뒤에는 가이드에 따라 먼저 관리자 초기화 페이지를 엽니다. 서버에서는 http://your_server_ip/install, 내 컴퓨터에서는 http://localhost/install 입니다. 거기서 계정을 만든 다음 http://your_server_ip 에서 로그인하세요.

계정이 만들어지기 전에 누가 이 페이지에 접근할 수 있는지는 문서에 나와 있지 않습니다. 문서의 내용이 아니라 우리의 권장 사항입니다: 시작한 직후에 바로 계정을 만들고, Dify를 인터넷에 열어 두기 전에 서버를 보호하는 방법에 관한 글을 읽어 보세요.

3단계: Ollama 플러그인과 모델 추가하기

현재 Dify 문서에서는 모델 공급자를 Integrations > Model Provider 또는 Marketplace에서 설치하고, 공급자 카드의 Setup을 클릭합니다. 메뉴 이름은 버전마다 바뀌므로 사용 중인 버전에서 공급자 목록을 찾아 보세요. Ollama 플러그인(우리가 확인한 시점의 버전은 1.0.3)의 Marketplace 페이지에는 Dify에 추가하기 전에 Ollama를 설치하고, 모델을 실행하고, 로컬 API가 동작하는지 확인하라고 적혀 있습니다.

다음은 플러그인의 README와 Marketplace 페이지에 나와 있는 입력란입니다.

입력란입력할 내용
Model NameOllama 모델. 예: gemma3, qwen3, deepseek-r1, gpt-oss.
Base URLOllama 호스트의 루트. 로컬 Ollama라면 http://<your-ollama-host>:11434 입니다. /api는 넣지 마세요. 플러그인이 /api/chat, /api/generate, /api/embed를 직접 붙입니다.
API Key로컬 Ollama에서는 선택 사항입니다. Ollama cloud에서만 필요합니다.
Model Type채팅, 도구 호출, 비전에는 Chat. Marketplace 페이지에는 텍스트 임베딩과 rerank도 나와 있습니다.
Model Context Length모델의 컨텍스트 윈도우에 맞춥니다.
Upper bound for max tokensDify가 허용하는 max tokens(num_predict)의 최댓값.
Vision support / Function call support해당 기능을 지원하는 모델에서만 Yes를 선택하세요.
Attach Dify app_id as request headers기본값은 꺼짐입니다. 켜면 Dify가 Ollama를 호출할 때 X-Dify-App-Id와 X-Dify-Source 헤더를 추가합니다. Ollama는 이 헤더를 사용하지 않습니다.

어떤 모델이 비전과 도구 호출을 지원하는지는 Ollama 라이브러리의 모델로 무엇을 할 수 있는지 다룬 글을 참고하세요.

4단계: Docker 안에서 동작하는 주소

Dify는 컨테이너에서 실행되고, Ollama는 서버 자체에서 실행됩니다. 컨테이너 안의 localhost는 서버가 아니라 그 컨테이너 자신입니다. 플러그인 README에는 Dify 컨테이너가 접근할 수 있는 호스트 주소를 사용하라고 되어 있습니다. 예를 들면 http://host.docker.internal:11434 또는 LAN IP 주소입니다.

이 이름에 대해서는 Docker 문서가 설명합니다. --add-host 옵션은 호스트의 내부 IP 주소로 해석되는 특별한 값 host-gateway를 지원하며, 그 이름으로는 host.docker.internal을 쓰는 것이 관례입니다. 또한 Docker Desktop은 이 이름을 자동으로 해석한다고 적혀 있습니다. 문서의 예시는 --add-host host.docker.internal=host-gateway 입니다.

확인한 내용결과
Dify의 docker-compose.yaml에 host.docker.internal이 정의되어 있는가?아니요. main 브랜치의 파일에서 host.docker.internal도 extra_hosts 항목도 찾지 못했습니다.
Docker Compose 레퍼런스에 extra_hosts가 설명되어 있는가?예. /etc/hosts에 들어가는 HOSTNAME=IP 형태의 호스트 이름 매핑으로 설명되어 있습니다. 우리가 읽은 페이지에는 extra_hosts에 대한 host-gateway 언급이 없습니다.
Ollama는 127.0.0.1 이외의 주소에서도 수신하는가?기본값은 아닙니다. Ollama FAQ에 따르면 127.0.0.1의 11434 포트에 바인딩되며, OLLAMA_HOST 환경 변수로 바인딩 주소를 바꿀 수 있습니다.

문서의 내용이 아니라 우리의 해석입니다: Linux 서버에서는 호스트 이름을 직접 추가하거나 서버의 주소를 사용해야 하고, Ollama가 수신하는 주소도 바꿔야 할 수 있습니다. 이 조합은 테스트하지 않았습니다. OLLAMA_HOST를 바꾸면 11434 포트에 다른 기기에서도 접근할 수 있게 되는데, Ollama에는 자체 비밀번호가 없으므로 방화벽에서 이 포트를 외부에 닫아 두세요. Ollama 설치와 그 앞에 nginx를 두는 방법을 다룬 글에 설정이 나와 있습니다.

5단계: 임베딩, 그리고 플러그인이 하지 않는 일

플러그인의 Marketplace 페이지에는 스트리밍, 사고(thinking), 비전, 도구 호출, 텍스트 임베딩을 지원하며 임베딩 벡터는 L2-normalized 라고 적혀 있습니다. 임베딩을 쓰려면 Ollama 라이브러리의 임베딩 모델로 텍스트 임베딩 유형의 두 번째 모델을 추가합니다.

포함되지 않는 기능도 적혀 있습니다. Ollama에는 기본 rerank 엔드포인트가 없으므로, rerank 모델에는 OpenAI 호환 rerank 서비스가 필요합니다. 웹 검색도 포함되어 있지 않습니다. 별도의 Dify 도구 플러그인이나 외부 워크플로가 필요합니다.

연결이 실패할 때

  • ollama ps를 실행해 모델이 로드되었는지 확인하고, 서버에서 http://127.0.0.1:11434 를 열어 Ollama가 응답하는지 확인하세요.
  • Base URL을 확인하세요. 포트를 포함한 호스트 루트이며 /api는 붙이지 않습니다.
  • Dify 컨테이너가 그 주소에 접근할 수 있는지 확인하세요. Dify 문서에 따르면 외부로 나가는 요청은 내부 및 사설 IP 대역을 차단하는 프록시를 거칩니다. 이 페이지에는 HTTP 노드와 이미지 다운로드가 언급되어 있지만, 모델 공급자의 요청도 같은 경로를 지나는지는 나와 있지 않습니다. 사설 주소를 쓰는데 거부된다면 이 부분을 살펴볼 수 있습니다.
  • docker compose logs로 컨테이너의 로그를 읽어 보세요. 문서에서 오류 메시지 목록은 찾지 못했습니다.

Dify를 최신 상태로 유지하기

가이드에 따르면 업그레이드 절차는 릴리스마다 다르므로, 이동하려는 버전의 업그레이드 가이드를 따라야 합니다. 이 가이드는 Dify Releases 페이지에 있습니다. 업그레이드한 뒤에는 .env.example과 내 .env를 비교해 새로 생기거나 바뀐 변수를 확인하세요. docker-compose.yaml을 수정했다면, 릴리스에서 필수 서비스가 추가될 수 있으므로 새 릴리스의 파일에 수정 내용을 다시 적용하세요.

출처

다음에 읽기