チュートリアル · 読了まで約 16 分

Chromebook Crostini に Mihomo を導入:
購読インポートと LAN プロキシの手順

ChromeOS ではネイティブの「Clash 一発インストール」が無い代わりに、Linux(Crostini)コンテナへ Mihomo を載せれば、普段お馴染みの Clash 互換 YAML と購読 URL をそのまま活かせます。本稿ではゼロからの導入、ChromeOS ホスト側のポート転送、同一 LAN の他端末からの利用までを一続きで整理します。

Chromebook · Crostini · Mihomo · LAN

1 なぜ Crostini で Mihomo なのか

Chromebook は軽量でバッテリー持ちが良く、教育現場やモバイル作業に向きますが、ChromeOS 自体は一般の Linux ディストリビューションではありません。公式ストアに「Clash そのもの」が並ぶわけでもないため、プロキシを自分で持ち込みたい人は、開発者向けの Linux(通称 Crostini、デフォルトのコンテナ名は多くの環境で penguin)を開くのが現実的なルートです。ここは Debian 系のユーザーランドが載った軽い仮想マシンであり、ターミナルから apt で依存を足しつつ、単一バイナリの Mihomo を置けば、サーバー向け記事で語られるのと同じ Clash 方言の設定ファイルを再利用できます。

Mihomo(Clash.Meta 系)は新しいトランスポートにも追従しやすく、購読 URL を proxy-providers に渡して定期更新する運用とも相性が良いです。デスクトップ Linux 向けに書いた systemd 常駐の解説とは前提が少し違い、Crostini ではホスト OS が ChromeOS であること、コンテナとホストの間にポート転送のレイヤがあること、Chrome ブラウザはコンテナのプロキシ設定を自動では継承しないこと、がポイントになります。逆に言えば、これらを押さえれば「Chromebook だけでなく、同じ Wi-Fi のスマホやゲーム機もプロキシに向ける」構成まで広げやすいです。

本記事は教育目的の手順整理です。利用する購読・ノード・地域の法令・組織のポリシーは読者の責任で確認してください。鍵やトークンを設定ファイルに直書きする場合は、権限を絞り、共有ディレクトリに置かないなど最低限の秘匿管理をおすすめします。

2 前提条件と Linux(Crostini)の有効化

まず端末のストレージに余裕があるか、学校や会社の管理下で Linux がブロックされていないかを確認します。設定アプリから「開発者向けの機能」または「Linux 開発環境」をオンにし、初回セットアップが終わるまで待ちます。ユーザー名とホームは通常 /home/<あなたの Linux ユーザー名> 配下に作られ、以降の Mihomo 配置もここを基準にするとバックアップしやすいです。

CPU アーキテクチャは uname -m で確認します。出力が aarch64 なら ARM64 ビルド、x86_64 なら amd64 ビルドを選びます。近年の Chromebook は ARM が多いですが、Intel/AMD モデルも存在するため、推測ではなく必ずコマンドで確かめてください。ネットワークは Crostini が NAT 越しに外へ出る構成が一般的なので、購読 URL がコンテナ内の curl で取得できるか、最初に軽く試すと後工程が楽です。

Shell
uname -m
sudo apt update && sudo apt install -y curl ca-certificates
権限と更新: ChromeOS のバージョンやデバイスポリシーによっては、Linux 機能やポート転送 UI の位置が微妙に異なります。スクリーンショット依存の手順より、設定内検索で「Linux」「ポート」を辿る癖を付けると長期運用で困りにくいです。

3 Mihomo バイナリの取得と配置

公式の GitHub Releases から、自分のアーキテクチャに合う圧縮バイナリを取ります。バージョン番号は記事執筆後も上がるため、必ずリリースページで最新を確認し、URL を差し替えてください。ホーム直下に ~/.local/bin を作り、そこへ実行ファイルを置くとユーザ単位で完結し、ChromeOS 側のアップデートの影響を受けにくいです。

Bash
mkdir -p ~/.local/bin ~/.config/mihomo
# 例:amd64 の場合(URL は最新リリースに置き換え)
# curl -fsSL -o mihomo.gz "https://github.com/MetaCubeX/mihomo/releases/download/v1.19.0/mihomo-linux-amd64-v1.19.0.gz"
# gunzip mihomo.gz && mv mihomo ~/.local/bin/mihomo && chmod +x ~/.local/bin/mihomo

# PATH に通す(bash 想定)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
mihomo -v

