Docker Composeインストール

Docker Composeを使用したKeeperコネクションマネージャー のデプロイ

概要

このセクションでは、docker-composeオーケストレーションファイルをカスタマイズすることで、Dockerを使用してKeeperコネクションマネージャーをインストールする方法について解説します。

手順 1: プラットフォーム固有の設定

Windows

Docker公式の手順に従って、Docker Desktopをインストールします。

Amazon Linux 2

ご利用のインスタンスにDockerをインストールします。こちらで詳細な手順 (英語) が公開されています。

CentOS 7、RHEL

Dockerのインストールに加えて、havegedパッケージをインストールして、安全な乱数を作成するのに十分なエントロピー生成が可能な環境を確保してください。

sudo yum install epel-release
sudo yum install haveged
sudo systemctl start haveged
sudo systemctl enable haveged

Ubuntu

havegedパッケージをインストールして、安全な乱数を作成するのに十分なエントロピー生成が可能な環境を確保してください。

sudo apt-get install haveged

手順 2: Docker Composeファイルの作成

ご利用のインスタンスでDockerが実行している状態になりましたので、マシンの作業ディレクトリに転送する必要のあるdocker-compose.ymlファイルを生成する必要があります。

SSL証明書にLet's Encryptを利用し、認証には自動的に初期化されたデータベースを使用して、Keeperコネクションマネージャーをデプロイするためのdocker-compose.ymlファイルの例です。MySQLの例とPostgreSQLの例を併せて記載します。

version: "3"
services:

    guacd:
        image: keeper/guacd:2
        restart: unless-stopped
        shm_size: 1001500k
        security_opt:
            - "seccomp:/etc/kcm-setup/guacd-docker-seccomp.json"
        environment:
            ACCEPT_EULA: "Y"
        volumes:
            - "common-storage:/var/lib/guacamole:rw"

    db:
        image: keeper/guacamole-db-mysql:2
        restart: unless-stopped
        environment:
            ACCEPT_EULA: "Y"
            MYSQL_RANDOM_ROOT_PASSWORD: "yes"
            GUACAMOLE_DATABASE: guacamole_db
            GUACAMOLE_USERNAME: guacamole_user
            GUACAMOLE_PASSWORD: some_strong_password
            GUACAMOLE_ADMIN_PASSWORD: some_strong_password

    guacamole:
        image: keeper/guacamole:2
        restart: unless-stopped
        environment:
            ACCEPT_EULA: "Y"
            GUACD_HOSTNAME: guacd
            MYSQL_HOSTNAME: db
            MYSQL_DATABASE: guacamole_db
            MYSQL_USERNAME: guacamole_user
            MYSQL_PASSWORD: some_password
        KCM_LICENSE: "XXXXXXXXXXXXXXXXXXXXXXXXXX"
        volumes:
            - "common-storage:/var/lib/guacamole:rw"

    ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            ACCEPT_EULA: "Y"
            GUACAMOLE_HOSTNAME: guacamole
            SSL_HOSTNAME: keeper.mycompany.com
            LETSENCRYPT_ACCEPT_TOS: "Y"
            LETSENCRYPT_EMAIL: you@company.com

volumes:
    common-storage:

このファイルを目的のKCMインスタンスにコピーします。 以下のフィールドを変更します。

  • shm_sizeをインスタンスで使用可能な物理メモリのおよそ半分にします。

  • security_optは、seccompセキュリティプロファイルのパスのことで、リモートブラウザー分離用に含めます。

  • GUACAMOLE_PASSWORDMYSQL_PASSWORDは一致する必要があり、ランダムに生成された強力なパスワードでなければなりません。パスワードの生成にはKeeperボルトのご使用をお勧めします。バックスラッシュ、ドルマーク、スラッシュなどの記号は使用しないでください。

  • GUACAMOLE_ADMIN_PASSWORDは、デフォルトの「guacadmin」ユーザーのログインパスワードです。これは、ランダムに生成された強力なパスワードでなければなりません。パスワードの生成にはKeeperボルトのご使用をお勧めします。バックスラッシュ、ドルマーク、スラッシュなどの記号は使用しないでください。

  • SSL_HOSTNAMEは、このサーバーを指すように設定されたFQDNでなければなりません。DNSが外部からこのIPにルーティングできるよう設定されていて、Let's Encryptが証明書を登録できるようポート80/443が解放されていることを確認します。

カスタムSSL証明書の使用

