맥미니 홈서버를 운영하다 보면 외부에서 접근해야 할 상황이 생깁니다. 기존에는 공유기에서 포트를 열고 DDNS로 도메인과 연결하는 방식을 사용했는데, 관리 포인트가 많고 포트를 외부에 노출한다는 점이 늘 불편했습니다. Tailscale을 도입하면서 이 문제가 깔끔하게 해결됐습니다.
Tailscale이란?
Tailscale은 WireGuard 기반의 메시 VPN 서비스입니다. 설치된 디바이스끼리 100번대 가상 IP(예: 100.x.x.x)로 서로 통신할 수 있는 가상 네트워크를 만들어줍니다. 공유기 포트포워딩이 필요 없고, 고정 IP나 DDNS도 필요 없습니다. NAT 뒤에 있어도 알아서 연결됩니다.
개인 사용자는 최대 3대까지 무료로 사용할 수 있어서 맥미니 홈서버 + 노트북 + 스마트폰 조합으로 충분히 커버됩니다.
설치 및 연결
맥미니와 접근할 디바이스(노트북, 스마트폰 등) 각각에 Tailscale을 설치하고 같은 계정으로 로그인하면 끝입니다. 복잡한 설정 없이 자동으로 서로를 인식하고 100번대 가상 IP를 부여합니다.
# macOS에 Tailscale 설치 (Homebrew)
brew install --cask tailscale
# 또는 앱스토어에서 설치 후 로그인
tailscale up
설치 후 tailscale status로 연결된 디바이스 목록과 가상 IP를 확인할 수 있습니다.
서비스 접근 구성
기존에 공유기 포트포워딩으로 열어두던 서비스들을 Tailscale 가상 IP 기반으로 전환했습니다. 외부에서 접근이 필요한 서비스는 Tailscale을 통해서만 접근하도록 구성했습니다.
# Tailscale 가상 IP로 서비스 접근 예시
http://100.x.x.x:8090 → Jenkins
http://100.x.x.x:8080 → 내부 관리 API
http://100.x.x.x:9999 → Dozzle (컨테이너 모니터링)
이 주소들은 Tailscale 네트워크에 연결된 내 디바이스에서만 접근 가능합니다. 공유기 포트를 열지 않았으니 외부에서는 아예 보이지 않습니다.
Dozzle — Docker 컨테이너 모니터링
Dozzle은 Docker 컨테이너 로그를 브라우저에서 실시간으로 볼 수 있는 가벼운 모니터링 툴입니다. 배포 후 로그 확인이나 이슈 발생 시 빠르게 컨테이너 상태를 파악할 수 있어서 유용합니다.
# dozzle/docker-compose.yml
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9999:8080"
Dozzle은 인증 기능이 기본적으로 없기 때문에 외부에 노출하면 위험합니다. Tailscale 가상 IP(100.x.x.x:9999)로만 접근하도록 구성하면 내 디바이스 외에는 접근이 불가능해서 안전하게 운영할 수 있습니다.
Jenkins도 Tailscale로
Jenkins도 마찬가지입니다. 기존에는 Nginx로 /jenkins 경로를 열어두고 GitHub 웹훅을 받았는데, Tailscale로 전환하면서 구성이 단순해졌습니다. GitHub 웹훅은 공개 URL이 필요하므로 해당 엔드포인트만 Nginx로 열어두고, Jenkins 관리 UI는 Tailscale을 통해서만 접근합니다.
Tailscale 도입 전후 비교
| 항목 | 기존 (포트포워딩) | Tailscale 도입 후 |
|---|---|---|
| 공유기 포트 개방 | 80, 443, 필요한 포트마다 설정 | 불필요 |
| 외부 IP 관리 | DDNS 스크립트 필요 | 불필요 |
| 관리 도구 접근 | Nginx 인증 설정 필요 | Tailscale 가상 IP로만 접근 |
| 보안 | 포트 노출, Nginx 설정에 의존 | WireGuard 암호화, 디바이스 인증 |
부록 — Exit Node로 해외에서 한국 망 사용하기
Tailscale에는 Exit Node라는 기능이 있습니다. 특정 디바이스를 exit node로 지정하면 모든 인터넷 트래픽이 그 디바이스를 거쳐 나가게 됩니다. 맥미니를 exit node로 설정해두면 해외에서 노트북이나 스마트폰의 트래픽을 맥미니(한국 망)를 통해 내보낼 수 있습니다.
# 맥미니에서 exit node 활성화
tailscale up --advertise-exit-node
# 클라이언트(노트북 등)에서 exit node 사용 설정
# Tailscale 앱 → Exit Node → 맥미니 선택
이렇게 하면 해외에서도 한국 IP로 인터넷을 사용하게 됩니다. 한국 IP 기반으로 서비스하는 OTT나 지역 제한 서비스를 이용할 수 있다는 부가 효과가 있습니다. 다만 각 서비스의 이용약관에서 VPN 사용을 제한하는 경우가 있으므로 참고하세요.
트래픽이 맥미니를 경유하기 때문에 홈 인터넷 업로드 속도가 병목이 됩니다. 영상 스트리밍 등 대역폭이 필요한 경우 업로드 속도를 감안해서 사용하면 됩니다.