2026년 3월 업데이트 설정 시간 ~2시간

2026년 Dify 자체 호스팅 방법

자체 VPS에서 Dify를 실행하기 위한 실용적인 완전 가이드. 서버 선택부터 SSL 인증서, 지속적인 유지 관리까지 — 한 곳에서 필요한 모든 것을 알아보세요.

Dify 자체 호스팅이란?

Dify는 AI 기반 앱, 챗봇, RAG 파이프라인을 만들 수 있는 오픈 소스 LLM 애플리케이션 개발 플랫폼입니다. 자체 호스팅이란 Dify Cloud 대신 자신의 서버에서 Dify를 실행하는 것을 의미합니다.

Dify Cloud 대신 자체 호스팅을 선택하는 세 가지 주요 이유:

  • 비용 — Hetzner CX22는 월 €3.79인 반면 Dify Cloud Pro는 월 $59입니다. 팀 규모로 확장할 때 절약 효과는 상당합니다.
  • 제어 — 구성, 플러그인, 커스텀 모델, 무제한 워크스페이스 멤버, 메시지 크레딧 제한 없음에 완전히 액세스할 수 있습니다.
  • 데이터 개인 정보 보호 — 프롬프트, 문서, 대화 기록이 자체 인프라를 절대 벗어나지 않습니다. 규제 업종에서는 필수적입니다.

단점은 설정, 업데이트 및 가동 시간에 대한 책임이 본인에게 있다는 것입니다. 이 가이드가 그것을 간단하게 만들어 드립니다.

서버 요구 사항

최소

2 vCPU 4 GB RAM 50 GB SSD

권장

4 vCPU 8 GB RAM 80 GB SSD

OS: Ubuntu 22.04 LTS (권장). Debian 11/12도 작동합니다.

1

서버 선택

대부분의 자체 호스팅 사용자에게 Hetzner CX22 (월 €3.79, 2 vCPU, 4GB RAM, 40GB NVMe)가 가장 좋은 시작점입니다. Dify와 모든 서비스를 편안하게 실행합니다. 유럽 데이터 센터로 GDPR 준수에 이상적입니다.

더 간단한 제어판을 원하는 초보자에게는 Hostinger VPS가 월 $7.99부터 시작하며 더 많은 도움말을 제공합니다. 8GB RAM이 필요하다면 KVM 2 플랜(월 $9.99)이 훌륭한 가성비를 제공합니다.

팁: 공개 SSH 키를 추가한 상태로 서버를 생성하세요. 이렇게 하면 비밀번호 인증을 완전히 피할 수 있어 더 안전합니다.

2

서버 초기 설정

서버에 접속하여 초기 설정을 실행하세요:

# 서버에 SSH 접속
ssh root@YOUR_SERVER_IP

# 패키지 업데이트
apt update && apt upgrade -y

# 필수 도구 설치
apt install -y curl wget git ufw

# 비루트 사용자 생성
adduser dify
usermod -aG sudo dify

# 새 사용자에게 SSH 키 복사
rsync --archive --chown=dify:dify ~/.ssh /home/dify

# UFW 방화벽 설정
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw --force enable
ufw status

이제 로그아웃하고 나머지 단계를 위해 dify 사용자로 다시 접속하세요.

3

Docker Engine 설치

공식 apt 저장소를 사용하여 Docker를 설치하세요 — snap 버전은 사용하지 마세요:

# 사전 요구 사항 설치
sudo apt install -y ca-certificates curl gnupg lsb-release

# Docker 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Docker apt 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engine 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 사용자를 docker 그룹에 추가 (sudo 불필요)
sudo usermod -aG docker $USER
newgrp docker

# 설치 확인
docker --version
4

Docker Compose 플러그인 설치

Docker Compose 플러그인은 이전 패키지에 포함되어 있습니다. 작동하는지 확인하세요:

# Docker Compose 버전 확인 (v2.x여야 함)
docker compose version

# 설치되지 않은 경우 수동으로 추가
sudo apt install -y docker-compose-plugin
5

Dify 클론 및 설정

공식 Dify 저장소를 클론하고 환경을 설정하세요:

# 저장소 클론
git clone https://github.com/langgenius/dify.git
cd dify/docker

# 예제에서 .env 파일 생성
cp .env.example .env

# 안전한 SECRET_KEY 생성
openssl rand -base64 42

