본문으로 건너뛰기

Ollama-gateway: Ollama 서버 앞에 두는 셀프호스티드 인증·쿼터·포워딩 게이트웨이

Ollama 인스턴스 앞에 배치해 해시된 API 키·원본 제한·쿼터·다중 업스트림·모델 허용목록을 제공하는 자체 호스트 게이트웨이 프로젝트이다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

Ollama 기본 인스턴스가 인증을 제공하지 않아 무단 GPU 사용 위험이 존재하자 작성자는 해시된 API 키, IP/CIDR 원본 제한, 키별 월별 토큰·속도 제한, 비용 상한 트라이얼, 키별 업스트림 매핑과 자동 폴백, 모델·API 허용목록, 요청 로그와 시계열 모니터링, LAN 전용 서버사이드 관리자 패널, Caddy의 ACME DNS-01 기반 TLS, 원격 토큰 암호화와 사전 배포 보안 점검을 포함한 자체 호스트 게이트웨이를 개발했다. 이 게이트웨이는 FastAPI와 SQLite를 스택으로 사용하고 Docker로 배포되며 소스-가용 라이선스를 적용해 월 합산 10억 토큰 이하에서는 무료로 수정·상업적 사용이 허용되지만 초과 시 단일 설치당 €29 상업 라이선스가 요구된다. 텔레메트리가 없고 라이선스 준수는 명예 시스템에 기반하므로 대규모 운영을 계획할 경우 법적·운영적 검토와 추가 관리 절차가 필요하다.

실용적 조언

  • 공개 호스팅 환경에서는 Caddy의 ACME DNS-01 방식을 사용해 TLS를 구성하면 인바운드 포트를 열지 않고도 인증서를 자동 발급받을 수 있으므로 방화벽 규칙을 최소화한 채 안전한 통신을 유지할 수 있다.
  • 키 관리 시 키를 해시로 저장하고 표시를 최소화하며 IP/CIDR 기반 원본 제한을 병행하면 키 유출 시 피해 반경을 줄이는 데 효과적이므로 멀티테넌트 환경에서 우선 적용할 것을 권장한다.
  • 업스트림 장애를 대비해 각 키를 특정 업스트림에 매핑하고 실패 시 자동 폴백 로직을 구현하면 가용성을 높이면서 비용과 자원 할당을 보다 세밀하게 제어할 수 있다.

섹션별 상세

01
Ollama가 기본적으로 인증을 제공하지 않아 누구나 접근하면 GPU를 소모할 수 있다는 문제가 제기되었으며 이를 해결하기 위해 게시물 작성자는 nginx를 임시로 사용하던 과정에서 자체 게이트웨이를 개발했다. 이 게이트웨이는 클라이언트별 API 키를 해시로 저장하고 키는 한 번만 표시되며 폐지 가능하도록 구현되어 있다. 키 발급 시 IP/CIDR 기반의 원본 제한을 설정해 키 도용 시 유효 범위를 줄이는 구조를 제공한다. 이러한 접근 방식은 공개 네트워크에 노출된 Ollama 인스턴스의 무단 이용을 기술적으로 차단하는 수단으로 제시되었다.
02
요금·사용 제어를 위해 이 프로젝트는 월별 토큰 상한과 속도 제한을 키별로 적용하고 비용 상한이 있는 'lifetime' 트라이얼을 제공한다. 내부 로직은 요청을 받아 키의 남은 토큰과 현재 속도를 확인한 뒤 허용여부를 결정하는 방식으로 동작하며 쿼터와 비용 상한을 초과하면 요청을 차단한다. 게시물에는 라이선스 차원에서 총합 10억 토큰 제한과 초과 시 상업 라이선스를 적용하는 정책이 명시되어 있어 기술적 제어와 상업적 문턱이 함께 존재함이 드러났다. 이 구조는 비용 통제와 남용 방지라는 운영 목적을 동시에 달성하도록 설계되었다.
03
여러 업스트림 서버를 구성하고 키마다 특정 서버에 매핑하며 장애 발생 시 자동으로 폴백하는 기능이 구현되어 있다. 이 매핑은 요청 수신 후 키에 연결된 업스트림으로 요청을 전달하고 실패 응답을 받으면 지정된 대체 서버로 재시도하는 흐름으로 작동한다. 또한 키별로 모델·API 허용목록을 관리하여 네이티브 Ollama 엔드포인트뿐만 아니라 OpenAI 호환 및 Anthropic 호환 엔드포인트에 대해 일괄적으로 정책을 적용할 수 있다. 이러한 라우팅과 허용목록은 멀티테넌시와 정책 일관성 유지를 목적으로 한다.
04
보안·프라이버시 측면에서 클라이언트 키는 업스트림으로 전달되기 전에 제거되며 원격 토큰은 저장 시 암호화된다. TLS 인증서는 Caddy와 ACME DNS-01을 통해 발급해 인바운드 포트를 열지 않는 방식으로 설정되어 외부 포트 노출을 최소화하도록 설계되었다. 배포 스크립트는 사전 보안 점검을 포함해 시크릿 노출, 공개된 CVE, 정적 분석 결과, 테스트를 확인하는 파이프라인을 실행하도록 연결되어 있어 배포 전 자동 검증을 수행한다. 이 일련의 조치는 서비스 운영 중 비밀 유출과 인증 우회 위험을 현저히 낮추는 데 기여한다.
05
프로젝트의 라이선스와 지속가능성 모델은 소스-가용(source-available)으로 무료 수정·상업적 자체호스트가 허용되지만 모든 인스턴스 합산 트래픽이 월 10억 토큰을 초과하면 단일 설치당 €29의 상업 라이선스를 요구한다는 정책을 포함한다. 프로젝트는 텔레메트리나 폰홈이 없으며 트래픽 기준은 명예 시스템(honor system)에 의존한다고 명시되어 있어 사용자의 자발적 준수가 전제되어 있다. 이 라이선스 설계는 자유로운 실험을 허용하는 동시에 고사용량에서 수익을 확보하려는 상업적 균형을 의도적으로 반영한다. 라이선스 조건은 오픈 소스와 완전히 일치하지 않으므로 대규모 배포 시 법적·운영적 고려가 필요하다.

