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をインスタンスで使用可能な物理メモリのおよそ半分にします。
GUACAMOLE_PASSWORDとMYSQL_PASSWORDは一致する必要があり、ランダムに生成された強力なパスワードでなければなりません。パスワードの生成にはKeeperボルトのご使用をお勧めします。バックスラッシュ、ドルマーク、スラッシュなどの記号は使用しないでください。
GUACAMOLE_ADMIN_PASSWORDは、デフォルトの「guacadmin」ユーザーのログインパスワードです。これは、ランダムに生成された強力なパスワードでなければなりません。パスワードの生成にはKeeperボルトのご使用をお勧めします。バックスラッシュ、ドルマーク、スラッシュなどの記号は使用しないでください。
SSL_HOSTNAMEは、このサーバーを指すように設定されたFQDNでなければなりません。DNSが外部からこのIPにルーティングできるよう設定されていて、Let's Encryptが証明書を登録できるようポート80/443が解放されていることを確認します。
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-postgres:2
restart: unless-stopped
environment:
ACCEPT_EULA: "Y"
POSTGRES_PASSWORD: some_strong_password
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"
POSTGRES_HOSTNAME: "db"
POSTGRES_DATABASE: "guacamole_db"
POSTGRES_USERNAME: "guacamole_user"
POSTGRES_PASSWORD: "xxxxxxx"
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をインスタンスで使用可能な物理メモリのおよそ半分にします。
GUACAMOLE_PASSWORDとMYSQL_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」のようにハイフンを付けます。
すべてを問題なく行った場合、指定したFQDNで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イメージごとの詳細情報を掲載しております。