2026년 7월 21일 화요일

크라우드플레어(Cloudflare Tunnel)도 당연히 가능합니다! 심지어 Kaggle 환경에서는 Ngrok이나 Localtunnel보다 더 매력적인 대안이 될 수 있습니다.



크라우드플레어(Cloudflare Tunnel)도 당연히 가능합니다! 심지어 Kaggle 환경에서는 Ngrok이나 Localtunnel보다 더 매력적인 대안이 될 수 있습니다.
크라우드플레어는 무료 제공 플랜인 'Quick Tunnel(TryCloudflare)' 기능을 지원하기 때문에, 회원가입이나 로그인(인증 토큰) 없이도 명령어 한 줄로 즉시 임시 HTTPS 주소를 따낼 수 있습니다. Ngrok의 무료 플랜처럼 대역폭 제한이나 연결 끊김 압박이 적어 Ollama 서버용으로 쓰기 아주 좋습니다.
Kaggle 노트북에서 Cloudflare를 이용해 Ollama 서버를 여는 방법은 다음과 같습니다.

🛠️ Kaggle에서 Cloudflare Tunnel 연동하기1단계: Ollama 설치 및 백그라운드 실행기존과 동일하게 Ollama를 설치하고 subprocess로 백그라운드 서버를 켭니다.
```python
import subprocess
import time

# 1. Ollama 설치
!curl -fsSL https://ollama.com | sh

# 2. Ollama 백그라운드 실행
subprocess.Popen("nohup ollama serve > ollama.log 2>&1 &", shell=True)
time.sleep(5)
```
2단계: cloudflared(크라우드플레어 데몬) 설치 및 터널링 실행Kaggle 리눅스 환경에 맞는 크라우드플레어 실행 파일(cloudflared)을 다운로드하고, Ollama의 기본 포트인 11434로 무료 터널을 오픈합니다.
```python
import os
import re

# 1. cloudflared 다운로드 및 권한 부여
!curl -L --output cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x cloudflared

# 2. 로깅을 위해 기존 터널 로그 파일 삭제
if os.path.exists("tunnel.log"):
    os.remove("tunnel.log")

# 3. Ollama 11434 포트를 바인딩하여 백그라운드에서 Quick Tunnel 실행
# 별도의 가입/인증서 없이 trycloudflare.com 임시 주소를 생성합니다.
subprocess.Popen("./cloudflared tunnel --url http://localhost:11434 > tunnel.log 2>&1 &", shell=True)
time.sleep(8) # 터널링 주소가 발급될 때까지 대기

# 4. 로그 파일에서 발급된 .trycloudflare.com 주소 찾아 출력하기
with open("tunnel.log", "r") as f:
    log_content = f.read()

# 생성된 임시 URL 주소 패턴 매칭
match = re.search(r"https://[a-zA-Z0-9-]+\.trycloudflare\.com", log_content)

print("\n" + "="*60)
if match:
    print(f"🔗 외부 접속용 Cloudflare Ollama API 주소:\n{match.group(0)}")
else:
    print("❌ 터널 주소 생성 실패. 로그를 확인하세요:")
    print(log_content[:500]) # 실패 시 로그 앞부분 출력
print("="*60)
```

💡 실행 결과 확인 및 활용위 코드가 성공적으로 실행되면 셀 출력 결과에 다음과 같은 고유 주소가 생성됩니다.https://your-random-words.trycloudflare.com
로컬 PC나 외부 UI 툴(예: Open WebUI, Page Assist 등)의 Ollama Base URL 설정 칸에 저 주소를 그대로 붙여넣으시면 Kaggle의 강력한 GPU 인프라를 외부에서 그대로 끌어다 쓸 수 있습니다.
* 장점: Ngrok처럼 계정 생성이 필요 없고 대역폭 제약이 거의 없습니다.
* 단점: 'Quick Tunnel' 특성상 Kaggle 커널을 재시작하면 주소가 매번 무작위로 변경됩니다.
만약 주소가 바뀌는 게 불편하시다면 본인 소유의 개인 도메인을 크라우드플레어에 등록해 두고 고정 주소(영구 터널)를 쓰는 방법도 있습니다. 다만 Kaggle 세션 자체가 최대 12시간이면 만료되므로 임시 주소로 가볍게 쓰시는 것을 가장 추천합니다.


database.py

import os from contextlib import contextmanager # contextmanager 임포트 from typing import Generator from dotenv...