튜토리얼 2026-04-30 · 약 22분

공항 원격 구독자가 VPS 노드를 한 설정에: Clash Meta mixin으로 YAML 병합하기

공항 구독만으로는 부족하고, 집에 둔 VPS나 회사 서버에 올린 Shadowsocks·VLess 같은 노드를 같은 클라이언트에서 쓰고 싶은 경우가 많습니다. 그런데 구독 링크에서 내려오는 YAML 안에 손으로 proxies: 블록을 끼워 넣으면, 다음 구독 갱신 때 그 수정이 통째로 사라집니다. 반대로 구독만 새로 받은 뒤 다른 파일에 노드를 적어 두고 서로 다른 프로필로 갈아타면 매번 선택이 귀찮고, 실수로 한쪽 설정만 고치는 일도 생깁니다. Clash Meta(mihomo) 계열이 제공하는 mixin 패치 레이어를 쓰면, 원격 구독은 업스트림 스냅샷으로 두고 수동 노드·추가 정책 그룹만 로컬 YAML에 모아 한 런타임 구성으로 합칠 수 있습니다. 이 글은 다중 소스 노드 공존에 초점을 맞춰, 이름 충돌·들여쓰기·리스트 병합을 피하는 실무 순서로 정리합니다. 규칙만 덮어쓰는 패턴은 《mixin으로 원격 구독 규칙 덮어쓰기》와 짝을 이룹니다.

무엇을 해결하나: 두 종류의 노드 소스

공항 원격 구독은 노드 목록·기본 그룹·기본 규칙을 한 번에 채워 줍니다. 자가 VPS는 그 리스트에 없으므로, 사용자가 직접 서버 주소·포트·암호·플러그인 옵션을 알고 있습니다. 목표는 다음과 같습니다.

  • 구독을 새로고침해도 VPS 노드 정의가 날아가지 않을 것.
  • 최종 화면에서 공항 그룹과 자가 노드를 한 선택기에서 고를 수 있을 것(또는 전용 그룹으로 분리 가능).
  • YAML 문법이 깨지지 않을 것—공백 두 칸 규칙, 리스트 대시 위치, 잘못된 탭 혼입을 피할 것.

이를 위해 구독으로 받은 파일은 읽기 전용 캐시로 취급하고, 손이 가는 내용은 전부 mixin.yaml(또는 클라이언트가 지정한 동일 역할 파일)에만 둡니다.

하지 말아야 할 것: 구독 캐시 직접 편집

GUI에서 구독을 가져온 뒤 에디터로 연 풀린 설정 파일proxies:를 붙여 넣으면, 첫 갱신 이후에도 잠시는 보일 수 있습니다. 그러나 자동 갱신이 켜져 있으면 그 파일은 서버가 준 최신본으로 덮어씌워지는 대상입니다. “한 번만 저장하면 되지 않나?”라는 생각은 운영 중 어느 날 밤 갱신 타이밍에 깨집니다.

덮어쓰기와 충돌

구독 본문에서 이미 쓰는 프록시 이름과 똑같은 이름으로 VPS를 정의하면, 병합 결과가 단일 노드로 합쳐지거나 기동 오류가 날 수 있습니다. 자가 노드에는 접두사(예: HOME-, VPS-)를 붙이는 습관이 안전합니다.

멘탈 모델: 베이스 + mixin

런타임에서 코어가 읽는 최종 그래프는 보통 원격에서 받은 베이스로컬 mixin을 얹은 형태입니다. proxies 리스트는 항목이 이름으로 식별되는 경우가 많으므로, mixin 쪽에 추가한 각 항목의 name:이 베이스와 겹치지 않게 하는 것이 첫 번째 안전장치입니다.

proxy-groups에서 proxies: 아래에 오는 문자열은 “이름 참조”입니다. 즉, 공항이 이미 정의한 香港 A 같은 노드 이름과, mixin에서 새로 만든 VPS-TOKYO한 그룹의 목록에 나란히 적을 수 있습니다. 기존 그룹 이름을 재정의해서 덮어쓰면 병합 동작이 직관과 어긋날 수 있으므로, 실무에서는 새 그룹 이름을 만들고 공항 그룹·노드 이름을 참조만 하는 편이 예측 가능합니다.

