본문으로 건너뛰기

로컬 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 대시보드 설정

  1. Zero Trust > Networks > Tunnels에서 터미널 커넥터 확인.
  2. 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 증설 시)

  1. ollama pull gemma3:12b 또는 gemma3:27b 명령어로 고사양 모델 적재.
  2. Open WebUI 설정에서 기본 모델을 상위 모델로 변경.
  3. PostgreSQL(pgvector) 연동을 통한 RAG(검색 증강 생성) 시스템 구축.