Tabby 팀 서버 구축 2026: 자체 호스팅 코드 완성

발행: (2026년 6월 10일 PM 04:02 GMT+9)
9 분 소요
원문: Dev.to

Source: Dev.to

이 글은 aifoss.dev에 원본이 게시되었습니다.
TL;DR: Tabby v0.32.0은 Apache 2.0 라이선스를 가진 코드 완성 서버입니다 — 네트워크에 GPU가 장착된 한 대의 머신을 두고 모든 개발자가 그 서버에 연결합니다. Ubuntu와 NVIDIA GPU만 준비되어 있다면 전체 팀 배포는 1시간 이내에 끝낼 수 있습니다. 팀 규모가 8~10명에 달하면 자체 호스팅이 비용 면에서 유리합니다.

이 가이드를 따라 하면 얻게 되는 것

  • Docker 안에서 실행되는 Tabby v0.32.0, nginx + Let’s Encrypt TLS를 통해 HTTPS로 노출
  • Tabby 관리 패널에서 관리되는 개발자별 API 토큰
  • VS Code와 JetBrains IDE에서 인라인 완성 및 채팅 기능 연결

솔직한 평가: 전용 GPU 서버가 있는 5~15명 규모 팀이라면 Tabby가 현재 가장 좋은 Copilot 대체제입니다 — 팀 사용을 위해 처음부터 설계된 도구이며, 단일 사용자용 툴을 억지로 변형한 것이 아닙니다. 4명 이하라면 운영 부담이 크므로 Copilot을 유지하는 편이 좋습니다.

시작하기 전에 준비할 것

  • Ubuntu 22.04 LTS 서버 (물리 서버든 VM이든 — GPU 패스스루가 가능한 클라우드 VM도 가능)
  • NVIDIA GPU + 드라이버 ≥ 535 설치
  • Docker Engine와 NVIDIA Container Toolkit
  • 서버 퍼블릭 IP를 가리키는 A 레코드가 설정된 도메인 이름
  • 방화벽/보안 그룹에서 포트 80, 443 열기

팀 규모별 GPU·모델 매칭 (2026년 중반 기준 실사용 예)

GPUVRAM팀 규모권장 모델
RTX 3060 / RTX 307012 GB2–4명Qwen/Qwen2.5‑Coder‑7B
RTX 3090 / 4070 Ti24 GB5–10명Qwen/Qwen2.5‑Coder‑7B + 채팅 모델
RTX 409024 GB10–15명Qwen/Qwen2.5‑Coder‑7B + Qwen2‑7B‑Instruct

아직 전용 GPU 서버가 없나요?

RunPod에서는 월 계약 형태로 전용 NVIDIA 인스턴스를 제공하니, 하드웨어를 구매하기 전 시험 삼아 사용하기에 적합합니다. 영구 서버를 구축하려면 runaihome.com에서 하드웨어 옵션을 확인하세요.

Docker가 설치되지 않은 경우

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

NVIDIA Container Toolkit (GPU 패스스루에 필수)

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/stable/deb/nvidia-container-toolkit.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 nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

GPU 접근 확인:

docker run --rm --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi

nvidia-smi 출력에 GPU가 보이면 준비 완료입니다.

배포 디렉터리와 compose 파일 만들기

sudo mkdir -p /opt/tabby
sudo tee /opt/tabby/docker-compose.yml > /dev/null << 'EOF'
services:
  tabby:
    image: tabbyml/tabby:0.32.0
    command: serve --model Qwen/Qwen2.5-Coder-7B --device cuda --port 8080
    volumes:
      - tabby_data:/data
    ports:
      - "127.0.0.1:8080:8080"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  tabby_data:
EOF

이미지는 latest가 아니라 0.32.0을 고정합니다. Tabby의 모델 API는 마이너 버전 사이에 바뀔 수 있어, 중간에 이미지가 업데이트되면 IDE 플러그인이 깨지는 경우가 있기 때문입니다.

서버 시작

cd /opt/tabby
docker compose up -d
docker compose logs -f tabby