Subconverter와의 차이

Subconverter로 한 URL에서 나오는 단일 YAML을 만드는 방식은 “서버 측에서 미리 합친 결과”를 받습니다. 반면 mixin은 클라이언트가 로컬에서 매번 합성합니다. 이미 Clash 형식 구독을 쓰는 경우 mixin이 편한 경우가 많고, 프로바이더별 전처리가 필요하면 《Subconverter·Meta 가져오기》와 병행해 선택하면 됩니다.

들여쓰기·리스트: 쓰기 전에 정리할 것

Clash 설정은 YAML입니다. 에디터에서 탭과 스페이스를 섞거나, 대시(-)의 들여쓰기 단계를 한 칸만 틀려도 파서가 전체를 거부합니다.

  • 한 단계마다 스페이스 2칸을 권장합니다(프로젝트·팀 규칙이 있으면 그에 맞추되, 한 파일 안에서는 통일).
  • 리스트 항목은 - 다음에 키가 오는 형태를 유지합니다.
  • 복잡한 노드 한 덩어리를 붙여 넣은 뒤에는, 상위 키(proxies:, proxy-groups:)와의 계층이 끊기지 않았는지 눈으로 한 번 더 따라가며 봅니다.

mixin 파일 안에는 주석을 달아 두기 좋습니다. 병합 과정에서 클라이언트가 다시 직렬화할 때 주석이 사라질 수 있다는 점은 기존 mixin 글의 FAQ와 같습니다.

1단계: 자가 노드 이름 네임스페이스 잡기

구독에서 오는 노드 이름을 전부 외울 수는 없으므로, 자가 쪽은 접두사 규칙으로 고정합니다. 예: VPS-, HOME-, LAB-. 이렇게 하면 나중에 그룹에 나열할 때도 검색·필터가 쉽습니다.

공항이 갱신으로 노드 이름을 바꿔도, 당신이 mixin에서 쓰는 접두사 브랜드는 그대로이므로 “어느 것이 내 서버인지”가 헷갈릴 일이 줄어듭니다.

2단계: mixin에 proxies: 블록 추가

VPS 정보를 그대로 수동 프록시 항목으로 적습니다. 타입(ss, vmess, vless, trojan 등)과 필수 필드는 서버 설계에 맞춥니다. 아래는 형태를 보여 주는 예시이며, 실제 값은 반드시 본인 환경으로 교체해야 합니다.

# mixin.yaml (illustrative) — replace with your real server parameters
proxies:
  - name: "VPS-TOKYO-01"
    type: ss
    server: 203.0.113.10
    port: 8388
    cipher: aes-256-gcm
    password: "YOUR_SECRET"

  - name: "VPS-FRANKFURT-01"
    type: vless
    server: 198.51.100.20
    port: 443
    uuid: 00000000-0000-4000-8000-000000000000
    tls: true
    skip-cert-verify: false
    servername: example.com

플러그인·UDP·TLS 옵션 등은 코어 문서와 서버 구성에 맞춰야 합니다. “구독에 있는 것과 같은 필드만” 복사해 오는 방식이 가장 안전합니다.

3단계: proxy-groups로 공항과 묶기

공항이 만든 🚀 선택, PROXY 같은 그룹 이름을 mixin에서 다시 정의하지 말고, 새 이름으로 그룹을 만든 뒤 proxies: 목록에 공항 노드·그룹 이름과 자가 노드 이름을 함께 넣습니다.

# mixin.yaml (illustrative) — use names that exist after merge
proxy-groups:
  - name: "MY-COMBINED"
    type: select
    proxies:
      - "VPS-TOKYO-01"
      - "VPS-FRANKFURT-01"
      - "DIRECT"
      # Reference an existing group from the airport profile by exact name:
      - "PROXY"

  - name: "WORK-ONLY-VPS"
    type: select
    proxies:
      - "VPS-TOKYO-01"
      - "DIRECT"

복사 시 흔한 오타

웹 브라우저에서 예시를 복사할 때 보이지 않는 문자나 잘못된 콜론이 섞이면 YAML이 깨집니다. proxies:처럼 ASCII 콜론 한 글자만 쓰고, 항상 순수 텍스트 에디터에서 최종본을 저장하세요.

