LinuxデスクトップにShadowrocketをインストールする方で、利用するサービスとサブスクリプションをすでにお持ちの方を対象にしています。まずディストリビューションとCPUアーキテクチャを確認し、サイトのダウンロードページからdeb、rpm、AppImageのいずれかを選びます。その後、インストール、初回起動、サブスクリプションのインポート、ルーティングの確認を行います。ターミナルコマンドには、実際にダウンロードしたファイルのパスを指定します。固定のパッケージ名は使いません。
ディストリビューション・アーキテクチャ・入手方法を確認
パッケージ形式によって変わるのは、ソフトウェアをシステムで管理する方法です。ノードのプロトコルや通信速度が決まるわけではありません。Debian、Ubuntuおよび互換ディストリビューションでは通常deb、Fedoraでは通常rpmを選びます。対応するネイティブパッケージがない場合は、AppImageが現在の環境で使えるか確認してください。拡張子だけでは互換性を判断できません。同じrpm形式でも、ディストリビューションによって依存関係が異なる場合があります。
まずターミナルで次のコマンドを実行します。1つ目はディストリビューションのIDやID_LIKEなどを、2つ目はマシンのアーキテクチャを確認するコマンドです。ダウンロードページで提供されているアーキテクチャが、使用中のマシンと一致することを確認してください。一般的なx86_64とaarch64は相互に置き換えられません。対応するアーキテクチャのパッケージが掲載されていない場合、別アーキテクチャのパッケージを無理にインストールしないでください。
cat /etc/os-release
uname -m
- Debian/Ubuntu:ダウンロードページから本機に対応するdebを選び、aptで依存関係を処理しながらインストールします。
- Fedora:本機に対応するrpmを選び、dnfでインストールします。その他のRPM系ディストリビューションでは、使用中のパッケージマネージャーと互換性要件を確認してください。
- その他のデスクトップディストリビューション:AppImageのアーキテクチャと実行要件を確認してください。AppImageがすべてのLinux環境で無条件に動作するわけではありません。
deb:aptでローカルファイルをインストール
ダウンロードページからdebを保存し、Bashターミナルを開いて次の2行を実行します。プロンプトが表示されたら、ダウンロードしたファイルの絶対パスを貼り付けてEnterキーを押してください。入力するパス自体は引用符で囲みません。コマンド内の二重引用符がパス中の空白を保持し、ファイル名が複数の引数に分割されるのを防ぎます。
read -r -p 'debファイルの絶対パスを貼り付けてください:' pkg
sudo apt install "$pkg"
ファイルマネージャーに表示されている場所など、実際のファイルパスを入力してください。ファイル名だけでは実行できません。aptはローカルのdebをインストールし、設定済みのソフトウェアリポジトリから依存関係を解決できます。dpkg -iだけを使うと、依存関係が不足した場合にパッケージの設定が完了しないことがあります。初回インストールではaptを使うと、処理結果をまとめて確認できます。
- aptが表示するインストール・アップグレード・削除の対象を確認してください。広範囲の削除など不審な内容がないことを確かめてから、実行を承認します。
- インストール後、デスクトップのアプリケーションメニューでShadowrocketを検索し、通常のユーザーとして起動します。
- 依存関係を満たせないというメッセージが表示された場合は、エラー全文とディストリビューション情報を記録してください。依存関係を強制的に無視して回避しないでください。
ターミナルにダウンロードの進捗が表示されても、インストール成功とは限りません。aptの最終的な終了結果を確認してください。エラーが残っている場合は、起動を試す前にソフトウェアリポジトリ、ネットワーク、依存関係の問題を解決します。
rpm:Fedoraではdnfを使用
Fedoraでは、アーキテクチャに合ったrpmをダウンロードした後、Bashで同じ方法を使ってパスを入力できます。dnfはローカルパッケージとシステムのソフトウェアリポジトリにある依存関係をまとめて処理します。依存関係の確認を省くために、強制インストール用のオプションを使うことは推奨しません。
read -r -p 'rpmファイルの絶対パスを貼り付けてください:' pkg
sudo dnf install "$pkg"
ローカルのrpmを使っても、すべての手順が完全にオフラインになるとは限りません。不足している依存関係の取得には、有効なソフトウェアリポジトリへの接続が必要な場合があります。ダウンロードがタイムアウトする場合は、まずシステムのリポジトリが利用できるか確認してください。アーキテクチャが一致しない場合は、インストールコマンドを繰り返さず、適切なファイルを選び直してください。
- ファイルが見つからない:パスが完全か確認し、ターミナルのプロンプトや余分な引用符を一緒に貼り付けないでください。
- 依存関係を満たせない:パッケージが対象とするディストリビューション環境を確認してください。他のディストリビューションの基本ライブラリを安易にインストールしないでください。
- セキュリティポリシーにより実行が阻止される:具体的なエラーやセキュリティイベントの記録を残し、ディストリビューションのセキュリティポリシーに沿って原因を確認してください。セキュリティ機能全体を無効にする方法を通常の手順にしないでください。
AppImage:実行権限を付与して起動
AppImageは通常、aptやdnfでインストール済みソフトウェアとして登録されません。管理しやすい固定ディレクトリにファイルを置き、現在のユーザーに実行権限を付与してください。ファイルを移動した場合、以前のパスを参照するデスクトップショートカットも更新が必要です。次のコマンドはディレクトリ全体の権限を変更しません。
read -r -p 'AppImageファイルの絶対パスを貼り付けてください:' app
chmod u+x "$app"
"$app"
最後の行を現在のターミナルで実行すると、起動に失敗した場合にエラー出力を直接確認できます。権限を試すためにsudoでグラフィカルアプリ全体を起動しないでください。ファイルの実行権限、ファイルシステムのマウントオプション、接続に必要なシステム権限は、それぞれ別の問題です。
ネイティブパッケージのインストール
- debの場合
- sudo apt install ローカルファイルの絶対パス
- rpmの場合
- sudo dnf install ローカルファイルの絶対パス
- 依存関係の管理
- パッケージマネージャーがリポジトリと連携して処理
- アンインストール方法
- 実際のパッケージ名を指定してremoveを実行
ネイティブパッケージはシステムにインストール状態が記録されます。ローカルパッケージをダウンロードしただけでは、自動更新用リポジトリが設定されるわけではありません。
AppImageの実行
- 実行権限
- chmod u+x
- 起動時のユーザー
- 現在の一般ユーザー
- ファイルの場所
- 固定ディレクトリ内の実際のパス
- 主な制限
- アーキテクチャ、FUSE、noexecマウント
AppImageの実行要件は、ビルド内容とシステム環境によって異なります。すべての互換性上の制限が自動的に解消されるわけではありません。
ターミナルにFUSE関連のエラーが表示された場合は、使用中のディストリビューションのドキュメントに従って対応する実行環境を導入するか、対応するネイティブパッケージを使用してください。ファイルがnoexecでマウントされたメディア上にある場合、chmodを実行しても起動できないことがあります。実行可能なユーザーディレクトリにファイルを移動して、再度お試しください。
初回起動:既存のサブスクリプションを追加してルーティングを確認
アプリのウィンドウが表示されても、グラフィカルアプリが起動したことしか確認できません。サブスクリプションが利用可能か、システムの通信が取り込まれているかは別途確認が必要です。インストール時にはファイルと依存関係を処理し、アプリ起動後にサブスクリプション、選択中のノード、Global Routing、システム権限をそれぞれ確認します。以下ではHome、Config、Settingsなどの画面表示を手がかりに操作します。プラットフォームによって配置が異なる場合は、現在の画面に表示される項目を確認してください。
-
アプリを起動する
アプリケーションメニューまたはAppImageファイルからShadowrocketを起動します。まずウィンドウが正常に表示されることを確認してください。システムからネットワーク関連の許可を求められた場合は、アプリ名と許可内容を確認して対応します。
-
サブスクリプションを追加
Home → + → Type → Subscribeを開き、自分がすでに利用しているサブスクリプションURLを貼り付けて保存します。URLにはアクセス認証情報が含まれるため、全体が見える状態でスクリーンショットを撮ったり、問い合わせに貼り付けたりしないでください。
-
リストを更新
Homeで該当するサブスクリプションを更新し、ノードが表示されるか確認します。例の
https://example.com/sub?token=xxxxは形式を示すもので、利用可能なサブスクリプションではありません。 -
ルーティング方針を選択
登録済みのノードを1つ選択します。ルールによる振り分けを使う前に、Configで現在の設定を確認し、Global RoutingをConfigに設定してください。テスト時には選択したノードとルーティングモードを記録します。
-
接続を確認
接続を有効にして対象ページにアクセスし、利用可能な接続ログを確認します。リクエストがクライアントに届いているか、どのポリシーが適用されたかを確認してください。スイッチがオンになっているだけで成功と判断しないでください。
サブスクリプションに含まれるアドレス、ポート、パスワード、TLSパラメーターは、利用中のサービス提供元の案内に従ってください。テストのために安易に443へ変更しないでください。Settings → On Demandは条件に応じて接続するための設定で、インストール時の依存関係を修復する項目ではありません。現在のプラットフォームでこの機能が利用できる場合に限り、必要に応じて設定します。初回のトラブルシューティングでは手動接続を使い、自動接続の条件によって結果が左右されないようにしてください。
インストール後に選ぶGlobal Routingのモード
インストールパッケージの形式が、通信の振り分け方を決めるわけではありません。普段使う場合は、まず設定内容を確認してからルーティングモードを選びます。以下で比較するのはShadowrocket自体の設定です。これらのモードはクライアントが取り込んだリクエストに適用されます。Linux上のすべてのプロセスの通信がプロキシに入るとは限りません。
Config
おすすめ現在の設定にあるルールとポリシーに従ってリクエストを処理します。Configで有効なファイルを確認してください。ルール内のPROXYとDIRECTが、実際の利用目的に合っている必要があります。
適した用途:設定を確認したうえで、日常的にルールで通信を振り分ける場合
Proxy
取り込まれたリクエストにプロキシポリシーを適用します。ノードへの接続とルールのマッチング、どちらに問題があるかを一時的に切り分ける際に使えます。システム通信を取り込む設定の代わりにはなりません。
適した用途:登録済みノードの接続可否を短時間で確認する場合
Direct
取り込まれたリクエストを宛先へ直接接続します。この状態でウェブページが開いても、プロキシノードが動作している証拠にはならず、サブスクリプションが有効だとも判断できません。
適した用途:直接接続の結果と比較し、ローカルネットワークを確認する場合
たとえば、例に挙げたドメインだけをプロキシ経由にし、その他のリクエストを直接接続するには、設定のRuleセクションに次のようなルールを記述します。これはルール構文の例で、ノードは含まれていません。適用前に現在の設定をバックアップし、PROXYが参照するプロキシポリシーが利用可能か確認してください。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIXは指定したドメインとそのサブドメインに一致します。ルールは上から順に確認されます。FINALは、それ以前のルールに一致しなかったリクエストを処理するため、最後に配置してください。ConfigとProxyで結果が異なる場合は、ソフトウェアを再インストールするのではなく、一致したルールを確認します。モードや設定項目を引き続き確認する場合は、プロキシモードと設定項目をご覧ください。
よくある質問:起動できない・更新・アンインストール
AppImageをダブルクリックしても反応しない場合は?
まずターミナルからファイルを実行して、エラーを確認してください。Permission deniedが表示された場合は、実行権限とファイルシステムのnoexec制限を確認します。FUSEエラーの場合は、対応する実行環境を整えてください。Exec format errorの場合は、アーキテクチャを確認します。起動エラーをすべてサブスクリプションの問題と決めつけないでください。
debやrpmをインストールすると自動更新されますか?
ローカルファイルをインストールしただけでは、自動更新用リポジトリが設定されるとは限りません。更新する際は当サイトのダウンロードページに戻り、形式とアーキテクチャが一致する新しいパッケージをダウンロードしてから、apt installまたはdnf installを実行してください。パッケージマネージャーが表示する処理内容を事前に確認します。AppImageを更新する場合は、アプリを終了してからファイルを置き換え、実行権限を再確認してください。
アンインストール時に指定するパッケージ名はどう確認しますか?
ウィンドウタイトルをパッケージ名として使わないでください。debはdpkg-deb -f "$pkg" Packageで元ファイルのPackageフィールドを確認できます。rpmはrpm -qp --queryformat '%{NAME}\n' "$pkg"で確認します。ここでpkgが該当するインストール元ファイルを指していることを確かめてから、取得した名前をパッケージマネージャーに渡してアンインストールします。
ノードリストが空です。再インストールが必要ですか?
まずサブスクリプションURLが完全か、有効期限が切れていないか、更新で有効なノードが返されるかを確認してください。エラーメッセージを保存し、利用中のサービス提供元にURLの状態を問い合わせます。プログラムを再インストールしても、サーバーから空の内容が返される問題は通常解決しません。バックアップしていない設定をテスト目的で削除しないでください。
ネイティブパッケージは通常、apt removeまたはdnf removeでアンインストールできますが、事前にパッケージ名を確認してください。AppImageはプロセスを終了してから、該当ファイルと自分で作成したショートカットを削除します。これらの操作でユーザーディレクトリ内の設定まで削除されるとは限りません。インストール形式を変更する前に必要な設定を保存し、接続状態や設定元が分からなくならないよう、複数のインスタンスを同時に起動しないでください。
Shadowrocketの入手方法と初期設定
iPhone/iPad版はApp Storeで$2.99の買い切りです。Mac(Appleシリコン/Intel)、Windows、Android、Linux版は無料です。Linuxではディストリビューションとアーキテクチャに合ったパッケージを選んでください。インストール後は、すでに利用しているサブスクリプションを使って設定を続けます。