もっと詳しく

このガイドでは、UbuntuにDockerコンテナとしてApacheGuacamoleをインストールする方法を学習します。 Ubuntu22.04を使用しています。 Apache Guacamoleは、クライアントレスHTML5 Webベースのリモートデスクトップゲートウェイであり、Webブラウザを介してサーバーとデスクトップへのリモートアクセスを提供します。 VNC、RDP、SSHなどの標準プロトコルをサポートしています。

UbuntuにDockerコンテナとしてApacheGuacamoleをインストールします

ワカモレは2つの部分で構成されています。

  • guacamole-server、これは、guacdプロキシと、Guacamoleがリモートデスクトップに接続するために必要なすべてのネイティブサーバー側コンポーネントを提供します。
  • guacamole-client これは、通常はサーブレットコンテナによって提供されるクライアントを提供します Tomcat

Apache Guacamole Webベースのリモートデスクトップクライアントをセットアップするには、これらのコンポーネントの両方をインストールする必要があります。

Guacamoleは、デフォルトのUbuntu22.04リポジトリで利用できます。 ただし、利用可能なバージョンは最新ではありません。

apt-cache policy guacd
guacd:
  Installed: (none)
  Candidate: 1.3.0-1.1
  Version table:
     1.3.0-1.1 500
        500 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages

この記事の執筆時点では、Ubuntu22.04にはOpenSSL3.xが付属しており、Guacamoleが正常にコンパイルおよびインストールするにはopenssl 1.xが必要であるため、ソースからのGuacamoleのビルドは失敗します。

したがって、Ubuntu22.04にApacheGuacamoleをインストールする必要がある場合の唯一のオプションは、openssl関連の警告がエラーとして扱われないようにするか、Dockerコンテナーとして実行することです。

Ubuntu22.04にDockerコンテナとしてApacheGuacamoleをインストールします

Ubuntu22.04でApacheGuacamoleをDockerコンテナとして実行できるようにするため。

  • 以下のコマンドを実行して、Ubuntu22.04にDockerCEをインストールします。
sudo apt install ca-certificates curl gnupg lsb-release -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
echo 
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
> /etc/apt/sources.list.d/docker.list
apt update
apt install docker-ce docker-ce-cli containerd.io
  • Ubuntu22.04にDockerComposeをインストールします。

以下のコマンドを実行して、Ubuntu22.04にDockercomposeをインストールします。

curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  • Apache GuacamoleContainerImagesをダウンロードする

以下のコマンドを実行して、ApacheGuacamoleサーバーおよびクライアントイメージをダウンロードします。

docker pull guacamole/guacd
docker pull guacamole/guacamole

利用可能な画像の一覧表示。

docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
guacamole/guacd       latest    e391c1b36ad7   15 hours ago   271MB
guacamole/guacamole   latest    ec2f40adddc3   17 hours ago   439MB

ApacheGuacamole認証を構成する

Guacamole Dockerコンテナが機能するには、MySQLデータベース、PostgreSQLデータベース、LDAPディレクトリ、RADIUSサーバーなどの認証メカニズムが少なくとも1つ必要です。

このガイドでは、MySQLデータベース認証を使用します。

その結果、MySQLデータベースコンテナをデプロイしましょう。 最新のMySQL8Dockerイメージを使用しています。

  • 以下のコマンドは、最新のMySQL 8 Dockerイメージをダウンロードし、MySQL8Dockerコンテナを作成します。 guacamole_db、ワカモレデータベース(guacdb)、MySQLrootユーザーパスワード;
docker run --name guacamole_db -e [email protected] -e MYSQL_DATABASE=guacdb -d mysql/mysql-server
  • 次に、ApacheGuacamoleMySQLデータベース初期化スキーマを生成する必要があります。

スキーマを格納するディレクトリを作成しましょう。

mkdir -p /opt/guacamole/mysql
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql
  • GuacamoleMySQLデータベース初期化スクリプトをMySQLDockerコンテナにコピーします。
docker cp /opt/guacamole/mysql/01-initdb.sql guacamole_db:/docker-entrypoint-initdb.d

スクリプトはにコピーされます /docker-entrypoint-initdb.d MySQLDockerコンテナのディレクトリ。

  • MySQLデータベースコンテナに接続します。
docker exec -it guacamole_db bash

これにより、MySQLコンテナのルートディレクトリに移動します。

bash-4.4#

初期化スクリプトが使用可能であることを確認してください。

ls /docker-entrypoint-initdb.d/
  • GuacamoleMySQLデータベースを初期化します。
cd /docker-entrypoint-initdb.d/
mysql -u root -p

で指定されたパスワードを使用してください MYSQL_ROOT_PASSWORD その上。 ここで、MySQLプロンプトにドロップする必要があります。

bash-4.4# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 24
Server version: 8.0.29 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>

Guacamoleデータベースを初期化します。

use guacdb;
source 01-initdb.sql;

初期化が完了したら、使用可能なテーブルを確認します。

show tables;

サンプル出力;