Let's Encryptの代わりにカスタムSSL証明書を使用したい場合は、Docker Composeファイルの「ssl」セクションを以下のような内容に置き換えます。

        ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            SELF_SIGNED: "N"
            ACCEPT_EULA: "Y"
            GUACAMOLE_HOSTNAME: "guacamole"
            SSL_HOSTNAME: "keeper.mycompany.com"
            CERTIFICATE_FILE: "/var/lib/guacamole/your_certificate.pem"
            PRIVATE_KEY_FILE: "/var/lib/guacamole/your_private_key.key"
        volumes:
            - "C:\Users\Path\To\Cert:/var/lib/guacamole:ro"

この場合、CERTIFICATE_FILEは、中間証明書チェーンを含むPEMエンコード形式の証明書となります。PRIVATE_KEY_FILEは秘密鍵ファイルです。

また、上記のコードには、ローカルファイルシステムを対象のコンテナに割り当てるボリュームマウントがあることにご留意ください。文字列のC:\Users\Path\To\Certの部分のみを変更する必要があります。Linux環境では、/path/to/certとなります。

手順 3: Dockerコンテナの起動

Windowsの場合、コマンドプロンプトを開きます。Linuxの場合、ターミナルシェルを開きます。手順2で保存したdocker-compose.ymlファイルの場所に移動します。

環境を起動するには、以下のコマンドを入力します。

docker compose up -d

注: バージョンによっては、「docker-compose」のようにハイフンを付けます。

すべてを問題なく行った場合、指定したFQDNでKeeperコネクションマネージャーのログイン画面を開くことができます。

Keeperコネクションマネージャーのログイン画面

注意事項

  • サーバーにルーティングされる適切なドメイン名を設定していない場合は、とりあえずユーザーインターフェースにアクセスしてテストを開始するためにローカルシステムのhostsファイルを書き換えてください。

  • 独自のSSL証明書を使用している場合は、ワイルドカード証明書のご使用はお勧めしません。SSL秘密鍵はデバイスに保存することになるため、Keeperコネクションマネージャーのエンドポイント用に特に作成した証明書を利用することが最適となります。

  • Windowsを使用している場合は、Windows Defenderファイアウォールを変更して、Dockerサービスにポート443を開放する必要があります。

  • docker compose downを実行すると、ユーザー、接続、履歴を含むコンテナ内のすべてのデータが削除されます。コンテナを停止するには、docker compose stopを使用します。

リモートブラウザ分離用設定

リモートブラウザ分離を使用する場合は、guacdコンテナ用のseccompセキュリティプロファイルを作成する必要があります。Keeperコネクションマネージャーを新規インストールする場合、kcm-setup.runスクリプトで自動的に処理され、guacd-docker-seccomp.jsonというファイルがインスタンス上の/etc/kcm-setup/フォルダに配置されます。

このファイルが自動的に作成されない場合、またはリモートブラウザ分離を使用するようにインスタンスをアップグレードする場合は、ファイルを手動で作成しなければならない場合があります。

Dockerコンテナが更新され起動した後、guacd Dockerイメージから直接ファイルのコピーを取得できます。以下のようにそのファイルの内容をターミナルに出力します。

docker run --rm --entrypoint=/bin/cat keeper/guacd:2 /opt/keeper/share/guacd/docker-seccomp.json

このコマンドの出力を/etc/kcm-setup/guacd-docker-seccomp.jsonに配置し、コンテナを再起動してください。

イメージ

以下は各イメージの説明です。

イメージ名
ベースイメージ
説明

Apache TomcatでデプロイされたApache Guacamoleウェブアプリケーション。

RDPやSSHなどのネイティブプロトコルをサポートするApache Guacamoleプロキシデーモンguacd。

Apache Guacamoleデータベーススキーマで自動的に初期化されたMySQLのインスタンス。

Apache Guacamoleデータベーススキーマで自動的に初期化されたPostgreSQLのインスタンス。

KeeperコネクションマネージャーにSSLターミネーションを自動的に提供するNGINXのインスタンス。

🎉インストール完了!

Keeperコネクションマネージャーインスタンスが実行状態となったので、guacadminとしてログインし、接続の設定を開始できます。 以降の手順については、以下のページをご参照ください。

KCMの使用方法

インストールガイドの以降のセクションでは、環境をカスタマイズしたり変更したりする場合の、Dockerイメージごとの詳細情報を掲載しております。

Last updated