iOS には Trojan の設定項目がないため、iPhone で Trojan を使うには、このプロトコルに対応したクライアントアプリが必要です。この記事では、iPhone・iPad 向けの無料プロキシクライアント Potatso に、trojan:// リンク、QR コード、サブスクリプション、または手動入力で Trojan サーバを追加する方法を説明します。WebSocket、gRPC、REALITY のサーバにも対応しています。
プロトコルについて知りたい方は、先に Trojan プロトコルとは? をお読みください。
用意するもの
- iOS 17 以降の iPhone または iPad。
- Trojan サーバ。プロバイダからは次のいずれかの形で提供されます。
trojan://リンク(例:trojan://secret@trojan.example.com:443?sni=trojan.example.com#Tokyo)- そのリンクの QR コード
- 複数のサーバをまとめたサブスクリプション URL
- アドレス、ポート(通常は 443)、パスワード、トランスポートや REALITY の設定などの設定値
まずトランスポートを確認しましょう。 プロバイダの案内に WebSocket(
ws)、gRPC、パス、サービス名、REALITY といった記載がある場合は、それらの値も必要です。リンクやサブスクリプションなら、これらの値も含まれています。
ステップ 1:Potatso をインストールする
App Store から Potatso をダウンロードして開きます。はじめるをタップし、プロファイルの名前(例:「Personal」)を入力して続けるをタップします。プロファイルには、サーバ、ルール、DNS 設定がまとめて保存されます。

ステップ 2:Trojan サーバを追加する
サーバを追加しましょうのステップでは、4 通りの追加方法を選べます。プロバイダから受け取った形式に合わせて選んでください。
trojan:// リンクまたはサブスクリプション URL から追加する
trojan://リンクまたはサブスクリプション URL をコピーします。- Potatso でリンクをペーストをタップし、続けてペーストをタップします。
トランスポート、サーバ名、REALITY のキーなどの設定は、Potatso がリンクから読み取ります。trojan-go:// リンク、Clash・Mihomo のサブスクリプション、Xray・V2Ray・Surge の構成も読み込めます。Potatso が対応していない機能を使うサーバがあった場合は、接続できないサーバを追加する代わりに、その理由を表示します。
QR コードから追加する
QR コードをスキャンをタップし、カメラを QR コードに向けます。QR コードが写真アプリに保存したスクリーンショットの場合は、スキャナーの隅にある写真ボタンをタップして画像を選びます。
手動で入力する
- サーバを手動で入力をタップします。
- 名前を入力し、プロトコルで Trojan を選びます。
- アドレスとポートを入力します。
- プロバイダから伝えられたとおりにパスワードを入力します。
- 以下の説明に沿って、トランスポート、TLS の設定、UDP を設定します。
- 保存(チェックマーク)をタップします。
Trojan では TLS が常にオンなので、自分でオンにする必要はありません。
トランスポート:WebSocket と gRPC
素の Trojan サーバなら、トランスポートは TCP のままにします。それ以外の場合は、サーバが使っているものを選びます。
| トランスポート | 入力する項目 | 例 |
|---|---|---|
| WebSocket | ホスト、パス | cdn.example.com、/ws |
| gRPC | サービス名 | TrojanGun |
| HTTP/2 | ホスト、パス | cdn.example.com、/h2 |
| HTTPUpgrade | ホスト、パス | cdn.example.com、/up |
パスとサービス名は、大文字・小文字も含めてサーバと完全に一致させる必要があります。/ws?ed=2048 のような WebSocket のパスでは early data も有効になり、接続時の往復が 1 回減ります。
サーバ名(SNI)と TLS 設定
TLS のオプションは TLS 設定をタップすると表示されます。
- サーバ名:TLS ハンドシェイクで送る名前で、SNI とも呼ばれます。空欄ならアドレスが使われます。IP アドレスや CDN 経由で接続する場合など、証明書のドメインがアドレスと異なるときに設定します。
- クライアントフィンガープリント:ハンドシェイクを
chromeやsafariなどのブラウザのものに似せます。プロバイダが指定している場合は入力してください。 - ALPN:プロバイダから値を指定されていない限り、空欄のままにします。
- 証明書のピン(SHA-256):自己署名証明書を使うサーバ向けです。ピン留めすると、その証明書だけを受け入れます。
- 証明書の検証をスキップ:どんな証明書でも受け入れます。あなたとサーバの間にいる誰もが通信を読めるようになるため、使用は避け、代わりに証明書をピン留めしてください。
REALITY
REALITY サーバは、別の Web サイトの TLS ハンドシェイクを借ります。次の項目を入力します。
- Reality 公開鍵と Reality ショート ID:プロバイダから伝えられた値を入力します。
- サーバ名(TLS 設定内):サーバが借用する Web サイト(例:
www.example.com)を入力します。 - Reality フィンガープリント:プロバイダが指定している場合に入力します。指定がなければ、Potatso は
chromeを使います。
REALITY は、トランスポートなし(TCP)または gRPC で使えます。
UDP リレーはデフォルトでオフ
UDP は音声通話やビデオ通話、多くのゲーム、QUIC で使われます。Clash と同じく、Trojan サーバの UDP リレーは最初はオフになっています。サーバが UDP を中継する場合はオンにしてください。Xray、sing-box、trojan-go のサーバはいずれも中継に対応しています。Clash サブスクリプションでは、udp: true でオンになります。
サーバを追加すると、ステップの表示がサーバを追加しましたに変わります。続けるをタップします。
ステップ 3:ルートを選ぶ
選んでいる間に、Potatso がすべてのサーバのレイテンシを測定します。
- グローバル:選んだサーバにすべての通信を送ります。サーバが 1 台だけなら、これが最も簡単です。
- ルール:構成に含まれるルールに従って、プロキシ経由にする通信と直接接続する通信を振り分けます。読み込んだ内容にルールが含まれている場合に選べます(多くの Clash サブスクリプションが該当します)。
サーバを選び、画面下部のボタン(例:Tokyo を使用)をタップします。