첫 실행 시 모델을 다운로드합니다 — Qwen2.5‑Coder‑7B는 약 4–7 GB 정도입니다. 이후 재시작은 캐시된 볼륨을 사용하므로 30초 이내에 완료됩니다.

로그에 Listening on 0.0.0.0:8080 가 보이면 다음 명령으로 정상 동작을 확인합니다:

curl http://localhost:8080/v1/health
# Expected: {"status":"ok","model":"Qwen/Qwen2.5-Coder-7B"}

nginx와 Certbot 설치

sudo apt-get install -y nginx certbot python3-certbot-nginx

/etc/nginx/sites-available/tabby 파일 만들기

server {
    listen 80;
    server_name tabby.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name tabby.yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/tabby.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tabby.yourdomain.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_pass         http://127.0.0.1:8080;
        proxy_http_version 1.1;

        # Tabby의 answer engine 스트리밍에 필요한 WebSocket
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";

        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 300s;
    }
}

사이트 활성화 및 인증서 발급

sudo ln -s /etc/nginx/sites-available/tabby /etc/nginx/sites-enabled/
sudo nginx -t
sudo certbot --nginx -d tabby.yourdomain.com
sudo systemctl reload nginx

Certbot은 자동 갱신을 위한 systemd 타이머를 설치합니다. 다음 명령으로 정상 동작을 확인하세요:

sudo certbot renew --dry-run

자주 발생하는 문제: nginx를 시작한 직후 502 Bad Gateway 가 뜨면 대부분 Tabby가 아직 모델을 다운로드 중인 경우입니다. docker compose logs tabby 를 보면서 health check가 통과될 때까지 기다리세요.

WebSocket 주의: UpgradeConnection 헤더를 빼면 Tabby 채팅 스트리밍이 조용히 멈춥니다. 기본 완성 기능은 WebSocket에 의존하지 않지만, answer engine은 필요합니다.

초기 설정

브라우저에서 https://tabby.yourdomain.com 에 접속하면 첫 방문 시 관리자 계정을 만들라는 화면이 나옵니다. 최초 등록자가 관리자 권한을 갖게 되며, 이후 사용자는 일반 사용자로 등록됩니다.

관리자 패널 (/admin) 활용

  • Users → Invite: 팀원별 초대 링크 생성. 링크는 1회 사용 후 만료됩니다.
  • Tokens: 각 개발자는 로그인 후 Settings → Tokens 에서 자신의 토큰을 생성합니다. 토큰은 한 번만 복사할 수 있으며, Tabby는 전체 값을 다시 보여주지 않습니다.
  • Admin visibility: 모든 활성 토큰, 소유자, 마지막 사용 시각을 확인할 수 있습니다. 팀원을 떠나게 하면 토큰을 즉시 폐기하세요.

v0.32.0 기준으로 토큰 자동 회전 스케줄은 제공되지 않으니, 팀 운영 매뉴얼에 “토큰은 수동으로 폐기하기 전까지는 만료되지 않는다”는 점을 명시해 두세요.

VS Code에 Tabby 확장 설치

  1. VS Code Marketplace에서 TabbyML 퍼블리셔의 확장 설치
  2. Ctrl+Shift+PTabby: Connect to Server 실행
  3. 서버 URL 입력: https://tabby.yourdomain.com
  4. 프롬프트가 뜨면 토큰 붙여넣기

또는 settings.json에 직접 입력:

{
  "tabby.api.endpoint": "https://tabby.yourdomain.com",
  "tabby.api.token": "your-token-here"
}

VS Code 상태 표시줄에 초록색 Tabby 아이콘이 보이면 연결이 정상적인 것입니다. 회색 아이콘이면 연결에 실패한 것이니 토큰과 서버 URL을 다시 확인하세요.

JetBrains IDE에 Tabby 플러그인 설치

  1. File → Settings → Plugins → Marketplace 에서 Tabby 검색 후 설치, IDE 재시작
  2. File → Settings → Tools → Tabby 로 이동
    • Server endpoint: https://tabby.yourdomain.com 입력
    • Authentication token: 개발자 토큰 붙여넣기

설정이 완료되면 IDE 내에서 인라인 완성과 채팅 기능을 바로 사용할 수 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »