1. bookworm을 전제로 할 때 달라지는 점
이 사이트의 Ubuntu + deb 설치 글은 dpkg·apt 한 줄에 맞춰 있습니다. 반면 Debian 12만 보면 mihomo가 항상 공식 아카이브에 패키지로 올라와 있지는 않아서, 실무에서는 릴리스에서 내려받은 정적 바이너리를 /usr/local/bin에 두는 방식이 흔합니다. Ubuntu 튜토리얼을 그대로 옮기면 서비스 이름·경로가 어긋나기 쉬우니, 이 글은 bookworm을 1차 전제로 둡니다.
Fedora 글은 dnf·SELinux·firewalld가 앞에 나옵니다. Arch 글은 AUR·pacman 축입니다. Debian 12는 AppArmor가 켜져 있을 수 있다는 점은 Ubuntu와 비슷하고, SELinux는 보통 쓰지 않습니다. 먼저 루프백·mixed-port만 띄우고, TUN·투명 프록시는 뒤에서 덧붙이면 권한·정책을 단계적으로 맞추기 쉽습니다.
구독·프로필 개념은 구독 가져오기와 같고, 평가 순서는 라우팅·규칙을 함께 보면 mihomo 동작을 따라가기 수월합니다. Clash 개요를 먼저 익혀도 좋습니다.
2. 사전 준비: apt·curl·바이너리 배치
HTTPS로 내려받고 압축을 풀기 위한 최소 도구는 apt로 맞춥니다. 최소 설치 VPS라면 curl·ca-certificates가 아직 없을 수 있습니다.
# Debian 12: common tools for download and extract
sudo apt update
sudo apt install -y curl ca-certificates tar gzip
바이너리는 amd64 / arm64에 맞는 압축을 고릅니다. 파일명은 릴리스마다 달라지니 실제 Release 노트를 따릅니다. uname -m으로 x86_64·aarch64를 확인한 뒤 선택하세요. 일상적인 클라이언트·빌드 안내 1차는 다운로드 페이지를 쓰고, 소스·이슈는 GitHub를 따로 보면 절차가 오래갈 뒤틀리지 않습니다.
# Example: adjust archive name to match your release asset
sudo tar -C /usr/local/bin -xzf ./mihomo-linux-amd64-v*.gz
sudo mv /usr/local/bin/mihomo /usr/local/bin/clash-meta
sudo chmod 755 /usr/local/bin/clash-meta
압축 형식·최상위 경로는 빌드마다 다릅니다. tar tf로 내부를 본 뒤 mv하는 편이 안전합니다. /usr/local/bin는 패키지 apt upgrade에 덮이기 어려워 서버에 자주 씁니다. 승인된 바이너리만 두는 감사 정책이면 팀 절차에 맞는 경로를 쓰세요.
3. mixed-port·최소 config.yaml
mixed-port는 하나의 TCP 포트에서 HTTP·SOCKS를 같이 받게 해 브라우저 수동 프록시·쉘 http_proxy·https_proxy·일부 앱의 시스템 프록시를 같은 포트로 맞추기 쉽습니다. 처음엔 7890을 예로 두고, ss -lntp로 다른 VPN·툴과 포트 충돌이 없는지 봅니다.
아래는 동작 확인용 최소 예시입니다. 실서비스에서는 공급자 구독을 proxy-providers·proxies에 붙이고 룰을 늘립니다. 키 이름·들여쓰기는 사용 중인 mihomo 메이저 버전 문서를 따릅니다.
# Minimal skeleton — replace proxies and rules with your profile
mixed-port: 7890
bind-address: '*'
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
secret: ""
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
nameserver:
- 1.1.1.1
proxies:
- name: placeholder
type: ss
server: 127.0.0.1
port: 1
cipher: dummy
password: dummy
proxy-groups:
- name: PROXY
type: select
proxies:
- placeholder
rules:
- MATCH,PROXY
external-controller를 켤 때는 secret을 비우지 않는 것이 기본입니다. 위는 설명용이며, 실기에서는 무작위 문자열을 넣고 API는 루프백에서만 받게 하세요. bind-address를 넓히면 LAN 공유로 이어질 수 있으니 allow-lan·방화벽·ACL을 같이 설계합니다.
4. /etc·전용 사용자·권한
systemd로 비대화형 사용자에 올릴 때는 설정 디렉터리 + 전용 계정을 맞추는 편이 다루기 쉽습니다. 여기서는 /etc/clash-meta·사용자 clash를 예로 둡니다(이름·경로는 팀 표준에 맞게).
sudo mkdir -p /etc/clash-meta
sudo cp /path/to/your/config.yaml /etc/clash-meta/config.yaml
sudo useradd --system --home /etc/clash-meta --shell /usr/sbin/nologin clash 2>/dev/null || true
sudo chown -R clash:clash /etc/clash-meta
GeoIP·rule-providers 캐시가 커질 수 있으면 디스크·로테이션도 봅니다. 갱신 실패는 rule-providers·GEOIP 글과 같이 읽으면 좋습니다.
5. 수동 기동·curl 검증
유닛에 넣기 전에 서비스와 같은 사용자·같은 -d로 포그라운드로 짧게 띄우고, 치명적 오류가 없는지 봅니다.
sudo -u clash -H /usr/local/bin/clash-meta -d /etc/clash-meta
다른 셸에서 curl -x http://127.0.0.1:7890 https://example.com -I 등으로 응답을 확인합니다. 여기서 실패하는데 systemd만 감쌀면 같은 실패가 반복됩니다. 구독 URL 거부·CA·업스트림 포트·DNS는 이 단계에서 먼저 갈릅니다.
6. systemd 유닛·enable·--now
/etc/systemd/system/clash-meta.service를 둡니다. 경로·사용자명은 환경에 맞게 바꿉니다.
[Unit]
Description=Clash Meta (mihomo) on Debian 12
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=clash
Group=clash
WorkingDirectory=/etc/clash-meta
ExecStart=/usr/local/bin/clash-meta -d /etc/clash-meta
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
다시 읽기·enable 절차는 아래와 같습니다.
sudo systemctl daemon-reload
sudo systemctl enable --now clash-meta.service
sudo systemctl status clash-meta.service
enable --now는 부팅 시 자동 실행 + 지금 기동을 겁니다. 노트북은 절전 복귀 뒤에만 어긋날 수 있어, 필요하면 NetworkManager 재연결 후 systemctl restart clash-meta.service를 둡니다. 서버·클라우드 이미지는 network-online.target이 기대대로인지 봅니다.
7. journalctl·재시작 루프
로그는 journal에 모이므로 journalctl -u clash-meta.service로 먼저 봅니다. 이번 부트만이면 -b, 추적이면 -f를 붙입니다.
journalctl -u clash-meta.service -b --no-pager
journalctl -u clash-meta.service -f
설정 오류로 빠르게 죽는 재시작 루프에 들어가면 sudo systemctl stop clash-meta.service로 멈춘 뒤 YAML·포트를 고칩니다. Restart=always는 편하지만 로그를 채울 수 있어 초기에는 on-failure가 무난 경우가 많습니다.
8. 방화벽·127.0.0.1·데스크톱 프록시
127.0.0.1에만 mixed-port를 띄우는 구성이면 외향 방화벽 개구는 보통 불필요합니다. bind-address를 LAN으로 넓히거나 다른 머신에서 관리 API를 쓰려면 nft·ufw·정책을 따로 둡니다. VPS는 프록시를 공인에 노출하지 않는 것이 기본이며, 먼저 루프백 고정이 무난합니다.
코어가 떠 있어도 앱이 프록시를 쓰도록 맞추지 않으면 트래픽이 안 갑니다. GNOME·KDE는 시스템 프록시에 127.0.0.1·mixed-port 번호를 넣거나, 셸만 쓰면 export http_proxy=http://127.0.0.1:7890 류를 프로필에 둡니다. Docker·호스트 Clash·WSL2는 별도 글과 맞출 때 혼선이 적습니다.
TUN까지 쓰려면 TUN 가이드를 보고, 다른 VPN·스택과의 충돌을 먼저 점검하세요. GUI·대체 클라이언트는 CFW 대체 글과 병행해 읽을 수 있습니다.
9. systemd-resolved와 mihomo DNS
Debian 12 데스크톱·일부 서버는 systemd-resolved가 127.0.0.53로 이름을 잡는 경우가 많습니다. mihomo 쪽 dns.listen을 동시에 띄우면 포트 충돌·앱이 보는 리졸버 불일치가 드러나기 쉽습니다. 처음엔 mixed-port HTTP(S)만 맞추고 DNS는 단계적으로 맞추는 것도 합리적입니다.
fake-ip·Sniffer를 본격 쓰면 로그·실경로 일치를 봅니다. 이중 스택·IPv6는 IPv6·TUN 실측을 함께 보면 Debian에서 갈릴 때 빨라집니다.
10. 자주 막히는 지점
포트 충돌: 수동 기동·다른 프록시가 남지 않았는지 ss -lntp로 봅니다. 권한: namei -l /etc/clash-meta로 소유·DAC을 맞춥니다. DNS만 이상: mihomo DNS와 resolved·NetworkManager·질의 경로를 같이 봅니다.
apt full-upgrade 직후만 깨질 때: libc·OpenSSL·rule-providers URL 등이 바뀌었는지, journal·HTTP·인증서 오류로 나눕니다.
11. 정리
Debian 12는 Ubuntu deb 절차를 그대로 가져오기 어려워, 바이너리·작업 디렉터리·systemd를 스스로 맞출 필요가 있습니다. 대신 mixed-port를 축으로 잡으면 브라우저·셸·데스크톱을 같은 포트에 묶기 쉽고, 뒤이어 TUN·LAN 공유로 확장할 때도 흐름이 흐트러지지 않습니다. 회사 서버·가정 bookworm이든 골격은 같습니다.
Fedora·Arch 글과 비교해 보면, 패키지 경로 밖은 같은 mihomo 설정 언어라는 점이 분명해집니다. 안정적인 배포·문서·다운로드 정리를 해 두면 시행착오가 줄어듭니다.
먼저 아키텍처에 맞는 빌드를 고르고, 구독을 붙인 뒤 mixed-port·journal로 확인하는 흐름이 가장 확실합니다. Windows·macOS GUI까지 함께 쓰려면 → Clash를 무료로 내려받고 본인 환경에 맞는 클라이언트를 골라 보세요. 조직·계약·법규에 따라 사용이 제한될 수 있습니다.
관련 읽기 · 같은 주제
주제 관련도가 높은 읽을거리 — 같은 카테고리의 Clash 실전 가이드.
Clash는 켰는데 브라우저만 직접 연결? Windows에서 보안 DNS(DoH) 끄고 시스템 프록시 맞추기 (2026)
Clash·시스템 프록시는 켰는데 Chrome·Edge만 국선·이상한 DNS처럼 보일 때, Windows 10/11·브라우저의 보안 DNS(DoH)를 끄고 mihomo의 fake-ip·로컬 DNS 흐름과 충돌을 푸는 절차입니다. Verge Rev 시스템 프록시·TUN·구독 TLS 글과…
자세히 보기Arch Linux에 Clash Meta 설치: systemd 자동 기동과 mixed-port 첫 설정 (2026)
롤링 Arch·Manjaro에서 mihomo를 AUR·yay/paru 또는 수동 바이너리로 올리고, systemd 사용자 유닛·linger 또는 시스템 유닛으로 부팅 자동 실행을 맞춘 뒤 mixed-port와 구독을 연결하는 순서를 Ubuntu·Fedora Linux 글과 역할을 나눠…
자세히 보기Fedora에 Clash Meta 설치: systemd 부팅 자동 실행과 mixed-port 첫 설정 (2026)
Ubuntu deb와 달리 Fedora·RHEL 계열은 dnf·rpm·Copr·SELinux·firewalld를 전제로 mihomo를 올리고, systemd로 부팅 자동 기동을 맞춘 뒤 mixed-port로 데스크톱·CLI 프록시를 한 축으로 정리하는 2026 실무 순서입니다.
자세히 보기