tokios-connector을 런타임 옆에서 실행하면 https://api.tokios.com에 인증된 엔드포인트가 생성되며, 초대한 사람이라면 누구나 이를 이용할 수 있습니다. 인바운드 포트 설정이나 라우터 변경, 서버에 대한 직접적인 접근 권한 공유도 필요하지 않습니다.
홈랩 서버 접근성 문제
홈랩 GPU 서버는 보통 헤드리스 상태로 서재나 랙에 설치되며, LAN에 있는 사용자들을 위해 Ollama, vLLM, llama.cpp 등을 실행합니다. 하지만 이를 외부와 공유하려면 여러 장벽에 부딪히게 됩니다:- 포워딩할 공용 IP가 없음. ISP가 CGNAT를 적용하는 경우, 포트 포워딩 규칙을 적용할 고유한 인바운드 주소 자체가 존재하지 않습니다. 왜 이 설정이 사용자 스스로 변경할 수 없는 라우터 설정인지에 대해서는 CGNAT 환경에서 로컬 LLM 제공하기 문서를 참고하시기 바랍니다.
- 설령 가능하더라도 노출시키고 싶지 않음. 런타임을
0.0.0.0에 바인딩하고 포트를 포워딩하면 GPU 서버가 인터넷 상에 인증 없이 공개되는 서비스가 됩니다. 포트를 알게 된 누구나 요청을 보낼 수 있게 되죠. - 접근 권한 공유는 모든 자원의 공유를 의미함. 팀원에게 Tailscale 노드나 포트 접근 권한을 부여하면 그 사람과 그의 기기에 연결된 모든 요소들이 사용자와 동일한 권한을 갖게 됩니다. 개별 사용자별 인증 키가 없으며, 한 명의 접근만 차단하려 해도 다른 모든 사용자까지 영향을 받게 됩니다.
서버에 설치하기
1
서버에서 런타임들을 실행하세요
평소와 같이 모델 서버를 실행해 주세요. 예를 들어 다음과 같습니다:혹은서버가 기본 루프백 주소에서 수신 대기하도록 둡니다. 그 후 커넥터를 추가하기 전에 서버가 OpenAI 호환
/v1 API에 정상적으로 응답하는지 확인합니다.2
페어링 코드를 획득한 뒤 커넥터를 페어링합니다.
먼저 dashboard를 열고 Setup 탭에서 Start pairing을 선택하면 이미 대시보드로 돌아가서 approve, Setup 또는 Connectors 탭에서 해당 기기를 선택합니다. 커넥터의 API 키(
TKS-XXXX-XXXX 형태의 일회성 페어링 코드(약 15분 동안 유효)를 받을 수 있습니다. 서버에서 다음을 실행합니다:Linux
tokios-connector이 설치되어 있다면 코드를 직접 입력해 주시면 됩니다:ct-tok-…)는 승인 절차가 완료된 뒤 터널을 통해 전달되는데, 사용자는 이를 화면에서 확인하거나 파일에 직접 입력할 수 없습니다.3
커넥터가 업스트림 모델 ID를 가리키도록 설정합니다.
커넥터의 업스트림은 외부에 노출하는 포트가 아니라 서버에서 실행 중인 런타임 자체의 OpenAI 호환 API입니다. 기본 포트: Ollama
11434, llama.cpp 8080, vLLM 8000, LM Studio 1234 — 모두 /v1을 뒤에 붙입니다. Ollama의 경우 /v1 OpenAI 호환 API를 가리키세요. 네이티브 /api가 아닙니다. 인바운드 방화벽 규칙은 필요하지 않습니다. 커넥터는 아웃바운드 연결만 수행합니다.4
각 모델마다 별도의 배포를 등록합니다.
다음으로 Models 탭에서 각 업스트림 모델 ID(예:
llama3.1)를 팀이 사용할 공개 배포 이름(예: homelab-llama)에 매핑하세요. 클라이언트는 모든 요청의 model 필드에 업스트림 ID가 아닌 이 배포 이름을 전송합니다.5
팀원별로 사용 권한이 제한된 API 키를 생성합니다.
마지막으로 Keys 탭에서 팀원이나 앱별로 Create key를 클릭하세요. 각 키의 범위를 특정 배포 이름 패턴(쉼표로 구분된 글롭, 전체는
*)으로 지정하여 팀원이 의도한 모델에만 접근하도록 합니다. 키는 sk-tok-… Bearer 토큰이며 생성 시 한 번만 표시되므로 페이지를 떠나기 전에 복사하세요.여러 모델을 동시에 서비스하기
서버에서 여러 모델을 실행하거나 Ollama, llama.cpp, vLLM에 동시에 트래픽을 분산하는 경우, 단일 업스트림 페어링 방식 대신 커넥터 설정 파일을 사용하세요.tokios-connector.json에서 Routes와 Upstreams을 Connector 섹션 아래에 정의합니다. 백엔드마다 하나의 Upstream을 두고 각각 고유한 BaseUrl(/v1 포함)을 지정한 뒤 --config로 파일을 전달하세요. 같은 엔드포인트 뒤에서 여러 배포를 등록하고 전환하는 방법은 모델 라우팅을 참고하세요.
어디서든 활용 가능
왜 팀 전체에 하나의 엔드포인트만 제공하는가
- 서버 측에 인바운드 포트가 전혀 열리지 않습니다. 커넥터는 오직 아웃바운드 연결만 수행하므로 팀원들은 VPN 피어링, SSH 터널, 혹은 특정
0.0.0.0포트 설정 없이도 서버에 접근할 수 있습니다. 이는 CGNAT 환경에서도 마찬가지입니다. - 특정 팀원의 API 키만 취소해도 다른 이들에게는 영향이 없습니다. 각 사용자마다 고유한
sk-tok-…키가 부여되므로 Keys 탭에서 특정 키를 비활성화하거나 삭제하면 해당 사용자만 즉시 접근이 차단되며 나머지 사용자들은 정상적으로 서비스를 이용할 수 있습니다. - 클라이언트 설정을 수정하지 않고도 모델을 교체할 수 있습니다. 배포 이름을 다른 업스트림 모델이나 백엔드로 지정해도
homelab-llama을 대상으로 설정된 모든 팀원 및 스크립트는 별다른 변경 없이 계속 작동합니다.
다음 단계
빠른 시작
아무런 사전 지식 없이도 커넥터, 배포 환경, API 키를 순서대로 설정할 수 있습니다.
CGNAT 뒤에서 작동하는 LLM
가정용 인터넷 서비스 제공업체 환경에서 포트 포워딩이 실패하는 이유와 커넥터가 이 문제를 어떻게 우회하는지 설명합니다.
커넥터 설정 관련 참고 자료
하나의 서버에서
tokios-connector.json으로 여러 모델을 제공합니다.모델 라우팅 방법
하나의 엔드포인트 뒤에 여러 배포 환경을 등록하고 전환하는 방법입니다.