Linux に Clash をインストール:デスクトップディストリとコマンドライン環境での mihomo 導入の全手順

デスクトップディストリ向け GUI クライアントのインストールから、サーバーや WSL などのコマンドライン環境での mihomo カーネルの導入、自動起動、プロキシ検証までを解説。

まず方針を選ぶ:GUI クライアントか、mihomo カーネルか

Linux における Clash エコシステムは 2 層に分かれます。下層はカーネルで、設定の解析とトラフィックの振り分けを担当し、現在活発にメンテナンスされているカーネルは mihomo(旧 Clash Meta)です。上層は GUI クライアントで、カーネルをウィンドウアプリに包み、サブスクリプション管理、ノード切り替え、システムプロキシのオン/オフを提供します。2 つの方針はそれぞれ次の環境に対応します:

どちらの方針も同じ YAML 設定構文を共有し、サブスクリプション URL も共通です。後で方針を変えても設定を作り直す必要はありません。以下、それぞれの完全な手順を示します。

デスクトップディストリ:GUI クライアントをインストール

Debian / Ubuntu 系(deb パッケージ)

ダウンロードページから対応するアーキテクチャの deb パッケージを取得したら、ターミナルで実行します:

sudo dpkg -i clash-verge_*_amd64.deb
sudo apt-get -f install   # dpkg が依存関係エラーを出した場合のみ実行

インストール後、アプリメニューから起動し、サブスクリプションページにサブスクリプション URL を貼り付け、更新してノードを選び、「システムプロキシ」スイッチをオンにするだけです。GNOME と KDE のシステムプロキシはクライアントが自動で書き込み、ブラウザやほとんどのデスクトップアプリがすぐにプロキシ経由になります。

Fedora / RHEL 系(rpm パッケージ)

sudo dnf install ./clash-verge-*.x86_64.rpm

dnf が依存関係を自動で補完します。インストール後のサブスクリプションの取り込みとスイッチの手順は deb と同じです。

ダウンロード前にアーキテクチャを確認してください:ほとんどのデスクトップやノート PC は x86_64(amd64)で、ARM デバイスは arm64 を選びます。ターミナルで uname -m を実行すれば、現在のマシンのアーキテクチャを確認できます。

一部のアプリはシステムプロキシ設定を読みません(一部のコマンドラインツールや、独自のネットワークスタックを持つデスクトップアプリ)。その場合はクライアントの TUN モードを有効にし、カーネルにシステム層で全 TCP/UDP トラフィックを引き受けさせます。TUN は仮想ネットワークインターフェースの作成が必要なため、クライアントが管理者権限を求めます。

コマンドライン環境:mihomo カーネルを導入

サーバーや WSL にはウィンドウがないため、カーネルを直接実行します。手順は全部で 4 ステップです:

  1. バイナリを取得

    ダウンロードページのカーネルセクションから mihomo の Linux ビルドを取得します。アーキテクチャに応じて linux-amd64 または linux-arm64 を選び、展開すると単一の実行ファイルになり、他の依存はありません。

  2. システムパスにインストール

    sudo install -m 0755 mihomo /usr/local/bin/mihomo を実行し、ファイルを標準パスに配置して実行権限を付与します。

  3. 設定ディレクトリを準備

    慣例的なディレクトリは /etc/mihomo で、その中に config.yaml を置きます。サブスクリプション URL の生の内容はそのまま設定として使えず、proxies、proxy-groups、rules の 3 セクションに書く必要があります。より手軽な方法は proxy-providers でサブスクリプション URL を直接参照する書き方で、カーネルが自動で取得し定期的に更新します。

  4. フォアグラウンドで試運転

    まず mihomo -d /etc/mihomo をフォアグラウンドで一度実行し、設定にエラーがなくポートが正常にリッスンしていることを確認してから、systemd に管理を任せます。

最小限の動作設定は次のとおりです:

mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:9090
proxy-providers:
  airport:
    type: http
    url: "https://example.com/subscribe"
    interval: 86400
    path: ./providers/airport.yaml

mixed-port は HTTP と SOCKS5 の両方のリクエストを受け付けます。external-controller はカーネルの REST インターフェースで、Web パネルがこれを通じて稼働状態を読み書きします。ローカルのループバックアドレスのみでリッスンすれば十分です。

systemd による管理と自動起動

ユニットファイル /etc/systemd/system/mihomo.service を新規作成します:

[Unit]
Description=mihomo kernel
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

続いて登録して起動します:

sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
journalctl -u mihomo -f   # 実行ログを追跡

enable --now の 1 コマンドで自動起動の登録と即時起動を同時に行えます。以降、設定を変更するたびに sudo systemctl restart mihomo を実行して反映させます。

TUN モードの権限

TUN は仮想ネットワークインターフェースの作成が必要で、一般ユーザーにはデフォルトでこの権限がありません。方法は 2 つあります:1 つは上記のユニットファイルのとおり root で直接実行する方法、もう 1 つはバイナリにネットワーク管理ケイパビリティを付与して一般ユーザーとして実行する方法です:

sudo setcap 'cap_net_admin,cap_net_bind_service=+ep' /usr/local/bin/mihomo

一部のコンテナ環境(OpenVZ、権限が付与されていない LXC)には /dev/net/tun デバイスがなく、TUN は使えません。その場合は mixed-port とアプリケーションレベルのプロキシに戻すしかありません。systemd で root 以外のユーザーとして実行する場合は、ユニットファイルに AmbientCapabilities=CAP_NET_ADMIN を追加する必要があります。

プロキシが有効かどうかを確認

最も手軽な方法は、プロキシパラメータ付きでリクエストを一度送ることです:

curl -x http://127.0.0.1:7890 https://api.ip.sb

返された出口 IP が選択したノードの地域と一致していれば、経路は通っています。プロキシをシェル環境に書き込み、後続のコマンドをまとめてプロキシ経由にすることもできます:

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890

GUI が欲しい場合は Web パネルを載せられます:metacubexd、zashboard、yacd などの静的パネルファイルを設定ディレクトリの ui サブディレクトリに置き、ブラウザで http://127.0.0.1:9090/ui にアクセスすれば、アクティブな接続の確認、ノード切り替え、遅延テストができます。パネルはカーネル API のフロントエンドにすぎず、ページを閉じてもプロキシの動作には影響しません。

WSL とサーバーの 2 つの相違点

WSL2

デフォルトの NAT ネットワークでは、WSL と Windows はそれぞれ独立したループバックアドレスを持ちます。プロキシを WSL 内で動かしている場合、Windows 側から接続するには、設定で allow-lan: true を指定し、WSL の IP でアクセスする必要があります。より手軽なのは、クライアントを Windows 側にインストールし、WSL 内で export するプロキシを Windows ホストの IP に向ける方法です――/etc/resolv.conf の nameserver がホストのアドレスです。WSL の mirrored ネットワークモードを有効にすれば、両側で localhost を共有でき、上記の回り道はすべて不要になります。

サーバー

サーバーにはローカルブラウザがないため、パネルには SSH ポートフォワーディングでアクセスします:

ssh -L 9090:127.0.0.1:9090 user@your-server

そのセッションを維持したまま、ローカルのブラウザで 9090 番ポートの ui パスにアクセスすれば OK です。

external-controller を 0.0.0.0 でリッスンして公网に公開しないでください。リモート管理がどうしても必要な場合は、設定に secret フィールドでアクセスパスワードを設け、ファイアウォールで接続元 IP を制限してください。

よくある問題の早見表

設定フィールドの完全な書き方はサイト内の YAML マニュアルを参照してください。GUI クライアントのサブスクリプション取り込みの詳細は Windows、macOS とほぼ同じで、使用ドキュメントに対応する章があります。

Clash をダウンロード