ステップ 4:VPN を許可して接続する
Potatso はデバイス上の VPN 構成を使って通信をプロキシに送るため、iOS で一度だけ許可が必要です。
- VPN 構成を追加をタップし、iOS に確認されたら許可をタップします。
- ホームで、ステータスカードのスイッチをオンにします。
ステータスが接続中…、接続済みの順に変わり、ステータスバーに VPN アイコンが表示されます。Web サイトを開いて、正しく読み込めるか確認してください。

接続できないときは
Trojan のトラブルは、たいていどれか 1 つの設定がサーバと一致していないことが原因です。
- パスワードの誤り。 Trojan サーバはパスワードの誤りを知らせず、普通の Web サイトとして応答するため、いつまでも接続できません。まずパスワードを確認してください。
- 証明書のエラー。 証明書はサーバ名(空欄の場合はアドレス)に対して有効である必要があります。IP アドレスで接続する場合は、サーバ名に証明書のドメインを設定します。自己署名証明書の場合は、証明書のピン(SHA-256) を設定してください。
- トランスポートの設定の誤り。 パスやホストが異なる WebSocket サーバや、サービス名が異なる gRPC サーバは接続を拒否します。プロバイダの設定と見比べるか、リンクを読み込み直してください。
- REALITY の不一致。 公開鍵、ショート ID、サーバ名がすべてサーバと一致している必要があります。WebSocket や HTTP/2 と組み合わせた REALITY には対応していません。
- 非対応のサーバ。 Potatso は、XHTTP・mKCP・QUIC トランスポート、trojan-go の Shadowsocks 暗号化、Trojan と組み合わせた ShadowTLS・Restls・JLS には対応していません。
- 通話やゲームだけが使えない。 UDP リレーをオンにし、サーバが UDP を中継しているか確認してください。
対応しているトランスポート、TLS のオプション、リンクのパラメータの一覧は Trojan リファレンス にあります。その他の問題については、Potatso の設定 > トラブルシューティングにガイド付きのチェック機能があります。詳しくは トラブルシューティング をご覧ください。
次のステップ
- 多数のサーバを含むサブスクリプションをお持ちですか? サーバをグループにまとめて、最速のものを Potatso に選ばせることができます。iPhone に Clash サブスクリプションを読み込む方法 をご覧ください。
- プロバイダが VLESS も提供していますか? iPhone で VLESS + REALITY を使う方法 と プロキシプロトコル比較 で 2 つを比べてみてください。
よくある質問
- アプリなしで iPhone から Trojan を使えますか?
- いいえ。iOS に標準で備わっているのは、Wi-Fi ネットワークごとの HTTP プロキシ設定と、IKEv2 などの VPN の種類だけです。Trojan サーバを使うには、Potatso のように Trojan プロトコルに対応したクライアントアプリが必要です。
- Trojan サーバで UDP が使えないのはなぜですか?
- Clash と同じく、Trojan サーバでは UDP リレーがデフォルトでオフになっています。サーバが UDP を中継する場合(Xray、sing-box、trojan-go のサーバは中継します)は、Potatso でサーバの設定を開いて UDP リレーをオンにしてください。
- サーバ名(SNI)には何を入力すればよいですか?
- 通常は何も入力する必要はありません。Potatso がサーバのアドレスを使います。サーバ名を設定するのは、IP アドレスで接続する場合など証明書のドメインがアドレスと異なるときや、REALITY でサーバが借用する Web サイトを指定するときだけです。
- Potatso は trojan-go のリンクに対応していますか?
- はい。Potatso は、トランスポートなし、または WebSocket を使う trojan-go:// リンクを読み込めます。trojan-go の Shadowsocks 暗号化が必要なリンクは読み込めず、trojan-go 独自の多重化にも対応していません。
- Potatso は無料ですか?
- はい。Potatso は iOS 17 以降の iPhone・iPad 向けに App Store で無料配信されています。複数のプロファイルなど、一部の Pro 機能にはサブスクリプションが必要です。