SSD Nodes Learn
가이드 Matt Connor작성자 Matt Connor · 업데이트됨 2026-07-24

Dify를 VPS에 Docker Compose로 설치하는 방법

Docker Compose를 사용하여 Dify를 셀프 호스팅하는 절차를 안내합니다. 6개의 컨테이너 구동을 위해 최소 4 GB RAM이 필요하며, 보안을 위해 .env 파일의 모든 secret 값을 수정하고 /install 경로에서 관리자 계정을 생성해야 합니다.

Dify의 정의 및 실행 시 고려사항

Dify는 대규모 언어 모델(LLM) 기반의 애플리케이션을 구축하기 위한 셀프 호스팅 플랫폼입니다. 채팅 앱, 에이전트, 검색 파이프라인을 설계할 수 있는 웹 인터페이스, 자체 코드에서 호출할 수 있는 API, 그리고 프롬프트, 데이터셋, 모델 키를 관리할 수 있는 통합 환경을 제공합니다. 이 도구는 소규모 팀이 API 키를 여러 스크립트에 분산시키지 않고, 하나의 공유된 프라이빗 기반 위에서 협업할 수 있도록 설계되었습니다.

직접 실행하려면 여러 구성 요소를 구동해야 합니다. Dify는 Docker Compose로 연결된 Docker 컨테이너 세트로 제공됩니다. 여기에는 API 서버, 백그라운드 워커, 웹 프론트엔드, Postgres 데이터베이스, Redis 캐시, 그리고 벡터 데이터베이스가 포함됩니다. 단일 바이너리보다 복잡하지만, Compose가 연결을 관리하며 수 GB의 여유 RAM을 가진 VPS에서 안정적으로 실행됩니다.

Dify는 모델 API 키와 검색을 위해 업로드한 개인 문서를 보유하므로, 실행 중인 서버를 설치 직후부터 보안에 각별히 주의해야 합니다. 이 가이드는 설치 후, 비밀 정보를 보유한 모든 서비스와 동일한 방식으로 보안을 강화하는 방법을 설명합니다.

Prerequisites

Ubuntu 24.04가 설치된 VPS가 필요하며, Docker와 Docker Compose 플러그인이 설치되어 있어야 합니다. 또한 sudo 권한을 가진 사용자 또는 docker 그룹의 멤버여야 합니다. Docker가 처음이라면 VPS에서 Docker Compose의 기본 사항에서 이 가이드가 전제하는 설치 및 핵심 명령어를 확인할 수 있습니다. IP 주소 대신 TLS를 사용해야 하므로 서버를 가리키는 도메인 이름이 필요합니다.

Step 1: Get Dify and its Compose files

Dify의 Docker 설정은 메인 저장소에 포함되어 있습니다. 저장소를 클론한 후 docker 디렉토리로 이동합니다.

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

.env 파일이 전체 설정 파일입니다. 시작하기 전에 반드시 읽어보십시오. 가장 먼저 확인해야 할 값은 비밀번호와 보안 관련 설정인 SECRET_KEY, Postgres 비밀번호, Redis 비밀번호입니다. 예시 파일에는 플레이스홀더 값이 들어 있으므로, 이를 그대로 두면 Dify 보안이 침해되는 가장 흔한 원인이 됩니다. 실제 보안 키를 생성하십시오.

openssl rand -base64 42

생성한 키를 SECRET_KEY에 붙여넣고, 파일 내의 모든 비밀번호 필드에 강력하고 고유한 값을 설정하십시오.

Step 2: Start it

스택을 실행합니다.

docker compose up -d

첫 실행 시 여러 이미지를 다운로드하고 데이터베이스를 초기화하므로 잠시 기다려야 합니다. 컨테이너 상태가 정상인지 확인하십시오.

docker compose ps

모든 서비스는 running를 읽어야 합니다. Dify는 기본적으로 80번 포트의 번들 nginx 컨테이너를 통해 웹 인터페이스를 제공합니다. http://YOUR_SERVER/install에 처음 접속할 때 관리자 계정을 생성하게 됩니다. 다른 서비스가 포트에 접근하기 전에 즉시 계정을 생성하십시오. 해당 계정이 생성되기 전까지는 페이지에 접속하는 누구나 계정을 선점하여 인스턴스를 탈취할 수 있습니다.

Step 3: Do not expose it raw. Put TLS and a firewall in front

