Meaningless Notebook

我輩は雑記帖である。名はまだない。


Docker Hub の Image を使って Apache Guacamole をセットアップする。

前提条件として Docker がセットアップ済みである事。

Apache Guacamole 以外にも Docker でサ-ビスを構成している為、本記事では Nginx によるリバ-スプロキシは除外している (Nginx だけのサ-ビスが別である)。

手順は下記の通り。

  1. コンテナ構成準備
  2. コンテナ作成 及び 起動
  3. おまけ LDAP 設定

1. コンテナ構成準備

1. docker-compose.yml ファイル作成

Apache Guacamole 向けフォルダ『/opt/guacamole』を作成し、『docker-compose.yml』ファイルを作成する。

 version: "3"
 services:
   postgres:
     image: postgres:latest
     restart: unless-stopped
     environment:
       PGDATA: /var/lib/postgresql/data/guacamole
       POSTGRES_DB: guacamole
       POSTGRES_USER: guacamole
       POSTGRES_PASSWORD: guacamole
     volumes:
       - ./postgres/init:/docker-entrypoint-initdb.d
       - ./postgres/data:/var/lib/postgresql/data
     ports:
       - "5432:5432"
 guacd:
     image: guacamole/guacd:latest
     restart: unless-stopped
 guacamole:
     image: guacamole/guacamole:latest
     restart: unless-stopped
     ports:
       - "8080:8080"
     environment:
       GUACD_HOSTNAME: guacd
       POSTGRES_HOSTNAME: postgres
       POSTGRES_DATABASE: guacamole
       POSTGRES_USER: guacamole
       POSTGRES_PASSWORD: guacamole
     depends_on:
       - postgres
       - guacd 

2. PostgreSQL 向けディレクトリ作成

下記コマンドを実行して PostgreSQL デ-タ永続化 及び DB 初期化 SQL ファイル格納ディレクトリを作成する。

mkdir -p /opt/guacamole/postgres/init
mkdir /opt/guacamole/postgres/data

3. PostgreSQL 初期化 SQL ファイル生成

下記コマンドを実行して PostgreSQL に Apache Guacamole が使用する DB を作成する初期化 SQL ファイルを生成する。

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > /opt/guacamole/postgres/init/initdb.sql

2. コンテナ作成 及び 起動

下記コマンドを実行してコンテナ作成 及び 起動

docker-compose up -d

起動後、 Web ブラウザより『http://セットアップした docker ホストマシンの IP アドレス 又は ホスト名 :8080/guacamole』にアクセスする。

Username、Password 共に『guacadmin』

3. おまけ LDAP 設定

『docker-compose.yml』 ファイルの『guacamole』サ-ビスの『environment』に LDAP 関連の環境変数を追記する。

下記例は、LDAP 認証基盤:FreeIPA、暗号化:なしの場合。

guacamole:
     image: guacamole/guacamole:latest
     restart: unless-stopped
     ports:
       - "8080:8080"
     environment:
       GUACD_HOSTNAME: guacd
       POSTGRES_HOSTNAME: postgres
       POSTGRES_DATABASE: guacamole
       POSTGRES_USER: guacamole
       POSTGRES_PASSWORD: guacamole
       LDAP_HOSTNAME: LDAP 認証基盤ホストの IPアドレス 又は ホスト名
       LDAP_ENCRYPTION_METHOD: none
       LDAP_USER_BASE_DN: cn=users,cn=accounts,dc=example,dc=com
     depends_on:
       - postgres
       - guacd

最後に

思い込みで色々手間取った…

教訓教訓。

セットアップした OSS の動作がおかしいと思ったら Nginx とかのリバ-スプロキシ経由じゃなくて直接アクセスしてみよう ! (リバプロ設定ミス 1 敗)

LDAP 設定で手間取ったら暗号化なしで試してみよう !


後、Guacamole って LDAP 認証が使えるけど結局 Guacamole 上でユ-ザ-作って設定しないと駄目っぽい。

*

厳密には LDAP 上に Config を格納するようにすれば良いっぽいけど…難易度高い。

しょうがないので LDAP ではパスワ-ド管理だけと割り切って Guacamole 上でユ-ザ-作って権限設定済みのグル-プに所属させるようにした。

参考元

  1. 1Q77
  2. Guacamole Manual
  3. docker hub

Amazon