+---------------------------------------+
| Tables_in_guacdb                      |
+---------------------------------------+
| guacamole_connection                  |
| guacamole_connection_attribute        |
| guacamole_connection_group            |
| guacamole_connection_group_attribute  |
| guacamole_connection_group_permission |
| guacamole_connection_history          |
| guacamole_connection_parameter        |
| guacamole_connection_permission       |
| guacamole_entity                      |
| guacamole_sharing_profile             |
| guacamole_sharing_profile_attribute   |
| guacamole_sharing_profile_parameter   |
| guacamole_sharing_profile_permission  |
| guacamole_system_permission           |
| guacamole_user                        |
| guacamole_user_attribute              |
| guacamole_user_group                  |
| guacamole_user_group_attribute        |
| guacamole_user_group_member           |
| guacamole_user_group_permission       |
| guacamole_user_history                |
| guacamole_user_password_history       |
| guacamole_user_permission             |
+---------------------------------------+
23 rows in set (0.01 sec)

次に、Guacamoleデータベースユーザーを作成し、データベースに必要な権限を付与します。

create user [email protected]'%' identified by 'ChangeME';
grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to [email protected]'%';
flush privileges;
quit

MySQLコンテナを終了します。

exit

実行中のコンテナを確認する場合。

docker ps

サンプル出力;

CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                    PORTS                       NAMES
b78a10e6b107   mysql/mysql-server   "/entrypoint.sh mysq…"   15 minutes ago   Up 15 minutes (healthy)   3306/tcp, 33060-33061/tcp   guacamole_db

ご覧のとおり、ヘルスステータスは正常です(開始および実行中)。

ステータスを再度確認して、特定のフィールドを印刷できます。

docker ps --format '{{.ID}}t{{.Image}}t{{.Status}}t{{.Names}}'

コンテナのログを確認することもできます。

docker logs guacamole_db

Guacamoleサーバーコンテナを起動します

GuacamoleServerコンテナをサービスとしてバックグラウンドで起動できます。

docker run --name guacamole-server -d guacamole/guacd
docker logs --tail 10 guacamole-server
guacd[7]: INFO:	Guacamole proxy daemon (guacd) version 1.4.0 started
guacd[7]: INFO:	Listening on host 0.0.0.0, port 4822

繰り返しますが、しばらくしてから実行中のコンテナを一覧表示します。

docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED             STATUS                       PORTS                       NAMES
669ad905db27   guacamole/guacd      "/bin/sh -c '/usr/lo…"   23 minutes ago      Up 23 minutes (healthy)      4822/tcp                    guacamole-server
b78a10e6b107   mysql/mysql-server   "/entrypoint.sh mysq…"   About an hour ago   Up About an hour (healthy)   3306/tcp, 33060-33061/tcp   guacamole_db

ご覧のとおり、Guacamoleサーバーが稼働しています。

Guacamoleクライアントコンテナを起動します

これで、Guacamoleクライアントを起動できます。

これを機能させるには、GuacamoleサーバーとGuacamoleデータベースにリンクする必要があります。

また、Guacamoleクライアントポートを公開する必要があります。 8080 ワカモレへの外部アクセスを許可するためにホスト上で。

すべてのコンテナはデフォルトのDockerネットワークを使用します。

したがって、Guacamoleクライアントを起動します。

docker run --name guacamole-client --link guacamole-server:guacd 
--link guacamole_db:mysql -e MYSQL_DATABASE=guacdb 
-e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=ChangeME 
-d -p 80:8080 guacamole/guacamole

Dockerコンテナプロセスを確認します。

docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED             STATUS                       PORTS                                   NAMES
07233565559c   guacamole/guacamole   "/opt/guacamole/bin/…"   23 seconds ago      Up 20 seconds                0.0.0.0:80->8080/tcp, :::80->8080/tcp   guacamole-client
669ad905db27   guacamole/guacd       "/bin/sh -c '/usr/lo…"   29 minutes ago      Up 29 minutes (healthy)      4822/tcp                                guacamole-server
b78a10e6b107   mysql/mysql-server    "/entrypoint.sh mysq…"   About an hour ago   Up About an hour (healthy)   3306/tcp, 33060-33061/tcp               guacamole_db

ご覧のとおり、Guacamoleクライアントはポート8080でリッスンしており、ホストではポート80として公開されています。

ss -altnp | grep :80
LISTEN 0      4096         0.0.0.0:80        0.0.0.0:*    users:(("docker-proxy",pid=6129,fd=4))   
LISTEN 0      4096            [::]:80           [::]:*    users:(("docker-proxy",pid=6135,fd=4))

ブラウザからApacheGuacamoleにアクセスする

Guacamoleがセットアップされると、アドレスを使用してWebブラウザーからGuacamoleにアクセスできます。 http://server-IP/guacamole

デフォルトのクレデンシャル。

  • ユーザー: guacadmin
  • パスワード: guacadmin

ログインに成功すると、ApacheGuacamoleWebダッシュボードが表示されます。

UbuntuにDockerコンテナとしてApacheGuacamoleをインストールします

そして、あなたは行き​​ます。 ご覧のとおり、接続はまだ追加されていません。 これで、Guacamoleに接続を追加できます。

設定ページでGuacamoleユーザーのパスワードをリセットすることもできます。

UbuntuにDockerコンテナとしてApacheGuacamoleをインストールします

これで、Ubuntu22.04にApacheGuacamoleをDockerコンテナーとしてインストールするためのガイドは終了です。

続きを読む ワカモレユーザーガイド

その他のチュートリアル;

Ubuntu22.04にApacheGuacamoleをインストールします

Guacamole:RDPサーバーの閉じた/接続の拒否を修正する方法:セキュリティネゴシエーションが失敗しました(セキュリティタイプが間違っていますか?)

The post UbuntuにDockerコンテナとしてApacheGuacamoleをインストールします appeared first on Gamingsym Japan.