Clash의 핵심은 헤드리스 커맨드라인 프로세스이지만, 외부 도구가 HTTP를 통해 실시간으로 상태를 쿼리하고, 노드를 전환하고, 설정을 업데이트할 수 있는 완전한 RESTful API가 내장되어 있습니다. 대시보드는 이 API 위에 구축된 웹 프론트엔드로, Clash를 재시작하지 않고도 거의 완전한 제어를 제공합니다. 이 가이드는 API 설정부터 완전한 시각적 관리 환경 구축까지 안내합니다.
외부 컨트롤러 활성화
Clash의 API 서버는 external-controller 필드로 활성화됩니다. config.yaml에 다음을 추가하세요:
# Clash 외부 컨트롤러 설정 external-controller: 127.0.0.1:9090 # 로컬 접근만 허용 (권장) secret: your-api-secret # Bearer 토큰 인증; 비워두면 비활성화 external-ui: ui # 대시보드 정적 파일 (Clash 홈 기준 상대경로) external-ui-url: https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip
external-controller를 127.0.0.1에 바인딩하면 API 접근이 로컬 머신으로만 제한됩니다. LAN의 다른 기기에서 접근이 필요한 경우(예: 스마트폰에서 라우터의 Clash 관리) 0.0.0.0:9090으로 변경할 수 있지만, 무단 LAN 접근을 방지하기 위해 항상 강력한 secret을 설정하세요.
대시보드 옵션 비교
| 이름 | 특성 | 주요 기능 |
|---|---|---|
| Yacd | 경량 클래식 | 깔끔한 UI, 최소 리소스 사용, 핵심 기능 커버. 시작하기에 좋음. |
| Yacd-meta | Mihomo 강화 Yacd | Yacd에 프로바이더 관리, 연결 상세 등 Mihomo 전용 기능 추가. |
| Metacubexd | 완전 기능, 현대적 UI | 완전한 Mihomo API 지원. 실시간 트래픽 그래프, 규칙 세트 업데이트, 연결 추적. 권장. |
| Zashboard | 미니멀리스트 | 노드 전환만 필요한 사용자를 위한 매우 간단한 인터페이스. |
Metacubexd 설정 (권장)
Metacubexd는 가장 완전한 기능을 갖춘 대시보드입니다. 로컬 설치 없이 사용할 수 있는 공식 CDN 호스팅 버전을 제공합니다.
방법 1: CDN 호스팅 버전 직접 사용
브라우저에서 https://metacubex.github.io/metacubexd/에 접속한 후 입력:
- 백엔드 주소:
http://127.0.0.1:9090 - 시크릿:
config.yaml에서 설정한secret값
방법 2: 로컬 설치 (오프라인)
Mihomo 홈 디렉토리에 ui/ 폴더를 만들고 Metacubexd의 gh-pages 브랜치를 그 안에 압축 해제합니다. Clash 시작 후 http://127.0.0.1:9090/ui/에 접속하면 로컬 호스팅 대시보드를 이용할 수 있습니다.
external-ui-url을 설정하면 Mihomo가 첫 실행 시 자동으로 대시보드 파일을 다운로드하고 압축 해제합니다. 수동 설치가 필요 없습니다. 나중에 대시보드의 "업데이트 확인" 버튼으로 업데이트할 수도 있습니다.대시보드 핵심 기능
프록시 노드 관리
프록시 페이지에는 모든 프록시 그룹과 노드가 카드로 표시됩니다. 그룹 내 노드를 클릭하면 즉시 전환됩니다. Clash 재시작 불필요. 레이턴시 값 옆의 색상 표시기(녹색/노란색/빨간색)로 노드 건강 상태를 한눈에 확인할 수 있습니다.
실시간 연결 모니터링
연결 페이지는 최고의 디버깅 도구입니다. 모든 활성 연결에는 목적지 도메인/IP, 매칭된 규칙(어느 규칙 세트에서), 사용된 프록시 그룹, 전송 바이트, 연결 시간이 표시됩니다. 앱이 잘못된 경로를 취하면(예: 직접 연결해야 할 것이 프록시됨) 즉시 여기서 확인할 수 있습니다.
규칙 세트 및 프로바이더 관리
Mihomo의 대시보드에서 로드된 모든 규칙 세트(Rule Provider)를 보고, 마지막 업데이트 시간을 확인하고, 재시작 없이 수동으로 새로고침을 트리거할 수 있습니다. 프록시 프로바이더도 마찬가지로 설정 파일을 변경하지 않고 구독 노드 목록을 업데이트할 수 있습니다.
# "proxy-list"라는 규칙 세트의 업데이트 트리거 curl -X PUT http://127.0.0.1:9090/providers/rules/proxy-list -H "Authorization: Bearer your-api-secret" # 프록시 구독 업데이트 트리거 curl -X PUT http://127.0.0.1:9090/providers/proxies/my-subscription -H "Authorization: Bearer your-api-secret"
API를 활용한 자동화
Clash RESTful API는 대시보드가 노출하는 것을 훨씬 넘어섭니다. 스크립트로 강력한 자동화를 구축할 수 있습니다:
# 모든 프록시 노드 상태 가져오기 GET /proxies # 프록시 그룹을 특정 노드로 전환 PUT /proxies/{group-name} Body: {"name": "node-name"} # 실시간 트래픽 통계 (WebSocket) GET /traffic # 라이브 로그 스트림 (WebSocket) GET /logs?level=info # 설정 파일 핫 리로드 PUT /configs?force=false Body: {"path": "/path/to/config.yaml"}
external-controller를 공개 IP(예: 0.0.0.0)에 바인딩하고 secret을 설정하지 않으면 누구든지 Clash 인스턴스를 제어할 수 있습니다. 항상 secret을 설정하고 로컬호스트를 넘어 API를 노출하는 경우 방화벽 규칙을 고려하세요.