# .env 파일 편집
nano .env

.env에서 업데이트해야 할 핵심 설정:

# 필수: 강력한 랜덤 비밀 키 설정
SECRET_KEY=here-your-generated-secret-key

# 도메인 설정 (이메일 및 링크에 사용)
CONSOLE_URL=https://your-domain.com
APP_URL=https://your-domain.com

# 기본 데이터베이스 비밀번호 변경
DB_PASSWORD=your-strong-db-password

# 기본 Redis 비밀번호 변경
REDIS_PASSWORD=your-strong-redis-password

# 선택 사항: 빠른 시작을 위해 OpenAI API 키 추가
OPENAI_API_KEY=sk-...
6

Dify 시작

Docker Compose로 모든 Dify 서비스를 실행하세요:

# 모든 서비스를 백그라운드에서 시작
docker compose up -d

# 모든 컨테이너가 실행 중인지 확인
docker compose ps

# 시작 로그 확인 (Ctrl+C로 종료)
docker compose logs -f

모든 컨테이너가 healthy 상태가 되면 (1~2분 소요), http://YOUR_SERVER_IP를 방문하여 관리자 설정 마법사를 완료하세요.

7

Nginx로 SSL 설정

Dify의 Docker 스택에는 포트 80에서 자체 Nginx가 포함되어 있습니다. SSL을 위해 앞에 호스트 레벨 Nginx를 리버스 프록시로 추가합니다. 먼저 충돌을 피하기 위해 Dify 포트를 변경하세요:

# dify/docker/.env에서 Nginx 포트 변경
EXPOSE_NGINX_PORT=8080

# 적용을 위해 재시작
docker compose down && docker compose up -d

# 호스트 Nginx 및 Certbot 설치
sudo apt install -y nginx certbot python3-certbot-nginx

# 도메인용 Nginx 설정 생성
sudo nano /etc/nginx/sites-available/dify

이 설정을 추가하세요 (your-domain.com을 교체하세요):

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
        client_max_body_size 100M;
    }
}
# 활성화 및 테스트
sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# SSL 인증서 받기 (자동으로 HTTPS용 Nginx 설정)
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
8

유지 관리

Dify 업데이트 — Dify는 자주 업데이트를 출시합니다. 설정 변경 없이 업데이트하세요:

cd ~/dify
git pull origin main
cd docker
docker compose pull
docker compose up -d

백업 — PostgreSQL 데이터베이스와 업로드된 파일을 백업하세요:

# 데이터베이스 백업
docker compose exec db pg_dump -U postgres dify > backup_$(date +%Y%m%d).sql

# 업로드된 파일 백업
tar -czf dify_storage_$(date +%Y%m%d).tar.gz ./volumes/app/storage

모니터링 — 리소스 사용량을 확인하세요:

# 컨테이너 리소스 사용량
docker stats

# 디스크 사용량
df -h
docker system df

자주 묻는 질문

포트 충돌: 포트 80이 이미 사용 중입니다

다른 서비스(주로 Apache)가 포트 80을 사용 중입니다. 중지하거나 (sudo systemctl stop apache2) .env에서 EXPOSE_NGINX_PORT=8080을 설정하여 Dify Nginx 포트를 변경하세요.

컨테이너가 메모리 부족 오류로 종료됩니다

Dify는 최소 4GB RAM이 필요합니다. free -h로 확인하세요. RAM이 부족하면 4GB 스왑 파일을 추가하세요: fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile.

관리자 설정 페이지에 접근할 수 없습니다

모든 컨테이너가 실행 중인지 확인하고 (docker compose ps), 방화벽이 포트 80을 허용하는지 확인하세요 (sudo ufw status). API 컨테이너가 준비되는 데 30~60초가 걸립니다 — healthy 상태를 기다리세요.

관리자 비밀번호를 잊어버렸습니다

API 컨테이너를 통해 재설정하세요: docker compose exec api flask reset-password — 이메일과 새 비밀번호를 입력하라는 메시지를 따르세요.

다운타임 없이 Dify를 업데이트하려면 어떻게 하나요?

docker compose pull을 실행하여 새 이미지를 미리 다운로드한 다음 docker compose up -d로 적용하세요. Docker Compose는 기본적으로 롤링 재시작을 수행하므로 다운타임은 보통 30초 미만입니다.