Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Свой VLESS-прокси бесплатно одной командой: Xray + XHTTP на Alwaysdata

2026年09月22日に「Dev.to」が公開したITニュース「Свой VLESS-прокси бесплатно одной командой: Xray + XHTTP на Alwaysdata」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Alwaysdataの無料プランを使い、XrayとXHTTPでVLESSプロキシをコマンド一つで構築する技術が紹介されている。無料で海外プロキシが手軽に作れるが、サービスの規約違反にあたるため、アカウント停止のリスクがある。あくまで予備として利用し、クライアントはXrayコア必須だ。

ITニュース解説

この記事は、お金をかけずに自分専用のプロキシサーバーを構築する方法について解説している。プロキシサーバーとは、インターネットに接続する際に、あなたと目的のウェブサイトやサービスとの間に立つ中継役のことだ。これを使うことで、自分のIPアドレスを隠したり、地理的な制限があるサービスにアクセスしたりできる。しかし、通常プロキシサーバーを運用するには、VPS(Virtual Private Server、仮想専用サーバー)というレンタルサーバーを契約する必要があり、これには費用がかかる。また、無料で使えるプロキシサービスも存在するが、すぐに利用できなくなったり、クレジットカード情報の登録が求められたり、特定の国からのアクセスしか許可されなかったりといった制約が多いのが現状だ。

記事の筆者は、このような課題に直面し、無料でありながら安定して利用できるプロキシを求めていた。そして、その解決策として目をつけたのが、フランスのホスティングサービス「alwaysdata」の無料プランだった。alwaysdataの無料プランは、100MBのディスク容量とDebian 12というOSが提供され、さらにSSH(Secure Shell)という方法でサーバーに安全に接続できるという利点がある。また、「User program」という機能を使えば、自分で作成したプログラムをサーバー上で継続的に実行させることができ、HTTPS(安全なWeb通信)の設定も自動で提供されるため、証明書などの複雑な設定は不要だった。

しかし、alwaysdataには大きな制約があった。それは、外部からの通信はHTTP(S)プロトコル(ウェブサイトの閲覧に使われる通信方式)しか許されておらず、WireGuardのような他のプロトコルで使われるTCP/UDPポートへの直接アクセスができない点だ。この制約をクリアするために、筆者は「Xray」という多機能な通信ソフトウェアと、その中に含まれる「VLESS」というプロトコル、そして「XHTTP」というトランスポート方式を組み合わせることにした。VLESSは次世代のプロキシプロトコルの一つで、XHTTPはVLESSの通信を通常のHTTPリクエストのように見せかけて送受信する技術だ。これにより、alwaysdataのHTTP(S)しか通さないという制限を回避し、プロキシ通信を実現する。具体的には、ユーザーのクライアント(PCやスマートフォン)から送られたVLESS + XHTTPの通信は、まずalwaysdataのプロキシサーバーを経由し、そこからalwaysdataの内部ネットワークにあるXrayサーバーに転送され、最終的にインターネットへ出ていくという流れになる。

