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 なので,ログイン後すぐに変更するべし。

Leave a Reply

Your email address will not be published.