この記事では、Ubuntu 24.04、Debian 12、Fedora 42 などの一般的なデスクトップ環境を対象に、CPU アーキテクチャの確認、deb/rpm パッケージのローカルインストール、v2rayN 7 系の初期設定、systemd ユーザーサービスによる自動起動、システムプロキシの確認、ログの調査方法を解説します。再現性のある Linux デスクトップへの導入手順を整え、クライアントの起動、Xray コアの待受、デスクトップ通信のプロキシ経由という3つの状態を切り分けられるようにします。
インストールパッケージとシステムアーキテクチャの確認
Linux へのインストールでは、ファイルをいきなりダブルクリックするのではなく、まずディストリビューションのパッケージ形式と CPU アーキテクチャを確認します。Ubuntu、Debian、Linux Mint などの Debian 系ディストリビューションは deb パッケージ、Fedora、Rocky Linux などの RPM 系ディストリビューションは rpm パッケージを使用します。形式を間違えると、ソフトウェアセンターにはインストールできない、またはサポートされていない形式といったエラーが表示されます。
CPU アーキテクチャも一致させる必要があります。一般的なデスクトップ PC で uname -m を実行すると、多くの場合 x86_64 が返り、ダウンロード項目の x64 または 64 に対応します。一部の ARM デスクトップでは aarch64 が返り、arm64 を選択します。システム名からアーキテクチャを推測したり、Android 用パッケージを Linux デスクトップで使ったりしないでください。
Ubuntu 24.04
- パッケージ形式
- deb
- パッケージマネージャー
- APT 2.7
- サービス管理
- systemd 255
- 代表的なデスクトップ環境
- GNOME
apt でローカルの deb パッケージをインストールし、依存パッケージも同時に解決します。
Debian 12
- パッケージ形式
- deb
- パッケージマネージャー
- APT 2.6
- サービス管理
- systemd 252
- 代表的なデスクトップ環境
- GNOME または KDE Plasma
安定版では基本コンポーネントが古い場合があります。インストールに失敗したら、まず不足している依存パッケージ名を確認してください。
Fedora 42
- パッケージ形式
- rpm
- パッケージマネージャー
- DNF 5
- サービス管理
- systemd 257
- 代表的なデスクトップ環境
- GNOME
dnf でローカルの rpm パッケージをインストールし、依存関係はリポジトリから自動的に補完します。
アーキテクチャの対応関係
- x86_64
- x64 または 64
- aarch64
- arm64
- 確認コマンド
- uname -m
- システム情報
- /etc/os-release
パッケージ形式とアーキテクチャは両方とも一致させる必要があり、どちらか一方でも間違えるとインストールできません。
cat /etc/os-release を実行すると、ディストリビューション名とバージョンを確認できます。複数のホストへリモート接続している場合、デスクトップの外観に頼るよりもこのコマンドのほうが確実です。v2rayN はデスクトップクライアントのため、この記事の自動起動設定も、グラフィカルセッションにログインした一般ユーザーを前提とします。GUI アプリを root のシステムサービスとして設定しないでください。
uname -m
cat /etc/os-release
printf 'デスクトップセッション:%s\n' "$XDG_CURRENT_DESKTOP"
printf 'セッションタイプ:%s\n' "$XDG_SESSION_TYPE"
deb・rpm のローカルインストール手順
ダウンロードが完了したら、低レベルの dpkg -i や rpm -i を直接使うのではなく、ターミナルからシステムのパッケージマネージャーでインストールすることをおすすめします。APT と DNF はパッケージの依存関係を読み取り、現在有効なリポジトリから不足している共有ライブラリを補完します。インストールコマンドはパッケージのあるディレクトリで実行し、ファイルのワイルドカードが v2rayN パッケージ1つだけに一致することを確認してください。
-
アーキテクチャを確認
uname -mを実行します。x86_64が返った場合は x64 パッケージ、aarch64が返った場合は arm64 パッケージを選択します。 -
パッケージ形式を選択
Ubuntu と Debian では deb、Fedora では rpm を選択します。インストールパッケージは当サイトのクライアントページから Linux プラットフォーム用を取得してください。
-
インストールを実行
ダウンロードディレクトリで
sudo apt install ./v2rayN-linux-*.debを実行するか、Fedora ではsudo dnf install ./v2rayN-linux-*.rpmを実行します。 -
実行ファイルの場所を確認
command -v v2rayNを実行し、実際の実行ファイルのパスを記録します。一般的な結果は/usr/bin/v2rayNです。 -
初回起動を完了
アプリケーションメニューから v2rayN を起動し、「設定」→「パラメータ設定」→「Core タイプ」を開き、Xray コアが選択されていることを確認して保存します。
Ubuntu と Debian で推奨されるコマンドは sudo apt install ./v2rayN-linux-*.deb です。コマンド内の ./ は現在のディレクトリにあるローカルファイルを示します。これを省くと、APT は名前をリポジトリのパッケージとして検索します。先に dpkg -i を使って依存関係が未設定になった場合は、sudo apt --fix-broken install を実行して修復し、その後ローカルインストールを再実行してください。
Fedora では sudo dnf install ./v2rayN-linux-*.rpm を使用します。DNF 5 には、追加が必要なパッケージ、ダウンロード容量、インストール結果が表示されます。リポジトリのポリシーが厳しい場合は、先に sudo dnf makecache を実行してメタデータを更新してから、インストールをやり直してください。依存関係を無視して rpm データベースへ強制的に書き込まないでください。
cd "$HOME/Downloads"
# Ubuntu / Debian
sudo apt update
sudo apt install ./v2rayN-linux-*.deb
# Fedora
sudo dnf makecache
sudo dnf install ./v2rayN-linux-*.rpm
# インストール後の確認
command -v v2rayN
v2rayN --version
初回起動・サブスクリプション・コアの待受
アプリが正常に開いたことは、GUI が動作していることを示すだけで、プロキシ経路が確立したことを意味しません。完全な状態には少なくとも、サブスクリプションの更新、ノードの選択、Xray コアプロセスの正常動作、デスクトップアプリの通信がローカル待受ポートを経由していることの4項目が含まれます。初期設定はこの順番で行い、システムプロキシが有効になる前にノードを利用できないと誤判断しないようにしてください。
v2rayN のメイン画面でサブスクリプションを追加したら、まず現在のサブスクリプショングループを更新し、ノードを1つ選んで起動します。VLESS や VMess などのプロトコル設定は通常サブスクリプションから読み込まれます。アドレス、ポート、UUID、通信方式、TLS 項目を手動で変更すると、設定とサーバー側が一致しなくなる可能性があります。サブスクリプションは設定を配布するだけで、クライアント自体がノードアドレスを提供するわけではありません。
デスクトップ環境別の構成:システムプロキシとローカルポートを段階的に確認
GNOME デスクトップ
- まず v2rayN のシステムプロキシスイッチを使用
- 「設定」→「ネットワーク」→「ネットワークプロキシ」で状態を確認
- ブラウザーや多くのデスクトップアプリはデスクトップのプロキシ設定を読み取ります
- ターミナルのプログラムは、それぞれのプロキシ設定または環境変数に従って動作します
KDE Plasma デスクトップ
- システム設定のプロキシ画面で手動プロキシの値を確認
- HTTP と HTTPS のポートが v2rayN の設定と一致していることを確認
- 新しい設定を読み込んでいないデスクトップアプリを再起動
- ターミナルコマンドのプロキシ経路は別途確認が必要です
結論:まずローカルポートが待ち受け中であることを確認し、その後でデスクトップのプロキシ設定を確認します。ポートが待ち受けていなければ、システムプロキシを何度切り替えてもコアプロセスは復旧しません。
v2rayN でよく使われるローカル SOCKS 待受ポートは 10808、HTTP 待受ポートは 10809 です。実際の値は「設定」→「パラメータ設定」のローカル待受設定を基準にしてください。以前の設定の移行、ポートの競合、ユーザーによる変更によって最終的なポートは変わる場合があります。ss -lntp を実行すると、対象ポートが LISTEN 状態かどうかを直接確認できます。
ポートの存在を確認したら、SOCKS と HTTP の経路を個別にテストできます。SOCKS のテストには socks5h の使用をおすすめします。末尾の h は、ドメイン名の解決もプロキシ経由で行うことを示します。テストで HTTP レスポンスヘッダーが返れば、ローカルクライアント、選択したノード、対象サイトの間に基本的な接続が確立しています。ブラウザーだけが失敗する場合は、デスクトップやブラウザーのプロキシ設定を重点的に確認してください。
ss -lntp | grep -E '10808|10809'
curl -I --proxy socks5h://127.0.0.1:10808 https://v2rayair.com/
curl -I --proxy http://127.0.0.1:10809 https://v2rayair.com/
systemd ユーザーサービスによるログイン時の自動起動
Linux のデスクトップアプリには、/etc/systemd/system に置くシステムサービスではなく、systemd のユーザーサービスが適しています。ユーザーサービスはデスクトップアカウントのログイン後に実行され、ユーザーディレクトリ、D-Bus セッション、グラフィカル環境の情報を継承できます。一方、システムサービスはログイン画面が表示される前に起動する可能性があり、その時点ではグラフィカルセッションがないため、v2rayN のウィンドウやトレイの状態を正常に確立できない場合があります。
サービスを作成する前に、command -v v2rayN を実行してください。以下の例では一般的なパス /usr/bin/v2rayN を使用しますが、コマンドが別のパスを返した場合は ExecStart を必ず変更します。サービスファイルは現在のユーザーの ~/.config/systemd/user/ に保存し、作業中に sudo は使用しません。
mkdir -p "$HOME/.config/systemd/user"
cat > "$HOME/.config/systemd/user/v2rayn.service" <<'EOF'
[Unit]
Description=v2rayN Linux desktop client
After=graphical-session.target network-online.target
PartOf=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/v2rayN
Restart=on-failure
RestartSec=5
[Install]
WantedBy=graphical-session.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now v2rayn.service
Restart=on-failure はプロセスが異常終了した場合だけ再起動します。クライアントを正常に終了しても再起動を繰り返すことはありません。RestartSec=5 は5秒の間隔を設け、設定ミスによる短時間の連続起動を防ぎます。PartOf=graphical-session.target により、グラフィカルセッションの終了に合わせてサービスも終了します。ウィンドウやトレイを操作するクライアントに適した設定です。
一部のデスクトップ環境では graphical-session.target が自動的に起動されなかったり、ユーザーマネージャーが Wayland、X11、D-Bus の環境変数をすぐに取得できなかったりします。まず環境変数を取り込んでから、サービスを再起動してください。サービスが成功と表示されても画面が現れない場合は、systemctl --user show-environment に DISPLAY、WAYLAND_DISPLAY、DBUS_SESSION_BUS_ADDRESS が存在するか確認します。
systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DBUS_SESSION_BUS_ADDRESS
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DBUS_SESSION_BUS_ADDRESS
systemctl --user restart v2rayn.service
systemctl --user status v2rayn.service
journalctl --user -u v2rayn.service -b --no-pager
- Loaded が loaded:systemd がサービスファイルを読み込み、少なくとも構文とパスを解析できています。
- Active が active (running):v2rayN のメインプロセスは動作中ですが、Xray コアと待受ポートも確認する必要があります。
- 状態が 203/EXEC:
ExecStartのパスが間違っている、ファイルが存在しない、または実行権限がありません。 - 短時間に再起動を繰り返す:ログの最後の30行を確認し、設定の破損、ポートの使用中、グラフィカル環境の環境変数を調べます。
- 手動起動は正常だが自動起動に失敗:ログイン後のターミナルと systemd ユーザーマネージャーの環境変数を重点的に比較します。
デスクトップ環境で graphical-session.target が有効になっていない場合は、サービスのインストール先を default.target に変更できます。ただし、グラフィカル環境の取り込みは残してください。変更後、systemctl --user disable v2rayn.service を実行してサービスファイルを編集し、その後 systemctl --user daemon-reload と systemctl --user enable --now v2rayn.service を実行します。systemd サービスとデスクトップ環境の自動起動項目を同時に設定しないでください。ログイン時に2重起動される可能性があります。
システムプロキシの適用とルーティングの確認
自動起動に成功した後も、「クライアントが起動した状態」と「システムプロキシが通信を引き受けている状態」を区別する必要があります。v2rayN は起動後にコアを実行できますが、システムプロキシのスイッチが自動的に復元されるかどうかは、クライアントの設定、デスクトップ環境、前回終了時の状態によって異なります。ログイン後はまずトレイの状態を確認し、「設定」→「パラメータ設定」で起動動作とシステムプロキシ関連の項目を確認してください。
システムプロキシが主に影響するのは、デスクトップのプロキシ設定を読み取るアプリです。ターミナルの curl、パッケージマネージャー、開発ツールはデスクトップ設定を無視したり、http_proxy、https_proxy、all_proxy 環境変数だけを読み取ったりすることがあります。そのため、「ブラウザーはアクセスできるのにターミナルは接続できない」場合、通常はルーティングルールの問題ではなく、2つのプログラムが異なるプロキシ入口を使っていることが原因です。
コアの状態
- 確認対象
- Xray プロセス
- SOCKS の例
- 127.0.0.1:10808
- HTTP の例
- 127.0.0.1:10809
- 確認コマンド
- ss -lntp
待受ポートが存在しない場合は、先にコアのログを確認し、デスクトッププロキシを変更しないでください。
デスクトッププロキシ
- GNOME の設定箇所
- 設定 → ネットワーク → ネットワークプロキシ
- KDE の設定箇所
- システム設定 → ネットワーク → プロキシ
- 接続先アドレス
- 127.0.0.1
- ポートの参照元
- v2rayN パラメータ設定
デスクトップに表示されるポートは、現在コアが待ち受けているポートと一致している必要があります。
ルーティングを確認するときは、まず v2rayN をグローバルプロキシモードに切り替え、ノードと通信経路が正常であることを確認してから、ルールモードに戻します。グローバルモードでは使えるのにルールモードでは使えない場合、問題はドメイン、IP、geosite、geoip、または出タグのマッチングにある可能性が高くなります。両方のモードで使えない場合は、ノードパラメータ、時刻同期、DNS、コアのログを先に確認してください。
VMess はシステム時刻のずれに比較的敏感で、VLESS Reality も正しいドメイン、ポート、サーバー名、フィンガープリント、公鍵の設定を必要とします。timedatectl status を実行し、System clock synchronized が yes になっていることを確認してください。時刻が同期されていない場合は、システムのネットワーク時刻サービスを有効にしてから接続を再テストします。
systemctl --user status v2rayn.serviceを実行し、デスクトップクライアントのプロセスが動作中であることを確認します。ss -lntpを実行し、設定されている SOCKS または HTTP ポートが待ち受け中であることを確認します。- 明示的な
curl --proxyコマンドを使ってローカルプロキシの入口を確認し、デスクトップ環境に依存しないテストを行います。 - デスクトップのネットワークプロキシ画面を開き、アドレスが
127.0.0.1で、ポートも一致していることを確認します。 - グローバルモードとルールモードを個別にテストし、障害が基本接続にあるのか、ルーティングのマッチングにあるのかを判断します。
journalctl --user -u v2rayn.service -bを実行し、今回の起動サイクルに関するログを保存します。
timedatectl status
systemctl --user status v2rayn.service
ss -lntp | grep -E '10808|10809'
journalctl --user -u v2rayn.service -b -n 30 --no-pager
よくあるインストール・自動起動の問題
Linux デスクトップへの導入で起きる問題の多くは、パッケージの不一致、実行ファイルのパス変更、グラフィカルセッション環境の未取り込み、ローカルポートの競合という4種類に分類できます。インストール層、プロセス層、コア層、システムプロキシ層の順に確認すると、何度もアンインストールと再インストールを繰り返すより原因を特定しやすくなります。
deb パッケージをダブルクリックしても待機状態のまま進まない場合は?
ターミナルを開いてダウンロードディレクトリへ移動し、sudo apt install ./v2rayN-linux-*.deb を実行します。ターミナルには具体的な依存パッケージ名とリポジトリのエラーが表示されます。未完了のパッケージ設定がある場合は、続けて sudo apt --fix-broken install を実行してください。
サービスに 203/EXEC と表示された場合の対処法は?
command -v v2rayN を実行して実際のパスを取得し、その結果をサービスファイルの ExecStart に記述します。その後、systemctl --user daemon-reload と systemctl --user restart v2rayn.service を実行してください。
ログイン後もプロセスは存在するのにウィンドウが表示されない場合は?
systemctl --user show-environment を実行し、DISPLAY、WAYLAND_DISPLAY、DBUS_SESSION_BUS_ADDRESS を確認します。不足している場合はグラフィカルセッションの環境を取り込み、ユーザーサービスを再起動してください。
ノードは接続済みなのにブラウザーが直通する場合は?
まず ss -lntp でポートを確認し、GNOME の「設定」→「ネットワーク」→「ネットワークプロキシ」、または KDE のプロキシ設定画面で 127.0.0.1 と実際のポートを確認します。その後、ブラウザーを完全に終了して再起動してください。
ログに 10808 ポートが使用中と表示される場合は?
ss -lntp | grep 10808 を実行して使用中のプロセスを探します。重複して起動している v2rayN のインスタンスを終了するか、「設定」→「パラメータ設定」で未使用のポートに変更し、デスクトップのプロキシ設定も同じ値に更新してください。
v2rayN をアップグレードした後は、再度 command -v v2rayN を実行し、パッケージマネージャーによって起動パスが変更されていないことを確認します。その後、ユーザーサービスを再起動してログを確認してください。サブスクリプションの更新に失敗した場合は、サブスクリプション URL が完全であること、システム時刻が正しいこと、現在のネットワークからサブスクリプションサービスにアクセスできることを確認します。既存のノード経由でサブスクリプションを更新する必要がある場合は、サブスクリプション設定で対応するプロキシ更新オプションを有効にしてください。
アンインストール前に systemd ユーザーサービスを作成している場合は、まず systemctl --user disable --now v2rayn.service を実行し、~/.config/systemd/user/v2rayn.service を削除してからユーザーサービスを再読み込みます。これにより、パッケージを削除した後もユーザーマネージャーが存在しない実行ファイルを呼び出そうとする問題を防げます。
systemctl --user disable --now v2rayn.service
rm "$HOME/.config/systemd/user/v2rayn.service"
systemctl --user daemon-reload
systemctl --user reset-failed