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 で取得できるか、最初に軽く試すと後工程が楽です。
uname -m
sudo apt update && sudo apt install -y curl ca-certificates
3 Mihomo バイナリの取得と配置
公式の GitHub Releases から、自分のアーキテクチャに合う圧縮バイナリを取ります。バージョン番号は記事執筆後も上がるため、必ずリリースページで最新を確認し、URL を差し替えてください。ホーム直下に ~/.local/bin を作り、そこへ実行ファイルを置くとユーザ単位で完結し、ChromeOS 側のアップデートの影響を受けにくいです。
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-groups の use で束ねるのが定番です。プロバイダーが Clash 形式以外を返す場合は、信頼できるコンバータを経由し、生成物の中身を人間が一度見てから本番に載せる習慣を推奨します。
LAN から届く接続も受けるなら allow-lan: true と mixed-port(または別途 port / socks-port)を明示し、バインドを 0.0.0.0 にします。管理用 API の external-controller を開く場合は、パスワードを強くし、可能ならコンテナ内のローカルのみに留め、Yacd 等は SSH トンネルやポート転送で届けると安全です。以下は最小の形の例であり、実ノード名や購読 URL は読み替えてください。
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 エラーを潰します。バックグラウンドに回すときは nohup や screen、tmux が簡便です。Crostini 環境によっては systemd のユーザユニットが使える場合もありますが、無効な端末もあるため、まずはユーザ権限で確実に動く方法から入るのがおすすめです。Linux を終了するとコンテナも止まるため、「Chromebook を閉じたあとも常にプロキシが要る」用途では、起動後にワンライナーで Mihomo を立ち上げるスクリプトをデスクトップに置く、あるいは cron の @reboot を試す、といった現場向けの補助が現実的です。
# 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 でポートを晒さないようにしてください。
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 アプリが主クライアント」と割り切ると説明と期待値が一致しやすいです。
コンテナ内のシェルだけ先に通したい場合は、~/.bashrc に export 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 は十分に現実的です。ポート転送と権限管理を怠らなければ、学習コストと得られる柔軟性のバランスは悪くありません。