대부분의 빠른 설치가 여기서 멈추고 보안 사고가 시작됩니다. Dify의 nginx는 모든 인터페이스의 80번 포트에서 암호화되지 않은 상태로 대기합니다. 관리자 로그인 정보와 모델 API 키가 일반 HTTP를 통해 전송되어서는 안 되며, 내부 서비스가 외부에서 접근 가능해서도 안 됩니다.

SSH와 웹 트래픽만 허용하고 나머지는 차단하는 기본 차단(default-deny) 방화벽으로 서버를 보호하십시오.

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 방화벽 격차를 유발합니다. 두 스택 모두 필터링되는지 확인하십시오.

TLS 적용을 위한 가장 깔끔한 방법은 Dify의 웹 포트를 루프백(loopback)에 바인딩하고, 앞에 Let's Encrypt 인증서를 사용하는 리버스 프록시를 실행하는 것입니다. 이렇게 하면 공용 인터넷에는 HTTPS를 사용하는 프록시만 노출됩니다. Dify의 .env 설정을 통해 노출 포트를 변경할 수 있습니다. 포트를 127.0.0.1로 설정하고 프록시가 해당 포트를 가리키도록 설정하십시오. VPS에서 AI 에이전트를 안전하게 실행하기의 에이전트 보안 강화 아이디어도 여기에 적용됩니다. 구성 요소를 루프백에 유지하고, 외부로 노출할 항목만 공개하며, 보안이 강화된 단일 관문을 통해 TLS를 사용하십시오.

Step 4: Keep it patched

Dify는 빠르게 업데이트되며, 업데이트에는 보안 패치가 포함됩니다. 업데이트는 docker 디렉토리에서 다음 명령어를 실행하면 됩니다.

git pull
docker compose pull
docker compose up -d

메이저 버전 업데이트 전에는 릴리스 노트를 읽으십시오. Dify는 릴리스 사이에 .env 스키마를 변경할 수 있으며, 설정하지 않은 새로운 변수로 인해 컨테이너가 시작되지 않을 수 있습니다.

Step 5: Back up what you cannot regenerate

Dify 서버에서 복구가 불가능한 두 가지 요소가 있습니다. 앱, 사용자, 설정을 저장하는 Postgres 데이터베이스와 업로드된 문서 및 벡터 인덱스를 저장하는 볼륨입니다. 두 항목 모두 docker 디렉토리의 Docker 볼륨에 저장됩니다. 정기적으로 스냅샷을 생성하고 서버 외부로 복사하십시오. 모델 API 키는 재발급이 가능하지만, 일주일 동안 구축한 앱은 복구할 수 없습니다.

더 자율적인 코드 실행 에이전트에 대해서는 Agent Zero 셀프 호스팅을, 모든 에이전트의 기초에 대해서는 VPS에서 자체 AI 에이전트 구축하기를 참조하십시오.

FAQ

What are the system requirements to self-host Dify?

Dify는 약 6개의 컨테이너로 구성된 Docker Compose 스택으로 실행됩니다. 따라서 최소 2 GB의 여유 RAM을 가진 VPS를 준비하십시오. 이상적인 사양은 4 GB이며, CPU 코어와 업로드된 문서 및 벡터 인덱스를 위한 충분한 디스크 공간이 필요합니다. 메모리 부하는 Dify 자체가 아닌 데이터베이스와 벡터 저장소에서 발생합니다.

Is it safe to expose Dify directly on port 80?

아니요. Dify의 번들 웹 서버는 일반 HTTP로 대기하며, 관리자 로그인과 모델 API 키를 노출합니다. Let's Encrypt 인증서를 사용하는 리버스 프록시를 앞에 두고, Dify의 포트는 루프백에 바인딩하여 HTTPS 프록시만 인터넷에 노출되도록 하십시오. 이와 함께 IPv4와 IPv6를 모두 포함하는 기본 차단 방화벽을 설정하십시오.

How do I update a self-hosted Dify?

docker 디렉토리에서 git pull를 실행한 다음, docker compose pulldocker compose up -d를 실행하여 새 이미지를 가져오고 재시작하십시오. 업데이트 전 릴리스 노트를 먼저 읽으십시오. Dify는 버전 간에 새로운 .env 변수를 추가할 수 있으며, 누락된 변수가 있으면 컨테이너가 실행되지 않을 수 있습니다.

What is the first thing to do after installing Dify?

/install에 접속하여 즉시 관리자 계정을 생성하십시오. 해당 계정이 생성되기 전까지는 페이지에 접속할 수 있는 누구나 계정을 선점할 수 있습니다. 컨테이너가 정상 상태가 되는 즉시, 그리고 방화벽을 외부에 개방하기 전에 설정을 완료하십시오.