학교 워크스테이션으로 원격 AI 개발 환경 구축하기 (OpenClaw + Tailscale)

도현·2일 전

productivity

목록 보기
2/2
post-thumbnail

1. 개꿀 ㅋㅋ

이 세팅의 시작은 3학년에 새롭게 수강을 시작한 과목인 "인공지능실무" 과목에서 전달된 반가운 공지에서 비롯되었습니다. 실습을 위해 학생들에게 우분투 워크스테이션을 한 학기 동안 대여해준다는 내용이었죠.

사양을 확인해 보니 Intel Xeon Silver 4208(8코어 16스레드), RAM 78GB, NVIDIA Quadro RTX 5000, 1TB급 디스크 2개와 500GB 시스템 디스크 등 학생 개인 작업용으로는 과분할 만큼 훌륭한 스펙이었습니다.

이 엄청난 자원을 단순히 학교 실습실에서만 쓰는 것은 아깝다는 생각이 들었습니다. 제 메인 작업 기기인 맥북에서 언제 어디서든 이 워크스테이션에 원격으로 접속해, Docker 기반의 OpenClaw를 자유롭게 활용하는 파이프라인을 구축하게 되었습니다.

2. 전체 아키텍처 개요

원격 접속 및 제어의 전체 데이터 플로우는 다음과 같습니다.

맥북(외부 네트워크) → Tailscale(가상 네트워크) → 우분투 데스크탑(SSH 터널링) ↔ OpenClaw(Docker)

  1. 네트워크 연결: 맥북과 우분투 데스크톱를 Tailscale로 묶어 동일한 가상 네트워크 대역에 위치시킵니다.
  2. 보안 컨텍스트 확보: SSH 로컬 포트 포워딩을 통해 원격지의 18789 포트를 맥북의 로컬호스트로 터널링합니다.
  3. 인증 및 접속: CLI를 통해 발급받은 토큰과 디바이스 페어링 절차를 거쳐 OpenClaw Control UI에 접근합니다.

결과적으로 "어느 네트워크 환경에 있든, 맥북에서 안전하게 학교 컴퓨터의 OpenClaw 환경을 제어하는 구조"가 완성됩니다.

3. 네트워크 문제: Tailscale을 통한 가상 네트워크 구성

가장 먼저 부딪힌 문제는 '네트워크의 분리'였습니다. 맥북은 집이나 카페의 Wi-Fi를 사용하고, 우분투 데스크톱은 학교의 내부망에 물려 있어 직접적인 SSH 접속이 불가능한 상태였습니다.

그래서 Tailscale을 활용해 두 기기를 물리적 위치에 상관없이 하나의 가상 네트워크로 묶어주었습니다.

  • 맥북 측 (Client): CLI를 통해 설치하고 로그인하여 100.x.x.x 대역의 IP를 할당받습니다.
  • 우분투 측 (Server): 동일하게 Tailscale을 설치하고 같은 tailnet에 연결합니다.

이제 맥북에서 우분투가 할당받은 Tailscale IP를 향해 안정적으로 SSH 접속이 가능해졌습니다.

4. 웹 UI 접속: Secure Context와 포트 포워딩

SSH 접속에 성공한 뒤, 브라우저에서 http://우분투의_Tailscale_IP:18789로 접속해 보았지만 다음과 같은 에러가 발생했습니다.

control ui requires device identity (use HTTPS or localhost secure context)

OpenClaw Control UI는 보안상의 이유로 HTTPS 통신이나 로컬호스트(localhost) 환경만을 신뢰합니다. 원격 IP로 단순 접근하면 브라우저가 Device Identity를 생성할 수 없어 차단되는 것이죠.

이 문제는 SSH 로컬 포트 포워딩으로 해결했습니다. 맥북 터미널에서 아래와 같이 터널을 생성합니다.

ssh -L 18789:127.0.0.1:18789 사용자명@우분투의_Tailscale_IP

이 세션을 유지한 채 브라우저에서 http://127.0.0.1:18789/로 접속하면, 브라우저 입장에서는 로컬 접속이므로 Secure Context 요구사항을 완벽하게 충족하게 됩니다.

5. 인증 및 디바이스 페어링

보안 컨텍스트 문제를 넘고 나면 이번엔 gateway token missing 권한 오류가 뜹니다. 우분투 환경의 컨테이너 내부에서 토큰을 확인하고 기기 승인을 진행해야 합니다.

  • 토큰 확인: 우분투 쉘에서 아래 명령어를 실행하면 토큰이 포함된 URL(http://127.0.0.1:18789/#token=...)이 출력됩니다. 이를 그대로 브라우저에서 열어줍니다.
docker compose run --rm openclaw-cli dashboard --no-open
  • 디바이스 페어링 승인: 브라우저에서 접속을 시도하면 Pending 상태가 됩니다. 다시 터미널에서 요청 목록을 확인하고 승인합니다. (이때 '토큰'이 아닌 'Request ID'를 입력해야 합니다.)
docker compose run --rm openclaw-cli devices list
docker compose run --rm openclaw-cli devices approve <requestId>

6. 개인 AI 비서 완성

이 워크플로우를 구축한 뒤로, 훌륭한 학교 인프라를 마치 제 개인 서버처럼 편안하게 활용할 수 있게 되었습니다.

현재는 가볍게 Codex 5.3 모델 위주로 OpenClaw를 세팅해 두고, Discord Bot과 연동하여 과제를 효율적으로 처리하는 데 유용하게 쓰고 있습니다. (개꿀 ㅋㅋ)

하지만 RTX 5000과 78GB RAM이라는 든든한 스펙과 CUDA 환경이 갖춰져 있는 만큼, 추후에는 다양한 로컬 LLM 모델들을 직접 올려보며 본격적인 실험용으로도 활용해 볼 계획입니다.

처음 환경을 세팅할 때는 네트워크 터널링이나 보안 인증 같은 요소들이 복잡하게 느껴질 수 있지만, 한 번 구축해 두면 강력한 자원을 장소에 구애받지 않고 다룰 수 있습니다. 여러분도 유휴 자원이 있다면 자신만의 '개인 AI 비서'를 한번 구축해 보시길 추천합니다.

profile
FE-Engineer

0개의 댓글