はじめに
こんにちは、piyovateです。
社内Wiki用途として GROWI を Synology NAS 上に構築しました。
本記事では Synology Container Manager(GUI)を使って、GROWI・MongoDB・Elasticsearch をそれぞれ Docker コンテナとして構築する手順をまとめます。
Docker や GROWI に詳しくない状態から試行錯誤しながら構築した内容なので、
これから Synology 上で GROWI を動かしたい人の参考になれば幸いです。
注意
※ 本記事の内容は 社内 LAN 内での利用を前提とした検証環境の構成です。
※ インターネットから直接アクセス可能な構成ではありません。
構築環境
ハードウェア / OS
- Synology NAS:DS3622xs+
- DSM:Container Manager 利用
使用イメージ / バージョン
- GROWI:
weseek/growi:latest - MongoDB:
mongo:5.0 - Elasticsearch:
elasticsearch:8.14.0
※ xxx.xxx.xx.xx は Synology の IP アドレス
※ ローカルポートはすべて任意のポート番号を使用しています
全体構成
今回の構成は以下の3コンテナです。
- GROWI(アプリ本体)
- MongoDB(データベース)
- Elasticsearch(全文検索)
すべて Container Manager の GUI から個別にコンテナを作成しています。
事前準備:ボリューム用ディレクトリ作成
Synology 上に以下のディレクトリを作成します(永続化用)。
/docker/growi/data
/docker/growi/mongo
/docker/growi/es
MongoDB コンテナの作成
イメージ
mongo:5.0
ポート
- ローカルポート:任意
- コンテナポート:
27017
ボリューム
| ローカル | コンテナ |
|---|---|
| /docker/growi/mongo | /data/db |
※ 今回は 社内 LAN 内での検証用途のため、MongoDB の認証設定は行っていません。
※ 外部公開する場合は必ず認証を有効化してください。
Elasticsearch コンテナの作成
イメージ
elasticsearch:8.14.0
ポート
- ローカルポート:任意(1ポートのみ公開)
- コンテナポート:
9200
ボリューム
| ローカル | コンテナ |
|---|---|
| /docker/growi/es | /usr/share/elasticsearch/data |
環境変数
discovery.type=single-node
bootstrap.memory_lock=true
ES_JAVA_OPTS=-Xms1g -Xmx2g
※ Elasticsearch 8 系はデフォルトでセキュリティ機能が有効になりますが、
今回は LAN 内での検証用途であり、特に問題が発生しなかったため
セキュリティ設定は行っていません。
GROWI コンテナの作成
イメージ
weseek/growi:latest
ポート
- ローカルポート:任意
- コンテナポート:
3000
ボリューム
| ローカル | コンテナ |
|---|---|
| /docker/growi/data | /data |
環境変数
MONGO_URL=mongodb://xxx.xxx.xx.xx:yyyyy/growi
ELASTICSEARCH_URI=http://xxx.xxx.xx.xx:yyyyy
ELASTICSEARCH_VERSION=8
APP_SITE_URL=http://xxx.xxx.xx.xx:yyyyy
-
yyyyyはそれぞれ MongoDB / Elasticsearch / GROWI のポート番号 -
APP_SITE_URLには、ブラウザからアクセスする URL を指定します
動作確認
すべてのコンテナを起動後、ブラウザから以下にアクセスします。
http://xxx.xxx.xx.xx:GROWIのポート番号
初期ユーザー作成画面が表示されれば成功です。
ページ作成やタグ検索が問題なく動作することも確認できました。
補足:GUI構築と docker-compose(SSH)の使い分け
今回は Synology の Container Manager(GUI) から、
MongoDB / Elasticsearch / GROWI をそれぞれ 1 コンテナずつ作成しました。
GUI での構築は、
- 設定項目が視覚的に分かりやすい
- Docker に慣れていなくても理解しやすい
というメリットがあり、初期構築としてはとても良いやり方だと感じました。
一方で、構築後に調べていく中で、
-
docker-compose.ymlでまとめて管理できる - SSH 経由の
docker composeの方が再現性・移行性が高い
という点から、長期運用を考えると SSH 経由で docker-compose を使う方が良さそうだとも感じました。
今回は GUI で構築しましたが、
今後同様の環境を作る場合は docker-compose を使う予定です。
おわりに
Synology は GUI が充実しているため、Docker 初心者でも比較的スムーズに GROWI を構築できました。
一方で、Docker に慣れてくると compose 管理のメリットも見えてきます。
本記事が、Synology 上で GROWI を構築する際の参考になれば幸いです。
それでは、また次回の記事でお会いしましょう✨