로컬 LLM(Gemma 3) 구축 및 외부 연동 가이드
등록일: 2026-05-04
본 문서는 Ryzen 7 5825U 환경의 Xubuntu 홈 서버에서 Ollama를 엔진으로 사용하고, Open WebUI와 Nginx를 통해 외부 도메인으로 안전하게 서비스하는 전체 구축 과정을 기록함.
1. Ollama 엔진 설치 및 최적화 (Native)
1.1 설치
성능 최적화 및 CPU 명령어 세트 활용을 위해 네이티브 설치를 권장함.
curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh
1.2 외부 접속 및 도커 연동 설정
도커 컨테이너 및 외부 IP에서의 접근을 허용하기 위해 환경 변수 수정이 필수적임.
# 설정 디렉토리 생성
sudo mkdir -p /etc/systemd/system/ollama.service.d
# 오버라이드 설정 파일 생성
sudo nano /etc/systemd/system/ollama.service.d/override.conf
내용 추가:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
서비스 재시작:
sudo systemctl daemon-reload
sudo systemctl restart ollama
2. Open WebUI 구축 (Docker)
2.1 docker-compose.yml 설정
데이터 보존을 위해 볼륨 매핑을 수행하고, 외부 네트워크 및 호스트 게이트웨이 설정을 포함함.
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "8083:8080"
volumes:
- /data001/open-webui/data:/app/backend/data
environment:
- "OLLAMA_BASE_URL=[https://ollama-api.sleepzz.xyz](https://ollama-api.sleepzz.xyz)" # Nginx 도메인 연동
networks:
- serverzz-net
networks:
serverzz-net:
external: true
3. Nginx 리버스 프록시 및 보안 설정
3.1 Nginx 사이트 설정 (ollama-api.conf)
도커 내부에서 호스트의 Ollama(11434)로 통신하기 위해 호스트 브리지 IP를 사용함.
server {
listen 80;
server_name ollama-api.sleepzz.xyz;
location / {
# 도커 호스트 게이트웨이 주소 사용
proxy_pass [http://172.17.0.1:11434](http://172.17.0.1:11434);
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 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
}
}
3.2 방화벽 설정 (UFW)
도커 컨테이너 대역에서 호스트의 11434 포트로의 접근을 명시적으로 허용함.
sudo ufw allow from 172.18.0.0/16 to any port 11434 proto tcp
4. Cloudflare Tunnel 및 도메인 연동
4.1 Cloudflare 대시보드 설정
- Zero Trust > Networks > Tunnels에서 터미널 커넥터 확인.
- Public Hostname 추가:
open-webui.sleepzz.xyz->http://localhost:8083(WebUI 화면)ollama-api.sleepzz.xyz->http://localhost:8080(Nginx 프록시 포트)
4.2 최종 확인
- 웹 브라우저에서
open-webui.sleepzz.xyz접속 후 로그인. - 상단 모델 선택 메뉴에서
gemma3:4b노출 여부 확인. - 외부 API 테스트:
curl https://ollama-api.sleepzz.xyz/api/tags
5. 향후 확장 계획 (RAM 32GB 증설 시)
ollama pull gemma3:12b또는gemma3:27b명령어로 고사양 모델 적재.- Open WebUI 설정에서 기본 모델을 상위 모델로 변경.
- PostgreSQL(pgvector) 연동을 통한 RAG(검색 증강 생성) 시스템 구축.