0
0

Xpraを使ってWebブラウザから操作できるリモートデスクトップ環境を簡単に構築する方法

Posted at

はじめに

本記事では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が自動起動されている。

image.png

リモートディスクトップのターミナルでChromeブラウザを起動する

google-chrome

ChromeブラウザでYouTubeを表示できる(音声は非対応)ことを確認した。

image.png

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ブラウザからは警告が表示される。しかし、信頼できる接続であることが明らかであるため、警告を無視してアクセスする。

image.png

HTTPS接続を確認する

Devtoolsでhttps接続が確認できる

スクリーンショット 2024-08-21 11.40.57.png

パスワードによるアクセス制御の導入

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アドレスは環境に応じて変更する) にアクセスし、ユーザー名とパスワードを入力することで、リモートデスクトップに接続することができる。

image.png

音声のリモート転送設定

リモートデスクトップでの音声転送にも対応しており、例えばYouTubeの動画をリモートで再生することが可能である。設定は、ブラウザでhttps://192.168.1.113:10000/connect.htmlにアクセスし、Advanced optionsを開いて、Audio forwarding, codec:の項目でlegacy:wavを選択することで行う。

他のコーデックでは、筆者の環境で処理落ちが発生したが、最適な設定は環境に依存するため、個別に調整することが推奨される。

image.png

音声再生をサポートした形でYouTubeの動画を再生できた。

image.png

YouTube再生中はXpraから大量のWebP画像がクライアントのWebブラウザに送信されていることが確認される。

image.png

OpenGLサポートの検討

OpenGLサポートを有効にすることで、リモートでの3Dレンダリングが可能になる。VirtualGLを利用することで対応できるが、nVidia以外のチップセットにおける互換性については未確認である。

詳細については、XpraのOpenGLサポートに関するドキュメントを参照されたい。

おわりに

Xpraを用いることで、セキュアで柔軟なリモートデスクトップ環境を構築することができる。本記事で紹介した手順を参考に、リモート環境での開発作業を効率的に進めてほしい。今後、さらに高度な設定やカスタマイズが必要な場合は、公式ドキュメントやコミュニティフォーラムを活用することで、より深い知識を得ることができる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0