docker-compose で apache guacamole を構築する
管理サーバが増えてくるとブラウザでRDPやVNCを一括で管理したい
そんな時に Apache guacamole だとブラウザだけあればクライアントレスでアクセスできて便利なのだが,これ,バックエンドがTomcatだったり,MySQLが必要だったりとそのまま入れると面倒くさいので,今回は公式レポジトリのdocker版を使って構築する。
docker版 guacamore
docker版のguacamoreは公式ににマニュアルがあるが,
このままだと管理しにくいので,docker-compose.yml を書いてとりあえずお手軽に動かす。
docker-compose.yml
さほど大した設定は必要なく,
docker-hub公式のmysqlとdocker版guacd,guacamoreをimageとしてもらってくるだけで良い。
version: '2'
services:
mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: "gehogeho"
MYSQL_DATABASE: "guacamole_db"
MYSQL_USER: "guacamole_user"
MYSQL_PASSWORD: "hogehoge"
volumes:
- ./sql:/docker-entrypoint-initdb.d
- ./mysql:/var/lib/mysqlo
networks:
- guac
guacd:
image: guacamole/guacd
restart: always
networks:
- guac
guac:
image: guacamole/guacamole
restart: always
ports:
- "8080:8080"
environment:
GUACD_HOSTNAME: guacd
GUACD_PORT: 4822
MYSQL_HOSTNAME: mysql
MYSQL_DATABASE: "guacamole_db"
MYSQL_USER: "guacamole_user"
MYSQL_PASSWORD: "hogehoge"
networks:
- guac
depends_on:
- mysql
- guacd
#volumes:
# db-data:
# driver: local
networks:
guac:
driver: bridge
パスワード等は平文で置くのが嫌なら別のファイルに分けても良いと思うのだが,
上記のように平文で置く場合は,docker-compose.ymlのパーミッションを気をつける。
あと,mysqlの置き場はdocker volumeとして作っても良いが,
自分はどっちかと言うと同じディレクトリ配下に纏まっていてくれたほうが楽なので,./mysql 以下にしている。
初期設定
公式マニュアルの通り,このままだとmysqlに空のテーブルがあるだけの状態で起動するので,
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
とやって,テーブル作成用クエリを吐き出しておく。
dockerのmysqlは /docker-entrypoint-initdb.d 以下に .shや .sql を置いとくと,
初期構成時に実行してくれるので,
上記で吐いた initdb.sql を ./sql 以下に置いて docker-compose.yml内で ./sql:/docker-entrypoint-initdb.d と指定してマウントすると,
mysqlの初期構成時に initdb.sql が流し込まれる。
ここまでのディレクトリ構成
こんなふうになっているはず。
|- docker-compose.yml |- sql |- initdb.sql
起動
docker-compose.yml のあるディレクトリで docker-compose up すると勝手にダウンロードして構成して上がってくる。
テスト
ブラウザで http://localhost:8080/guacamore/ にアクセスしてみてログイン画面が出てくれば成功である。
で,デフォルトパスワードは guacadmin/guacadmin なので,ログイン後すぐに変更するべし。