Apache Guacamoleとはなんなのか?
今回は、Apache Guacamoleとは何かについて調べてみました。今回も以下のツールを使って対象プロジェクトを決めました!
※ 本企画に関する記事の目的は、それぞれのプロジェクトを本格的に深ぼるのではなく、プロジェクト名⇆どんな内容かをパッと思い出せるようにすることを目指します!
※ とはいえ深ぼってみたいプロジェクトがあればどんどん複数連載になると思います。
Apache Guacamoleとは?
公式サイトを見ると、
Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.We call it clientless because no plugins or client software are required.
Thanks to HTML5, once Guacamole is installed on a server, all you need to access your desktops is a web browser.
とあります。概要から察するに、クライアント不要のリモートデスクトップのためのゲートウェイで、VNCやRDP、SSHをサポートしているようです。クライアント不要という言葉を使っているのはプラグインやクライアントソフトウェアが不要だからそう言っているようですね。
さらにページを読んでいくと、以下のような特徴があるようです。
- コンピュータにどこからでもアクセス可能
- GuacamoleクライアントはHTML5のwebアプリケーションなので、デバイスや場所に縛られない
- ブラウザにアクセスできる環境さえあればどのマシンからでもアクセス可能
- デスクトップをクラウド上に
- Guacamole経由でのデスクトップアクセスは物理的な存在が必要ではなく、クラウド上にホストされたデスクトップも利用できる
- 無料かつオープンソース
- Apache License Version 2.0で配布されており、コミュニティによってメンテナンスされている
- ドキュメント化されたAPI上に構築
- 完全にドキュメント化されたコアAPI上に構築されており、それらは固有の技術スタックである
- これはGuacamoleをしっかりとインテグレーションさせることを実現する要因である
- コミュニティと商用サポートがある
インターネットで調べてみると、コロナ禍でリモートワークが普及したことにより、踏み台サーバとして利用したりするユースケースがあったりと、用途はとても重要なものだということがわかります。普段リモートデスクトップを利用するときはWindowsなどでデフォルトで備わっているRDPクライアントを使ったりSSHでターミナルに接続したりがメインだったのですが、その他にもApache Guacamoleのようなクライアントがあることがわかり、選択肢が増えました。
システム構成
システム構成は以下のページにある図がとても参考になると思い引用させていただきます。
構成要素としては
- HTML5のWebブラウザ
- Guacamoleサーバ
- 各種リモードデスクトップ
の3つがありそうです。
ユーザはまずブラウザからGuacamoleサーバに接続し、JavaScriptで作成されたクライアントがGuacamoleサーバ内から提供されます。一度読み込まれるとクライアントはGuacamoleプロトコルを使用してHTTP経由でサーバーに接続します。
その次にGuacamoleサーバ上にデプロイされたアプリケーションはGuacamoleプロトコルを読み取りguacdに転送します。これはネイティブのGuacamoleプロキシみたいです。guacdはGuacamoleプロトコルを認識し、ユーザに変わって対象のリモートデスクトップサーバにアクセスします。
Guacamoleプロトコルはguacdと組み合わせることで、プロトコルに依存しない機能がを提供します。GuacamoleクライアントもWebアプリケーションも、リモート デスクトッププロトコルを意識する必要なく実装することができます。
以上が簡単ではありますがGuacamoleがリモートデスクトップにアクセスする流れのようです(難しい)。
APIドキュメント
こちらにAPIドキュメントがあります。
言語サポートとしてはC、JavaおよびJavaScriptをメインでサポートしているようです。APIを利用することで簡単に追加のプロトコルサポートを実装でき、認証機能やHTML5のリモートデスクトップアプリケーションを構築できるとのことです。
Guacamoleにはサーバとクライアントがあり、それぞれ構築する必要がありそうです。また、MySQLまたはPostgreSQLを利用して認証情報を保存する必要がおそらくありそうです。この辺りは実際に運用する場合はクラウド上でうまく構築するか、ローカルで試す場合はdocker composeなどを利用して構成することになりそうです。
ソースコードについて
ソースコードはこちらのGitHubで公開されています。
2025/5/14時点で最終更新日が数日前だったりPRが多数残されていることから、プロジェクトは積極的にメンテナンスされていることが伺えます。
まとめ
今回は実践は掲載できませんでしたが、公式ドキュメントでDockerを利用した方法を紹介しているので、次回はDockerを利用して実際に環境構築できるか試してみようと思います。
将来的な用途として、自宅にあるデスクトップサーバへのアクセスのためのプロキシとして扱うこともできますし、この辺りの技術に疎いので実戦で試すのも込めてやってみようと思います。
Discussion