ARM64 の場合はアセット名が mihomo-linux-arm64-... になります。展開後に mihomo -v でバージョンが表示されれば配置は成功です。もし実行が拒否される場合は、ファイルに実行ビットが付いているか、ダウンロードが途中で切れていないかを再確認します。

4 購読インポートと Clash 互換 YAML

Mihomo は -d で渡したディレクトリの config.yaml を読みます。購読だけを取り込みたい場合は proxy-providers に URL と更新間隔を書き、proxy-groupsuse で束ねるのが定番です。プロバイダーが Clash 形式以外を返す場合は、信頼できるコンバータを経由し、生成物の中身を人間が一度見てから本番に載せる習慣を推奨します。

LAN から届く接続も受けるなら allow-lan: truemixed-port(または別途 port / socks-port)を明示し、バインドを 0.0.0.0 にします。管理用 API の external-controller を開く場合は、パスワードを強くし、可能ならコンテナ内のローカルのみに留め、Yacd 等は SSH トンネルやポート転送で届けると安全です。以下は最小の形の例であり、実ノード名や購読 URL は読み替えてください。

YAML (~/.config/mihomo/config.yaml)
mixed-port: 7890
allow-lan: true
mode: rule
log-level: info
ipv6: false

external-controller: 127.0.0.1:9090
secret: "replace_with_a_long_random_secret"

dns:
  enable: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
  fallback:
    - https://1.1.1.1/dns-query

proxy-providers:
  sub:
    type: http
    url: "https://example.com/your-clash-subscription"
    path: ./providers/sub.yaml
    interval: 3600
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 600

proxy-groups:
  - name: Proxy
    type: select
    use:
      - sub
    proxies:
      - DIRECT

rules:
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

ファイルを保存したら chmod 600 ~/.config/mihomo/config.yaml などで権限を絞るとよいです。ルールを細かくしたい場合は、既存のコミュニティルールや GeoIP/Geosite の手動更新手順を、別記事と組み合わせてください。ダッシュボード運用についてはexternal-controller と Yacd の解説も参照できます。

5 起動・再起動と常駐の考え方

手早く試すなら、ターミナルで mihomo -d ~/.config/mihomo をフォアグラウンド実行し、ログを眺めながら YAML エラーを潰します。バックグラウンドに回すときは nohupscreentmux が簡便です。Crostini 環境によっては systemd のユーザユニットが使える場合もありますが、無効な端末もあるため、まずはユーザ権限で確実に動く方法から入るのがおすすめです。Linux を終了するとコンテナも止まるため、「Chromebook を閉じたあとも常にプロキシが要る」用途では、起動後にワンライナーで Mihomo を立ち上げるスクリプトをデスクトップに置く、あるいは cron@reboot を試す、といった現場向けの補助が現実的です。

Bash
# foreground test
mihomo -d ~/.config/mihomo

# simple background (logs to file)
nohup mihomo -d ~/.config/mihomo >> ~/.config/mihomo/run.log 2>&1 &

コンテナ内から curl -x http://127.0.0.1:7890 -I https://example.com のように疎通確認できると、購読・ルール・DNS のどこで詰まっているか切り分けやすくなります。プロセスが多重起動してポート競合する場合は、古い mihomo を終了してから再起動してください。

6 ChromeOS 側のポート転送(LAN 公開の要)

Crostini の中で 0.0.0.0:7890 を開いても、それだけでは同じ Chromebook 上の Chrome ブラウザや、同じ Wi-Fi の他端末からは見えません。ChromeOS はコンテナとホストの間でポートを橋渡しする必要があり、設定の「Linux」セクションにあるポート転送(Port forwarding)で、ホスト側の空いているポート(例:17890)をコンテナの 7890 にマッピングします。UI の表記はアップデートで変わることがあるため、「Linux のポートを外部に公開する」系の項目を探すイメージで十分です。

