Ubuntu Weekly Recipe

第613回 Apache Guacamoleを使ってWebブラウザからWindows 10にリモート接続する

この記事を読むのに必要な時間:およそ 3 分

新型コロナウイルスの広がりにより,自宅勤務となる人が増えています。

さらに事態が悪化すれば,他国のように緊急事態宣言が出されるかもしれず,そうなれば多くの人が職場に向かうことも難しくなるでしょう。そうなる前に,職場の各PCに外部からアクセスできるようにしておきたいという人も多いのではないでしょうか。

そこで,今回は「Webブラウザーからリモートデスクトップを使う」ためのソフトウェアApache GuacamoleをUbuntuサーバーにセットアップする手順を紹介します。Apache Guacamoleは,Windowsのリモートデスクトッププロトコル(RDP)およびVNCに対応しています。また,GUIだけでなくSSHおよびTelnetサーバーへのアクセスを中継する機能も持ちます。

図1 Apache Guacamoleのドキュメントより

画像

Apache Guacamoleのメリットの1つは,アクセス元およびアクセス先の端末に特別なソフトをインストールする必要がないことです。すでにLAN内の各PCがリモートデスクトップ接続できるなら,何も変更する必要はありません。同じLANにApache Guacamoleをセットアップしたサーバーを用意し,外部からアクセスできるようにするだけで,インターネット経由でリモート操作できるようになります。また,Webブラウザーさえあればアクセスできるので,アクセス元となるPCやスマートフォンにも特別なアプリのインストールや設定の変更は不要です。

それだけでなく,LDAP認証への対応,動画ファイルへの操作の記録,TOTP(タイムベースワンタイムパスワード)認証など,企業向けの機能も備えており,リモートワークシステムにも採用されていることも大きな特徴です。個人から大企業まで,用途に応じてさまざまな活用法が考えられるソフトだと言えるでしょう。

Apache GuacamoleのDockerイメージと日本語対応

Apache Guacamoleのサーバー部は,グラフィックや動画,音声などを扱う多くのライブラリを必要とします。また,Webアプリ部分を動かすApache Tomcatや,ユーザー情報や設定を保存するMySQLなどのデータベースも必要です。そのため,自分で1からセットアップするのは大変ですが,公式のDockerイメージを使えば,簡単にインストールできます。

ただし,本記事執筆時点での最新リリースバージョンは1.1.0で,Webアプリ部分が日本語に対応していません。株式会社デージーネットさんが日本語訳をコミットされているのですが,反映されるのは1.2.0以降となるようです。

そこで,筆者のほうで日本語パッチを適用したDockerイメージをDocker Hubに用意しましたので,そちらを使ってセットアップする方法を紹介します。1.2.0がリリースされた後は,公式のDockerイメージに切り替えていただければと思います。

「日本語に対応したApache Guacamole 1.2.0がリリースされましたので,内容を修正しました(2020年10月4日⁠⁠。

Apache Guacamoleのセットアップ

では,Dockerを使ったセットアップ方法を紹介します。まず,Dockerがインストールされていなければ,インストールしておきます。Ubuntuへのインストール方法は,公式のドキュメントに記載されています。最新版を入れるなら,以下のスクリプトをダウンロードして実行する方法が簡単で良いでしょう。ただし,実行する前にget-docker.shの内容を確認するようにしてください。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

一般ユーザーで作業するなら,以下のコマンドでdockerグループに加えておきます。

$ sudo usermod -aG docker $USER

実行後,ログインしなおしましょう。

この記事ではdocker-composeも用います。公式のドキュメントに記載されている通り,以下のコマンドでインストールできます。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

なお,筆者はUbuntuサーバーを使用していますが,Dockerが動きさえすれば他の環境でも同じようにセットアップできると思われます。Windowsしかない環境であれば,既存のPCにDocker Desktop for Windowsをインストールして動かせば,サーバーをセットアップする手間を省けるでしょう。

では,Apache Guacamoleを配置するディレクトリを作成します。ここでは,作業するユーザーのホームディレクトリに「guacamole」ディレクトリを作成することにします。

$ mkdir guacamole
$ cd guacamole/

以下の内容で,⁠docker-compose.yml」を作成します。⁠guacamole_root_password」「guacamole_user_password」は,適切なパスワードに置き換えてください。

version: "3"

services:
  guacd:
    container_name: my-guacd
    image: guacamole/guacd
    restart: always

  guacamole_db:
    container_name: my-guacamole-db
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: guacamole_root_password # NEED TO CHANGE
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guacamole_user_password # NEED TO CHANGE
    volumes:
      - ./dbdata:/var/lib/mysql
      - ./dbinit:/docker-entrypoint-initdb.d

  guacamole:
    container_name: my-guacamole
    image: guacamole/guacamole
    restart: always
    environment:
      GUACD_HOSTNAME: my-guacd
      MYSQL_HOSTNAME: my-guacamole-db
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guacamole_user_password # NEED TO CHANGE
      GUACAMOLE_HOME: /guacamole-home
    volumes:
      - ./home:/guacamole-home
    depends_on:
      - guacamole_db
      - guacd
    ports:
      - "8080:8080"

必要なディレクトリを作成します。

$ mkdir -p dbdata dbinit home/extensions

MySQLの初期化スクリプトを出力します。初回実行時は,イメージを取得するために時間がかかります。

$ docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > ./dbinit/initdb.sql

「docker-compose up -d」を実行すると,Apache Guacamoleが動き出します。

$ docker-compose up -d
Creating network "guacamole_default" with the default driver
Creating my-guacamole-db ... done
Creating my-guacd        ... done
Creating my-guacamole    ... done

著者プロフィール

小林準(こばやしじゅん)

Ubuntu Japanese Team リーダー。2005年より日本国内でUbuntuの普及活動を行っている。著書に,Linuxシステムの管理に必要な知識を解説した『独習Linux』がある。