Docker Hub の Image を使って Apache Guacamole をセットアップする。
前提条件として Docker がセットアップ済みである事。
Apache Guacamole 以外にも Docker でサ-ビスを構成している為、本記事では Nginx によるリバ-スプロキシは除外している (Nginx だけのサ-ビスが別である)。
手順は下記の通り。
- コンテナ構成準備
- コンテナ作成 及び 起動
- おまけ 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 上でユ-ザ-作って権限設定済みのグル-プに所属させるようにした。