US Exit Node (Tailscale VPN)와 LLM 서버 (Qwen 3.5 9B Model)를 무료 계층과 크레딧을 활용하여 구축하는 가이드입니다.
기술 스택 및 요금 안내
- Google Cloud Compute Engine: 신규 가입 시 제공되는 300달러 크레딧 활용 (Spot 인스턴스 사용으로 비용 최소화)
- Tailscale: 안전하고 무료인 개인용 VPN (Exit Node 기능 지원)
- Ollama: 로컬 LLM 구동을 위한 최적화 엔진
- Open WebUI: 챗GPT와 유사한 사용자 친화적인 웹 화면 제공
핵심 목표
- 안전한 나만의 미국 VPN (US Exit Node) 무료 구축
- 수학 문제 풀이 및 출제용 프라이빗 AI 모델 서버 구축
- 과금을 최소화하고 GCP 무료 크레딧을 최적으로 활용
Qwen 3.5 기반 수학 문제 시각 인식 테스트
Qwen 3.5 9B 모델은 뛰어난 Vision-Language(시각-언어) 능력을 갖추고 있어, 스마트폰으로 찍은 수학 문제 사진을 인식해 수식(LaTeX)으로 변환하고 단계별 풀이를 제공하는 데 탁월합니다.
- 이미지 인식: Open WebUI의 파일 업로드 기능으로 수학 문제 사진(손글씨 포함)을 쉽게 입력할 수 있습니다.
- 단계별 추론 (Chain of Thought):
Thinking(사고) 기능을 켜면, AI가 정답을 내기 전에 속으로 수식 전개 과정을 논리적으로 검토하여 수학 오답률을 크게 낮춥니다. - LaTeX 출력: 답변 형식을 LaTeX(수학 조판 언어)로 지정하면, 향후 출제기를 만들 때 화면에 수식을 깔끔하게 렌더링할 수 있습니다.
🚀 활용 로드맵 (확장 계획)
- 1단계 (프롬프트 템플릿화): 입력된 문제(예: 미분방정식)를 분석하여 유사한 변형 문제 5개와 상세 풀이를 자동 생성하도록 시스템 프롬프트 구성.
- 2단계 (자동화 파이프라인): 수학 문제 이미지를 넣으면 AI가 문제를 분석, 변형 문제를 생성하고 풀이집을 PDF로 자동 출력하는 자동화 스크립트 연동.
1단계: Google Cloud 기본 설정 및 방화벽 추가
GCP(Google Cloud Platform)에 로그인한 후 설정을 시작합니다.
1-1. Compute Engine API 활성화
- GCP 콘솔 상단 검색창에 Compute Engine API를 검색합니다.
- 해당 항목을 클릭하고 [사용] 버튼을 눌러 API를 켭니다.
1-2. 방화벽 규칙 생성 (Tailscale 속도 가속용)
노드 간 직접 통신을 허용하여 VPN 경유 속도를 대폭 개선하는 설정입니다.
1. 좌측 상단 메뉴(햄버거 버튼) ➔ [VPC 네트워크] ➔ [방화벽]으로 이동합니다.
2. 상단의 [방화벽 규칙 만들기]를 클릭하고 다음 정보를 입력합니다.
- 이름: tailscale-udp
- 방향: 인바운드 (Ingress)
- 대상(타겟): 네트워크의 모든 인스턴스
- 소스 IPv4 범위: 0.0.0.0/0
- 프로토콜 및 포트: 지정된 프로토콜 및 포트 선택 후 ➔ UDP 체크 ➔ 41641 입력
3. 하단의 [만들기] 버튼을 클릭하여 저장합니다.
2단계: VM 인스턴스 (서버) 생성
좌측 메뉴에서 [Compute Engine] ➔ [VM 인스턴스]로 이동하여 [인스턴스 만들기]를 누릅니다.
2-1. 하드웨어 사양 선택 (예산 및 목적에 맞춰 택 1)
⚠️ 중요: GPU 인스턴스 사용 시 주의사항 GPU가 포함된 인스턴스는 GCP 무료 등급에 포함되지 않으며, 신규 가입 크레딧을 빠르게 소모합니다. 예상치 못한 과금을 방지하기 위해 사용 후 반드시 인스턴스를 [중지(Stop)]하거나 [삭제]해야 합니다. 또한, GPU 인스턴스는 반드시 유료 계정(Paid Plan)으로 업그레이드해야만 생성 가능하며, 면밀한 비용 관리가 필요합니다.
💡 공통 필수 설정 - 리전: 미국 접속을 위해us-central1 (Iowa)를 선택합니다. - VM 프로비저닝 모델: 요금 절약을 위해 반드시스팟 (Spot)으로 변경합니다. (구글 여유 자원을 저렴하게 쓰는 대신, 드물게 자동 재시작될 수 있음)
- 옵션 A: 고성능 (GPU 가속, 300달러 크레딧 소모용)
- 옵션 B: 가성비 (월 10달러 이내 최적화)
2-2. 네트워크 설정 변경 (매우 중요)
화면 맨 아래로 스크롤하여 [고급 옵션] ➔ [네트워킹] 탭을 클릭해 펼칩니다.
1. IP 전달 (IP Forwarding): 반드시 사용(On)으로 체크합니다. (VPN 서버 역할을 하기 위해 꼭 필요합니다.)
2. 네트워크 인터페이스: 기본 default를 클릭하여 펼친 뒤, 네트워크 서비스 계층을 프리미엄에서 표준 (Standard)으로 변경합니다.
* 이유: ’표준’으로 설정해야 매달 200GB의 인터넷 트래픽을 무료로 제공받을 수 있습니다.
* 외부 IPv4 주소는 기본값인 ’임시(Ephemeral)’로 둡니다. 고정 IP를 예약하면 추가 비용이 발생하며, Tailscale이 알아서 IP를 추적해주므로 고정 IP가 필요 없습니다.
3. [만들기]를 눌러 서버 생성을 완료합니다.
3단계: 터미널 기반 서버 환경 구축
생성된 인스턴스 목록에서 [SSH] 버튼을 클릭하여 검은색 브라우저 터미널 창을 엽니다. 아래 명령어들을 복사(Ctrl+C)하여 터미널 창에 붙여넣기(Ctrl+V) 하세요.
3-1. Docker 및 필수 패키지 설치
sudo apt-get update
sudo apt-get install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
# GPU 인스턴스 사용 시 Docker에서 GPU를 활용하기 위한 설정 (필수)
# NVIDIA 드라이버는 GCP VM 생성 시 GPU를 선택하면 자동으로 설치됩니다.
# Docker에서 GPU를 사용하기 위한 런타임(nvidia-container-toolkit)을 설치합니다.
# (Ubuntu 22.04 기준)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu22.04/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker3-2. Tailscale 설치 및 Exit Node 승인
Exit Node(VPN 서버) 역할을 온전히 수행하려면 리눅스 운영체제 내부에서도 IP 포워딩을 허용해야 합니다.
# 1. Tailscale 설치
curl -fsSL https://tailscale.com/install.sh | sh
# 2. 리눅스 커널 IP 포워딩 활성화
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
# 3. Exit Node로 실행
sudo tailscale up --advertise-exit-node- 위 명령어를 실행하면 화면에
https://login.tailscale.com/...형식의 인증 주소가 나타납니다. - 이 주소를 복사하여 인터넷 브라우저에 붙여넣고 구글 계정 등으로 로그인합니다.
- 성공하면 Tailscale 관리자 콘솔(Machines)에 접속합니다.
- 방금 등록된 서버(GCP 기기) 우측의 점 3개 메뉴를 누르고 ➔ [Edit route settings] 클릭 ➔ [Use as exit node] 스위치를 켜서 승인합니다.
3-3. UDP GRO Forwarding 최적화 (선택 사항)
sudo tailscale up --advertise-exit-node 실행 시 Warning: UDP GRO forwarding is suboptimally configured... 경고가 나타날 수 있습니다. 이는 Tailscale Exit Node의 UDP 트래픽 처리 성능을 최적화하기 위한 설정입니다.
# 네트워크 인터페이스 이름(예: ens4)은 경고 메시지에서 확인하세요.
# GPU 인스턴스에서는 아래 설정이 성능 향상에 도움이 됩니다.
sudo ethtool -K ens4 rx-gro-hw off tx-gro-hw off💡 참고: 이 설정은 서버 재부팅 시 초기화될 수 있습니다. 영구적으로 적용하려면 GCP VM 인스턴스의 ’메타데이터’에 ’시작 스크립트(Startup Script)’로 추가하는 것을 권장합니다.
4단계: 미국 VPN (US Exit-node) 사용법
이제 내 스마트폰이나 PC에서 이 서버를 거쳐 안전한 미국 IP로 인터넷을 쓸 수 있습니다.
4-1. Exit Node 활성화 및 작동 확인
- 사전 확인: GCP 콘솔이나 모바일 앱에서 서버(VM)가 ’실행 중’인지 확인합니다.
- 클라이언트 기기에서 Exit Node 활성화:
- 공인 IP 주소 확인:
4-2. VM 인스턴스 관리
- ⚠️ 주의 (요금 폭탄 방지): 사용이 끝났거나 며칠간 쓰지 않을 때는, GCP 앱/콘솔에서 반드시 인스턴스 [중지(Stop)]를 눌러야 과금을 막을 수 있습니다. 다음 사용 시 다시 ’시작’만 누르면 기존 설정 그대로 켜집니다.
5단계: AI 챗봇 (Qwen 3.5 & WebUI) 서버 배포
SSH 터미널 창에 아래 코드를 전체 복사하여 붙여넣고 엔터를 치세요. 이 구성은 GPU 가속(Option A)과 CPU 모드(Option B)를 모두 지원하며, 성능 최적화 옵션이 포함되어 있습니다.
# 설치용 폴더 만들기 및 이동
mkdir -p ~/qwen-server && cd ~/qwen-server
# Docker Compose 실행 파일 생성
cat <<EOF > docker-compose.yml
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
# NVIDIA GPU(Option A) 사용 시 아래 'deploy' 영역의 주석(#)을 해제하세요.
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
environment:
- OLLAMA_NUM_PARALLEL=4 # 다중 요청 동시 처리
- OLLAMA_KEEP_ALIVE=24h # 모델을 메모리에 상주시켜 반응 속도 향상
volumes:
- ollama_data:/root/.ollama
restart: always
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "8080:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_AUTH=True
- WEBUI_SECRET_KEY=generate_your_secure_key_here
volumes:
- open-webui_data:/app/data
restart: always
volumes:
ollama_data:
open-webui_data:
EOF
# 컨테이너 서비스 시작
sudo docker compose up -d 💡 팁: Spot 인스턴스로 인해 서버가 재시작되어도 restart: always 정책 덕분에 서비스가 자동으로 복구됩니다. 6단계: Qwen 3.5 모델 설치 및 접속
6-1. AI 모델 다운로드 및 관리
Qwen 3.5 9B 모델은 강력한 수학 문제 추론 및 시각 인식 기능을 갖추고 있습니다.
# 1. Qwen 3.5 9B 모델 다운로드 (약 6GB, 수 분 소요)
sudo docker exec -it ollama ollama run qwen3.5:9b
# 2. (추가) 수학 문제 풀이에 특화된 모델이 따로 있을 경우 설치 방법 (예시)
# sudo docker exec -it ollama ollama pull qwen3.5:9b-math
# 3. 설치된 모델 리스트 확인
sudo docker exec -it ollama ollama list
# (참고) 실행 중인 모델 정보 및 리소스 사용량 확인
sudo docker exec -it ollama ollama ps6-2. 나만의 챗봇 화면 (Open WebUI) 접속 및 활용
- Tailscale 연결: PC나 스마트폰에서 Tailscale 앱을 실행하고 연결 상태인지 확인합니다.
- 접속 주소: 브라우저에
http://[GCP-Tailscale-IP]:8080을 입력합니다. (예:http://100.x.x.x:8080) - 계정 생성: 첫 접속 시
Sign Up을 통해 관리자 계정을 만듭니다. (데이터는 서버 로컬에만 저장됩니다.) - 수학 문제 테스트: