kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

ブラウザ経由で Windows Server にリモート接続ができる「Apache Guacamole」を Docker Compose で起動する

最近 Windows Server にリモート接続 (RDP) をする機会があり,ブラウザ経由で使えるツール「Apache Guacamole」を試すことにした.今までは「Microsoft Remote Desktop」を使っていて,違う選択肢を学んでおくという意図もあった.「Apache Guacamole」の公式ドキュメントを読むと「clientless remote desktop gateway」と書かれている.「クライアントレス」「リモートデスクトップゲートウェイ」で,RDP 以外に SSH もサポートしているツールと言える.

Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.

guacamole.apache.org

Wikipedia を見ると「Guacamole」「ワカモレ(グワカモーレ)」と読むらしく,メキシコ料理のことだった!確かに「Apache Guacamole」のロゴもアボカド色になっている!

ja.wikipedia.org

Guacamole with Docker

以下の公式ドキュメントに載っている通り,「Apache Guacamole」を構成するサービスである guacamole-serverguacenc は比較的多くのライブラリに依存している.

guacamole.apache.org

今回は「Apache Guacamole」をお手軽に試すため,Docker を使うことにした.

guacamole.apache.org

ただし,公式ドキュメントに載っている手順を読むと,計3種類のコンテナイメージを起動し,さらに --link で参照する必要があった.

  • guacamole/guacamole
  • guacamole/guacd
  • mysql

個別に起動するぐらいなら Docker Compose を使えば良さそう!と考えて,今回は雑に docker-compose.yml を実装した.

version: '3'
services:
  guacd:
    image: guacamole/guacd:latest
    expose:
      - '4822'
  guacamole:
    image: guacamole/guacamole:latest
    ports:
      - '8080:8080'
    environment:
      MYSQL_HOSTNAME: 'mysql'
      GUACD_HOSTNAME: 'guacd'
      MYSQL_DATABASE: 'guachamole'
      MYSQL_USER: 'guachamole'
      MYSQL_PASSWORD: 'guachamole'
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      MYSQL_DATABASE: 'guachamole'
      MYSQL_USER: 'guachamole'
      MYSQL_PASSWORD: 'guachamole'
    volumes:
      - './initdb.sql:/docker-entrypoint-initdb.d/initdb.sql'

公式ドキュメントの手順通り,MySQL の初期化(マイグレーション)もする.

$ docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
$ docker-compose up -d

起動すると http://localhost:8080/guacamole にアクセスできる.初期パスワードは guacadmin / guacadmin になっている.

f:id:kakku22:20190108233822p:plain

Windows Server に接続する

SettingsConnectionsNew Connection と画面遷移をし,以下を設定する.

  • Name
  • Protocol
  • Network (Hostname, Port)
  • Authentication (Username, Password)

f:id:kakku22:20190108233835p:plain

すると Windows Server にリモート接続ができる.インスタンス側の設定は今回は割愛する.

f:id:kakku22:20190108233859p:plain

クリップボード共有

guacamole.apache.org

ホスト側とリモート側でクリップボードを共有する機能もある.ホスト側で以下のショートカットを押すと,画面左側に「Guacamole メニュー」が表示される.この Clipboard(テキストエリア)を使うと,クリップボードを共有することができる.

  • Windows : Ctrl + Alt + Shift
  • Mac : Ctrl + Command + Shift

f:id:kakku22:20190108233947p:plain

(画面左に「Guacamole メニュー」が表示されている)

ショートカットが効かない

環境依存かもしれないけど,今回試した Mac + Guacamole (v0.9.14) 環境だと,Command キーを使うことができず,Command + A / Command + C / Command + V など,よく使うショートカットをマウス操作で代替する必要があった.ちなみに「Guacamole メニュー」に Input method という設定があり,ここで Text input を選ぶと,画面右下に「Ctrl / Alt / Esc / Tab」の仮想ボタンが表示されるため,Ctrl を有効にしながら C を押すとコピーすることはできた.とは言え,操作感は良くなく,根本解決ではない.ショートカットを使う方法があったら是非教えて欲しい!

f:id:kakku22:20190108234017p:plain

(右下に仮想ボタンが表示されている)

まとめ

  • ブラウザ経由で Windows Server にリモート接続 (RDP) ができる「Apache Guacamole」を試した
    • RDP 以外に SSH もサポートしている
  • Docker を使うとお手軽にインストールできる
    • さらに Docker Compose を使うと便利だった(今回 docker-compose.yml を実装した)
  • ホスト側とリモート側でクリップボードを共有する機能もあった