転送が有効になったら、Chromebook 自身の LAN IP アドレス(Wi-Fi の詳細や chrome://system 付近で確認できる情報)をメモし、他端末からは http://<Chromebook-LAN-IP>:17890 のように HTTP プロキシを指定できるようになります(実際のプロトコルに合わせて SOCKS を選ぶ場合もあります)。ファイアウォール的には自宅 LAN 限定に留め、公共 Wi-Fi でポートを晒さないようにしてください。

番号の対応: 例ではホスト 17890 → コンテナ 7890 としました。競合があればホスト側だけ変え、コンテナ内の Mihomo 設定はそのままで構いません。転送ルールは ChromeOS アップデート後に消える報告もあるため、メジャーアップデートのたびに要確認です。

7 LAN 上の他端末から使う

スマートフォンや別 PC では、Wi-Fi プロキシ設定で Chromebook の IP と、転送で開いたホスト側ポートを入力します。アプリによっては HTTP と SOCKS のどちらを期待するかが違うため、Mihomo の mixed が受け付けるプロトコルと一致させてください。ゲーム機や TV などプロキシ UI が貧弱な機器では、ルーター側の DHCP でゲートウェイを変えるより前に、HTTP プロキシだけ差し込めるアプリから試すほうが安全なことが多いです。

家じゅうを一枚岩にしたいニーズは、ゲーム機向けのLAN プロキシ記事とも思想が近く、Chromebook を一時的な「小さなゲートウェイ」として扱う発想に繋がります。ただし Chromebook のスリープや Wi-Fi 切断で途切れる点は NAS 常駐より不安定なので、長期運用なら Synology やルーター常駐の構成も検討ください。

8 Chrome ブラウザ本体はどうなるか

重要な誤解を一つ潰します。Linux コンテナ内の Mihomo は、ChromeOS のメイン Chrome タブに自動で効きません。Linux アプリやターミナルからの curl、コンテナ内ブラウザ(あれば)には http_proxy 環境変数で効かせられますが、普段使いの Chrome UI を丸ごとプロキシしたいなら、別途ブラウザ拡張や、Android 側の対応アプリなど、ホスト OS レベルの手段が必要になります。記事の構成を「Crostini = バックエンド、LAN と Linux アプリが主クライアント」と割り切ると説明と期待値が一致しやすいです。

コンテナ内のシェルだけ先に通したい場合は、~/.bashrcexport http_proxy=http://127.0.0.1:7890 などを追記する方法が手軽です。no_proxy に社内ドメインやローカルホストを入れておくと、混合環境でのトラブルが減ります。

9 トラブルシューティング

  • 購読が取れない: コンテナ内で curl -I を購読 URL に対して実行し、証明書エラーや 403 を確認。プロバイダー側の User-Agent 制限なら Mihomo の proxy-providers オプションやヘッダを調整。
  • LAN から繋がらない: ポート転送が有効か、Chromebook の IP が変わっていないか、ホスト側ポートが他アプリと衝突していないかを確認。allow-lan とコンテナ内のリスナーが 0.0.0.0 側で開いているかも再チェック。
  • DNS だけおかしい: FakeIP とローカルリゾルバの組み合わせは環境依存が大きいです。まずは log-level: debug で切り分け、必要なら nameserver を地域向けに差し替え。
  • 管理 UI に届かない: external-controller を 127.0.0.1 に縛っている場合、コンテナ外からは見えません。別ポートを転送するか、SSH トンネルを使います。

10 まとめ

Chromebook でも Crostini を開けば、Mihomo という一枚のコアの上に Clash 互換の購読とルールを載せられるようになります。手順の肝は「コンテナ内で listen を広げる」「ChromeOS でポートをホストに橋渡しする」「Chrome 本体とは期待値を分ける」の三つです。この下限が通れば、同じ Wi-Fi の端末をプロキシに向けたり、Linux 開発ツールだけ先に海外経由にしたりと、用途に応じて段階的に広げられます。

GUI でルールをいじりたくなったら、他 OS 向けのビルドを併用するのも手です。インストールの揺れを減らすには、配布パッケージが揃っているクライアントを選ぶと楽になります。体験の比較にはダウンロードページから各プラットフォーム版を辿るのが簡単です。

同じ Mihomo でも、VPS や常時オン NAS のほうが「家じゅうの錨」には向きますが、手元に Chromebook しかないときの出発点として、Crostini は十分に現実的です。ポート転送と権限管理を怠らなければ、学習コストと得られる柔軟性のバランスは悪くありません。

→ 無料で Clash をダウンロードし、他端末の体験とも比較する

タグ: Chromebook Crostini Mihomo Clash 互換 LAN 購読
Clash クライアントのロゴ:Chromebook Crostini 向け

Clash Verge Rev

次世代 Clash クライアント · 無料オープンソース

Mihomo コアを GUI で扱えるクライアントは Windows・macOS・Linux に揃っており、Chromebook 以外の端末でルールを試してから Crostini の YAML に戻す二段構えも運用しやすいです。

多プラットフォーム Mihomo コア 購読管理 ルール分流 DNS 補助

関連記事