이미지 분석

관리자 로그인 화면의 스크린샷으로 LAN 전용 관리자 패널과 간단한 인증 입력 인터페이스를 시각적으로 보여준다.
Screenshot

이미지는 서버 렌더링된 관리자 패널의 로그인 화면을 캡처하여 외부 빌드 없는 관리 UI라는 구현 결정을 확인하게 한다. 화면 구성은 좌측에 프로젝트 브랜딩과 우측에 비밀번호 입력 필드로 구성되어 있어 관리자 접근이 LAN 내부로 제한된다는 문서상의 설명과 일치한다. 이 스크린샷은 웹 기반 관리 패널의 룩앤필과 인증 흐름의 초기 단계를 보여주는 증거로서 유용하다.

관리자 로그인 화면의 스크린샷으로 LAN 전용 관리자 패널과 간단한 인증 입력 인터페이스를 시각적으로 보여준다.

용어 해설

API 키(API Key)
서비스 접근을 제어하기 위해 발급되는 비밀 문자열로서 게시물에서는 각 클라이언트별로 해시 저장, 한 번만 표시, 폐기 가능하도록 관리하여 직접 서버 인증을 대신하는 접근 제어 수단으로 사용된다.
ACME DNS-01
인증서 자동발급을 위해 도메인 소유권을 DNS 레코드로 증명하는 방식으로서 게시물에서는 Caddy를 통해 인바운드 포트를 열지 않고 TLS 인증서를 발급하기 위한 무포트(포트 미노출) 방식으로 활용된다.
요청률 제한(Rate Limiting)
단위 시간당 허용되는 요청 수를 제한하는 기법으로서 게시물에서는 키별로 초당/분당 제한을 걸어 과금·자원 고갈과 DoS 위험을 줄이는 방어층으로 구현되었다.
저장 암호화(Encryption at Rest)
디스크나 데이터베이스에 저장된 비밀값을 암호화하는 처리를 의미하며 게시물에서는 원격 토큰을 암호화해 보관함으로써 탈취 시에도 직접 사용을 막는 보안 조치로 적용되었다.
정적 보안 검사(SAST)(SAST)
소스코드를 실행하지 않고 취약점·비밀 유출을 탐지하는 정적 분석 기법으로서 배포 스크립트에 통합되어 배포 전 잠재적 시크릿·CVE·안전성 이슈를 자동으로 검사하는 파이프라인 역할을 한다.

언급된 도구

FastAPI추천

백엔드 API 프레임워크

Caddy추천

TLS 자동발급 및 리버스 프록시

Playwright중립

E2E 테스트

SQLite중립

경량 데이터 저장소

Docker추천

컨테이너 배포

Jinja중립

서버사이드 템플릿 렌더링(관리 패널)

nginx중립

대체 프록시/임시 보호 수단

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 07. 20.수집 2026. 07. 20.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.