はじめに
本記事ではWebブラウザをクライアントとして利用可能なリモートデスクトップ環境をXpraを用いて構築する。
Xpraの基本的なインストール方法から、SSL対応、パスワード認証、音声転送などリモートデスクトップ環境の構築に役立つ実践的な手順を詳述する。
リモートデスクトップ環境の構築は、ソフトウェア開発者にとって重要な課題の一つであり、サクサクと動作するリモートディスクトップ環境は開発効率を大きく改善するだろう。XRDPやVNCなどのパフォーマンスに不満もっているユーザーは多いと思う。Xpraのサクサク感はその解決策になるかもしれない。また、クライアントアプリとしてWebブラウザが使えるため、エンドユーザーからすると気軽にリモートデスクトップ環境を試すことが可能になる。
まとめ
所見
Webブラウザから気軽にリモートディスクトップにアクセスすることができた。また筆者の環境ではパフォーマンスよくサクサクと動作した。スクロールやキー入力、YouTubeの動画再生にまったくストレスを感じない。
残念な事が1つあり、日本語のCopy&Pasteをうまく動作させる方法が見つからなかった。アルファベットは問題なくCopy&Pasteできるため開発環境としては困らないだろう。
Xpraの設定
sudo apt-get update
sudo apt-get install xpra
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem -sha256
cat key.pem cert.pem > ssl-cert.pem
Xpraの起動
暗号化、パスワード認証、音声転送をサポートしてXpraでリモートディスクトップを起動する
xpra start :100 --bind-ssl=0.0.0.0:10000 --html=on --start-child=gnome-terminal --ssl-cert=ssl-cert.pem --ssl-auth=sys
Webブラウザからリモートディスクトップにログイン
Webブラウザから https://192.168.1.113:10000/connect.html (IPアドレスは環境に応じて変更する) にアクセスし、ユーザー名とパスワードを入力することで、リモートデスクトップに接続することができる。
テスト環境
役割 | OS | 説明 |
---|---|---|
サーバー | Ubuntu 24.04 | Xpraでリモートデスクトップを提供する |
クライアント | MacOS 14.2.1 | Webブラウザ(Chrome)からリモートディスクトップにアクセスする |
Xpraのインストール
Xpraはリモートデスクトップのセッションを管理し、アプリケーションのリモート表示を実現するためのツールである。Ubuntu環境において、Xpraをインストールするには、以下のコマンドを実行する。
sudo apt-get update
sudo apt-get install xpra
この手順により、最新バージョンのXpraがシステムにインストールされる。
XpraをWebブラウザ対応で起動する
DISPLAY=:100
でポート番号10000にてWebブラウザからの接続を待つコマンドを実行する
xpra start :100 --bind-tcp=0.0.0.0:10000 --html=on --start-child=gnome-terminal
Chromeを使って http://192.168.1.133:10000 (IPアドレスは環境に応じて変更する) にアクセスし、192.168.1.133のリモートディスクトップに接続する。start-child
でしていたgnome-terminal
が自動起動されている。
リモートディスクトップのターミナルでChromeブラウザを起動する
google-chrome
ChromeブラウザでYouTubeを表示できる(音声は非対応)ことを確認した。
XpraをSSLに対応させる
リモート接続のセキュリティを強化するためには通信を暗号化することが重要である。ここでは、自己署名証明書を生成し、SSL対応でXpraを起動する手順を説明する。
証明書を生成する。
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem -sha256
cat key.pem cert.pem > ssl-cert.pem
生成した証明書を使用してXpraを起動する
xpra start :100 --bind-ssl=0.0.0.0:10000 --html=on --start-child=gnome-terminal --ssl-cert=ssl-cert.pem
--bind-tcp
オプションを使用すると、HTTPでも接続が可能になるため、セキュリティ上の理由から--bind-ssl
オプションに変更する。
この設定により、ブラウザでHTTPS経由での安全なアクセスが可能になる。
HTTPSでリモートディスクトップに接続する
自己署名証明書を使用しているため、リモートディスクトップに接続する際にWebブラウザからは警告が表示される。しかし、信頼できる接続であることが明らかであるため、警告を無視してアクセスする。
HTTPS接続を確認する
Devtoolsでhttps接続が確認できる
パスワードによるアクセス制御の導入
XpraではSSL認証を使用してパスワードによるアクセス制御を行うことができる。--ssl-auth=sys
を追加した以下のコマンドでシステムのユーザ名とパスワードを用いた認証を有効にする。
xpra start :100 --bind-ssl=0.0.0.0:10000 --html=on --start-child=gnome-terminal --ssl-cert=ssl-cert.pem --ssl-auth=sys
Chromeで https://192.168.1.113:10000/connect.html (IPアドレスは環境に応じて変更する) にアクセスし、ユーザー名とパスワードを入力することで、リモートデスクトップに接続することができる。
音声のリモート転送設定
リモートデスクトップでの音声転送にも対応しており、例えばYouTubeの動画をリモートで再生することが可能である。設定は、ブラウザでhttps://192.168.1.113:10000/connect.html
にアクセスし、Advanced options
を開いて、Audio forwarding, codec:
の項目でlegacy:wav
を選択することで行う。
他のコーデックでは、筆者の環境で処理落ちが発生したが、最適な設定は環境に依存するため、個別に調整することが推奨される。
音声再生をサポートした形でYouTubeの動画を再生できた。
YouTube再生中はXpraから大量のWebP画像がクライアントのWebブラウザに送信されていることが確認される。
OpenGLサポートの検討
OpenGLサポートを有効にすることで、リモートでの3Dレンダリングが可能になる。VirtualGLを利用することで対応できるが、nVidia以外のチップセットにおける互換性については未確認である。
詳細については、XpraのOpenGLサポートに関するドキュメントを参照されたい。
おわりに
Xpraを用いることで、セキュアで柔軟なリモートデスクトップ環境を構築することができる。本記事で紹介した手順を参考に、リモート環境での開発作業を効率的に進めてほしい。今後、さらに高度な設定やカスタマイズが必要な場合は、公式ドキュメントやコミュニティフォーラムを活用することで、より深い知識を得ることができる。