この仕組みを簡単に構築するために、筆者は三つのシェルスクリプト(サーバー上で実行するプログラム)を作成した。一つ目はinstall.sh(Windowsではinstall.cmd)で、これはあなたのPCから実行する。このスクリプトは、SSHを使って必要なファイルをalwaysdataのサーバーにアップロードし、サーバー側のインストールプロセスを起動する役割を担う。二つ目のsetup.shは、サーバー側でXray本体をインストールし、プロキシに必要な秘密情報(UUIDなど)を作成し、クライアントに設定すべきプロキシ接続用のリンク(vless://で始まるURL)を生成して表示する。そして三つ目のstart.shは、alwaysdataの「User program」として登録され、サーバーが起動するたびにXrayを設定し、実行する。

実際のインストールは、まずalwaysdataに登録し、コントロールパネルからSSHアクセスを有効にする。次に、提供されたGitHubリポジトリからスクリプトをダウンロードし、./install.sh <アカウント名>@ssh-<アカウント名>.alwaysdata.netのようなコマンドで実行する。すると、スクリプトがSSHパスワードを一度だけ尋ねた後、自動でXrayのインストールと設定を行い、最終的にクライアントで使うvless://リンクを表示してくれる。最後に、alwaysdataのコントロールパネルでウェブサイトの設定を「Type: User program」、「Command: /home/<アカウント名>/start.sh」に変更し、サイトを再起動すればプロキシサーバーの準備は完了する。このvless://リンクをv2rayNGなどのXrayコアベースのクライアントアプリケーションにインポートするだけで、プロキシを利用できるようになる。

しかし、このアイデアを実際にalwaysdataで動かす過程で、いくつかの「落とし穴」に遭遇し、筆者はそれを解決するための工夫を凝らしている。

一つ目の問題は、Xrayが使用するIPアドレスとポート番号が固定できないことだった。alwaysdataは、Xrayを実行するプログラムに対し、環境変数として内部のIPv6アドレスと動的に割り当てられるポート番号を提供する。当初、筆者は8080のような固定ポートを設定しようとしたが、これでは正しく動作しなかったため、start.shスクリプト内でこれらの環境変数からIPアドレスとポート番号を取得するように変更した。これにより、サーバーが再起動してポート番号が変わっても、Xrayが常に正しいアドレスで通信を待ち受けることができるようになった。

二つ目の問題は、alwaysdataのプロキシサーバーが特定のデータ転送方式をサポートしていなかったことだ。XHTTPにはいくつかのモードがあるが、「stream-up」や「stream-one」といった、一つの長い接続でデータをストリーミングする方式では、alwaysdataのプロキシが接続を切断してしまった。そのため、データを短いHTTPリクエストに分割して送信し、受信は一つの長いHTTPリクエストで行う「packet-up」モードに固定することで、alwaysdataのプロキシを問題なく通過させることができた。クライアントに提供されるvless://リンクにも、この「mode=packet-up」という設定が明示されている。

三つ目の問題は、ログの肥大化とプライバシーの問題だ。alwaysdataのプロキシは、クライアントの実際のIPアドレスを「X-Forwarded-For」というHTTPヘッダーに追加してXrayに転送する。Xrayの古いバージョンでは、このヘッダーが存在すると警告メッセージをログに出力していたため、大量のログが生成され、alwaysdataの100MBというディスク容量を圧迫してしまう可能性があった。また、ログに接続情報が残ることはプライバシーの観点からも望ましくない。この問題を解決するため、Xrayの設定に「sockopt.trustedXForwardedFor」という項目を追加し、「X-Forwarded-For」ヘッダーを信頼するよう設定することで警告を抑制した。さらに、接続ログ自体も無効化し、「access: none」とすることで、ディスク容量の節約とプライバシー保護を実現した。

四つ目の問題は、Xrayのバージョン管理に関するものだ。Xrayの設定ファイル形式は時々変更され、最新の機能を利用するには新しいバージョンが必要となる。しかし、GitHubで提供される「安定版」は古い形式しかサポートしておらず、最新の「プレリリース版」を使う必要があった。そこで、setup.shスクリプトはGitHubのRSSフィードから最新バージョン番号を取得し、常に最新のプレリリース版をダウンロードしてインストールするようにした。また、ダウンロードしたXrayのバイナリファイルが改ざんされていないかを確認するため、SHA-256というハッシュ値を使った整合性チェックも行っている。

五つ目の問題は、異なるOS(macOS、Linux、Windows)で同じインストールコマンドを実行するための工夫だ。筆者は、tarコマンドとsshコマンドを組み合わせて、ローカルPCからサーバーにファイルを転送し、サーバー上でスクリプトを実行する一連の処理を一つのコマンドにまとめた。macOSのtarコマンドが生成する特殊なファイルをLinuxのtarがエラーにしないように、--exclude='._*'などのオプションを付与して対応している。Windows 10/11では、標準でsshとtarが使えるため、install.cmdというバッチファイルを用意し、PowerShellではなくコマンドプロンプトで実行することでバイナリデータの破損を防ぎ、クロスプラットフォーム対応を完成させた。

六つ目の問題は、設定ファイルの安全な検証だ。Xrayのコンフィグレーションは複雑な場合があり、誤った設定だとXrayが起動しない。そこで、start.sh --checkというコマンドを用意し、IPアドレスやポート番号をダミーの値に置き換え、一時ファイルを一切残さずにXrayの設定が正しいかをテストできるようにした。これにより、実際にプロキシサーバーを稼働させる前に設定の誤りを検知し、問題を未然に防ぐことができる。

これらの工夫の結果、このプロジェクトは、約38MBのディスク容量(ほとんどがXray本体)で動作し、ダウンロード速度は75〜80Mbps程度を記録している。また、install.shを再実行するだけでXrayとスクリプトを簡単に更新でき、プロキシの識別子であるUUID(Universally Unique Identifier)や接続リンクは変わらない。ただし、重要な制限として、alwaysdataの無料プランの利用規約ではプロキシサーバーの運用が禁止されているため、アカウントがいつでも停止される可能性がある。この方法はあくまで「無料の予備オプション」として活用し、安定した運用には別途VPSの契約を検討すべきだ。その他にも、120日ごとにalwaysdataのパネルにログインする必要がある点や、利用できるクライアントアプリケーションがXrayコアベースのものに限られる点、そしてプロキシの出口IPアドレスが常にフランス固定である点も理解しておく必要がある。

このプロジェクトは、無料サービスが持つ制限の中で、どのように目的を達成するか、そして予期せぬ技術的な課題にどう対処するかという、システムエンジニアにとって非常に重要な問題解決能力と工夫の精神を示している。無料ホスティングの制約を逆手に取り、VLESSとXHTTPを組み合わせるというアイデア、そしてその実装過程で遭遇する細かい技術的な問題を一つ一つ丁寧に解決していくプロセスは、これからシステム開発を目指す初心者にとって、実践的な学びとなるだろう。

関連コンテンツ

関連IT用語