📝 BLOG.IK.AM

@making's memo
(🗃 Categories 🏷 Tags)

Synology NASにKeycloak on Dockerをインストールする

🗃 {Dev/NAS/Synology/Keycloak}

🏷 Docker 🏷 Keycloak 🏷 NAS 🏷 OAuth2 🏷 OpenID Connect 🏷 PostgreSQL 🏷 Synology

🗓 Updated at 2018-02-15T21:55:46+09:00 by Toshiaki Maki  🗓 Created at 2018-01-16T10:20:50+09:00 by Toshiaki Maki  {✒️️ Edit  ⏰ History}


⚠️ Caution: This content is a bit old. Please be careful to read.

前回Synology NASMinioをインストールしましたが、今回はKeycloakをDockerを使ってインストールします。

MinioにDockerをインストールする方法は前回の記事を参照してください。

Keycloakの永続化にはデータベース(MySQLまたはPostgreSQL)が必要です。MinioでMySQLのDockerコンテナを起動すると、
Volume Mountでなぜか権限エラーになったので、特に問題の起きなかったPostgreSQLを使いました。

以下、作業メモです。

DB用Shared Folderの作成

まずはPostgreSQLコンテナにマウントするためのShared Folderを作成。

"Control Panel" => "Shared Folder"でCreateボタンをクリック。

"Name"はkeycloak-dbにし、ゴミ箱は不要なので"Enable Recycle Bin"のチェックを外しておく。
OKボタンをクリックして作成。"Permission"もデフォルトでOK。

PostgreSQLのデータフォルダには空フォルダを設定する必要があるため、dataフォルダを作成作成。

"File Station" => "keycloak-db"を選択 => "Create" => "Create folder"でdataを入力してフォルダ作成。

PostgreSQLのインストール

次にPostgreSQLのインストール。

"Main Menu"から"Docker"を開き、"Registry"タブをクリックし、"Insert keywords"にpostgresを入力し、postgresを選択。。

"Download"をクリック。Tagは9.6を使用。

"Image"タブをクリックし、postgres:9.6を選択。

"Launch"ボタンをクリック。"Container Name"にkeycloak-dbを入力。

"Advanced Settings"ボタンをクリック。"Enable auto-restart"にチェックを入れる。

"Volume"タブをクリックし、"Add Folder"ボタンをクリック。

keycloak-db/data/var/lib/postgresql/dataにマウントする。

"Environment"タブをクリックし、"Command"に環境変数に次の内容を設定。

POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password

"Apply"ボタンをクリックして"Advanced Settings"ウィンドウを閉じる。

"Next"ボタンクリック => "Apply"ボタンクリックでPostgreSQLを起動する

"Container"タブをクリックし、keycloak-dbコンテナが"Running"になっていればOK。

Keycloakのインストール

最後にKeycloakのインストール。

"Registry"タブをクリックし、"Insert keywords"にminioを入力し、jboss/keycloakを選択。

"Download"をクリック。Tagは3.4.3.Finalを使用。

"Image"タブをクリックし、jboss/keycloak:3.4.3.Finalを選択。

"Launch"ボタンをクリック。"Container Name"にkeycloakを入力。

"Advanced Settings"ボタンをクリック。"Enable auto-restart"にチェックを入れる。

"Port Settings"タブをクリックし、"Local Port"に8080を入力。

"Links"タブをクリックし、"Container Name"にkeycloak-dbを選択し、"Alias"にpostgresを入力する。

"Environment"タブをクリックし、"Command"に環境変数に次の内容を設定。

POSTGRES_DATABASE: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin

HTTPS対応するために、フロントにHA Proxyやnginxを置く場合は環境変数PROXY_ADDRESS_FORWARDINGtrueにする必要あり。デフォルトではfalseが設定されている。

"Apply"ボタンをクリックして"Advanced Settings"ウィンドウを閉じる。

"Next"ボタンクリック => "Apply"ボタンクリックでKeycloakを起動する

"Container"タブをクリックし、keycloakコンテナが"Running"になっていればOK。

keycloakコンテナをクリックし、"Details"ボタンをクリックし、"Log"タブを開いて、Keycloak ... started ...というログが出ていることを確認しておくとベター。

動作確認

http://<Synology NASのIP>:8080にアクセスすると、UIが表示される。


SynologyのLDAPサーバーとUser Federationすれば、SynologyだけでLDAP, OAuth2, OpenID Connect, SAMLで対応できそうなので、SynologyがSSO中央集権サーバーとして役に立ちそうです。

Synology DiskStation大変良いです。