2026년 Dify 자체 호스팅 방법
자체 VPS에서 Dify를 실행하기 위한 실용적인 완전 가이드. 서버 선택부터 SSL 인증서, 지속적인 유지 관리까지 — 한 곳에서 필요한 모든 것을 알아보세요.
Dify 자체 호스팅이란?
Dify는 AI 기반 앱, 챗봇, RAG 파이프라인을 만들 수 있는 오픈 소스 LLM 애플리케이션 개발 플랫폼입니다. 자체 호스팅이란 Dify Cloud 대신 자신의 서버에서 Dify를 실행하는 것을 의미합니다.
Dify Cloud 대신 자체 호스팅을 선택하는 세 가지 주요 이유:
- 비용 — Hetzner CX22는 월 €3.79인 반면 Dify Cloud Pro는 월 $59입니다. 팀 규모로 확장할 때 절약 효과는 상당합니다.
- 제어 — 구성, 플러그인, 커스텀 모델, 무제한 워크스페이스 멤버, 메시지 크레딧 제한 없음에 완전히 액세스할 수 있습니다.
- 데이터 개인 정보 보호 — 프롬프트, 문서, 대화 기록이 자체 인프라를 절대 벗어나지 않습니다. 규제 업종에서는 필수적입니다.
단점은 설정, 업데이트 및 가동 시간에 대한 책임이 본인에게 있다는 것입니다. 이 가이드가 그것을 간단하게 만들어 드립니다.
서버 요구 사항
최소
권장
OS: Ubuntu 22.04 LTS (권장). Debian 11/12도 작동합니다.
서버 선택
대부분의 자체 호스팅 사용자에게 Hetzner CX22 (월 €3.79, 2 vCPU, 4GB RAM, 40GB NVMe)가 가장 좋은 시작점입니다. Dify와 모든 서비스를 편안하게 실행합니다. 유럽 데이터 센터로 GDPR 준수에 이상적입니다.
더 간단한 제어판을 원하는 초보자에게는 Hostinger VPS가 월 $7.99부터 시작하며 더 많은 도움말을 제공합니다. 8GB RAM이 필요하다면 KVM 2 플랜(월 $9.99)이 훌륭한 가성비를 제공합니다.
팁: 공개 SSH 키를 추가한 상태로 서버를 생성하세요. 이렇게 하면 비밀번호 인증을 완전히 피할 수 있어 더 안전합니다.
서버 초기 설정
서버에 접속하여 초기 설정을 실행하세요:
# 서버에 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 사용자로 다시 접속하세요.
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 Docker Compose 플러그인 설치
Docker Compose 플러그인은 이전 패키지에 포함되어 있습니다. 작동하는지 확인하세요:
# Docker Compose 버전 확인 (v2.x여야 함)
docker compose version
# 설치되지 않은 경우 수동으로 추가
sudo apt install -y docker-compose-plugin 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-... Dify 시작
Docker Compose로 모든 Dify 서비스를 실행하세요:
# 모든 서비스를 백그라운드에서 시작
docker compose up -d
# 모든 컨테이너가 실행 중인지 확인
docker compose ps
# 시작 로그 확인 (Ctrl+C로 종료)
docker compose logs -f 모든 컨테이너가 healthy 상태가 되면 (1~2분 소요), http://YOUR_SERVER_IP를 방문하여 관리자 설정 마법사를 완료하세요.
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 유지 관리
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초 미만입니다.