자동 선택·지연 측정 그룹(url-test 등)을 쓰려면 파라미터는 《url-test·fallback·lazy》를 참고합니다. “공항 그룹 + 자가 노드”를 한 url-test 풀에 넣을지, 분리할지는 회선 품질에 따라 결정합니다.

4단계: 규칙에서 새 그룹 쓰기(선택)

노드만 합치고 기본 규칙은 공항에 맡겨도 됩니다. 특정 사이트만 항상 VPS로 보내고 싶다면, rules: 상단에 좁은 행을 추가하고 마지막 타깃을 MY-COMBINED 같은 mixin 그룹 이름으로 둡니다. 규칙은 위에서 아래로 첫 매칭에서 멈추므로, 세밀한 행은 넓은 GEOIPMATCH보다 에 있어야 합니다. 규칙 병합 전략·우선순위는 mixin 규칙 전용 글과 동일한 논리입니다.

5단계: 병합 결과 확인과 구독 갱신 테스트

  1. 클라이언트의 실행 중 설정 보기(또는 API로 덤프된 YAML)에서 VPS- 노드가 목록에 있는지 확인합니다.
  2. UI에서 MY-COMBINED를 열어 공항 쪽 이름과 자가 이름이 한 목록에 보이는지 봅니다.
  3. 구독 새로고침 후에도 동일한지 다시 확인합니다. 사라졌다면 mixin 경로가 비어 있거나 다른 프로필을 보고 있는 경우가 많습니다.
  4. 연결 로그로 실제 트래픽이 기대한 노드로 나가는지 한두 도메인만 찍어 봅니다.

한 번에 규칙·DNS·스니펫까지 모두 바꾸면 원인 추적이 어렵습니다. 먼저 proxies·그룹만 mixin에 넣고 구독 갱신을 반복해 보세요.

proxy-providers와 수동 proxies 동시 사용

일부 고급 구성에서는 원격 노드 묶음을 proxy-providers로 가져오면서, 예외적으로 몇 개만 proxies:에 직접 적기도 합니다. 원칙은 같습니다: 이름 충돌 금지, 그룹에서는 참조 문자열만 나열, 구독이 갱신되는 파일과 로컬 패치 파일을 경로상 분리.

FAQ

공항 그룹 이름을 모를 때

병합된 설정에서 proxy-groups를 펼쳐 실제 문자열을 복사합니다. 공항이 이모지나 공백을 쓰면 한 글자라도 틀리면 참조가 깨집니다.

기동 직후 “proxy not found”류 오류

mixin 그룹의 proxies:에 적은 이름이 최종 proxies 목록에 없을 때 납니다. 오타, 아직 병합되지 않은 다른 파일, 또는 구독 갱신으로 노드 이름이 바뀐 경우를 의심합니다.

모바일 앱도 mixin이 되나요?

앱마다 로컬 패치 슬롯 지원이 다릅니다. 없으면 단일 URL을 Subconverter 등으로 합성하거나, 앱이 허용하는 “로컬 구간”만큼만 수동 편집해야 합니다.

체크리스트

  1. 자가 노드 이름에 고유 접두사를 붙인다.
  2. proxies:mixin에만 둔다—구독 캐시는 편집하지 않는다.
  3. 공항 그룹을 덮어쓰지 말고 proxy-groups 항목으로 참조만 한다.
  4. YAML 들여쓰기·대시·콜론을 검수한다.
  5. 구독 갱신 전후로 병합 결과·UI 목록이 동일한지 확인한다.

정리

공항 구독자가 VPS를 한 화면에서 쓰려면, “한 파일에 다 붙여 넣기” 대신 소스를 분리하고 Clash Metamixin으로 합치는 방식이 유지 보수에 유리합니다. 노드는 이름으로 엮이고, 규칙은 순서로 엮이며, 둘 다 실수 한 방이 전체 기동 실패로 이어질 수 있으니 변수는 작게 나눠 검증하세요.

Clash를 무료로 내려받아 구독과 자가 노드를 한 프로필에서 바로 시험해 보세요

구독 + VPS, mixin으로 한 번에

로컬 패치만 버전 관리하면 갱신도 안전합니다.

Clash 다운로드