QNAP NASでGrowi構築
概要
これまでプログラミングの知識やTipsなど記録したい内容はすべてテキストファイルに保存し、OneDriveに上げていました。しかしCTF関連の怪しいコードを保存すると勝手に消されたり(そらそうだw)、スマホアプリが快適に動かなかったりで使い勝手がかなり悪く改善したいと思ってました。
というわけでMarkdownでお手軽に書けて、かつプライベートなメモ帳が欲しかったので探したところ、GrowiというWikiがあることを知りました。環境構築にあたってDockerイメージが公開されており、「これNASでも運用できるのでは?」となったので実際に入れてみました。
使用しているNASは TS-251+ になります。Celeronの4コアCPUを搭載しており、そこそこ高性能です。またメモリも拡張して8GB積んでいます。たくさんお仕事させられそうですね!
構築手順
1. NASにContainerStationをインストールする
今回Dockerイメージを使用するに当たりContainerStationをインストールします。ContainerStationは DockerやらLXCをQNAP NASで使用するためのアプリケーションです。インストール方法は下記リンクを参照してください。
2. コンテナの作成
GrowiのDockerコンテナを作ることはもちろんですが、GrowiはデータベースとしてmongoDBを使います。これもDockerコンテナがありますのでそれを活用します。よってGrowiとmongoDBの2つのコンテナを作ります。
注意事項として、ContainerStation バージョン2.0.117現在ではコンテナの作成後に環境変数を追加することができません。よってコンテナ作成時に環境変数を設定しないと再度作り直す羽目になります。SynologyのNASですとあとからでもできるのですが、QNAPはココらへんちゃんと作って欲しいですね…。
2019/09/04 追記:環境変数を追加する方法を見つけました
2.1. mongoDBのコンテナを作成
ContainerStationを開き、「作成」から「mongoDB」と入力しイメージを検索します。すると2つ出てきますが、バージョンが新しい方のMongoDBの「インストール」をクリックします。
「コンテナの作成」画面では、「コマンド」及び「エンドポイント」が空白となっていますが、そのままで構いません(あとで自動的に追加されます)。
必須の設定ではありませんが、コンテナを消してしまってもデータを残すようにするため、DBの実データの場所をNAS本体の共有フォルダに割り当てます。「詳細設定」->「共有フォルダ」を開き、「ホストからのボリューム」に「/data/db」と「/data/configdb」の2つを設定します。
ホストのパスはお好きなところに設定してください。
上記の設定ができたら「作成」ボタンを押し、確認の画面が出ます。問題なければそのまま進みます。
作成が完了するとMongoDBが勝手に起動します。ContainerStationの「概要」を開き、起動から少し経つと、リンクのアイコンが現れます。
このリンクのアイコンにカーソルを合わせると、現在MongoDBがNASの何番ポートにポートフォワーディングされているかわかるのでメモしておきます。アドレス末尾のコロン(:)以降の数値がポート番号です。また、設定から好きなポート番号に変えることもできるので、変えてしまっても構いません。
これでMongoDBの立ち上げは完了です。
2.2. Growiのコンテナを作成
mongoDBのコンテナ作成と同様に、ContainerStationを開き、「作成」から「weseek/growi」と入力しイメージを検索し、インストールします。
「コンテナの作成」画面では同様に空欄の部分はそのままにしておきます。
今回は下部の詳細設定から環境変数の設定をします。「詳細設定」->「環境」を開き、下記3つの変数を設定します。
名称 | 値 |
FILE_UPLOAD | local |
MONGO_URI | mongodb://{NASのIP}:{ポート番号}/growi |
PASSWORD_SEED | {お好きに設定してください} |
FILE_UPLOADはGrowiにアップロードするファイルの場所を選択します。値をmongodb にするとDBに上げることもできるようです。
MONGO_URIは必ず設定してください。NASのIPアドレスと先程メモしたmongoDBのポート番号をそれぞれ置き換えて入力してください。
PASSWORD_SEEDは設定しないと自動生成されるため、設定しておいたほうが良いそうです。
環境変数の設定ができたらmongo同様に共有フォルダの設定をします(必須でない)。マウントポイントは「/data」で、ホストのパスはお好きなところに設定してください。
上記の設定ができたら「作成」ボタンを押し、確認の画面が出ます。特に環境変数の部分をよく確認し、問題なければそのまま進みます。
これでGrowiの立ち上げは完了です。
3. 動作確認とアカウントの作成
以上の設定完了後、ContainerStationの概要欄からmongoDB同様にリンクのアイコンがついていれば成功です。リンクのアイコンが見当たらなかったり、そもそも仮想マシンが起動後すぐ停止してしまった場合はログを見て対処しましょう。またポート番号を好きな番号にしたい方は設定から変えましょう。
起動が確認できたらリンクのアイコンをクリックします。するとGrowiのページが開きます。初回アクセス時には管理者となるアカウントの作成を要求されるので、設定します。
以上で初期設定が完了しました!お疲れ様です。
運用に関して
初めはローカルネットからしかアクセスしていなかったのでこのまま運用していましたが、使い勝手が良かったのでインターネット越しにもアクセスできるようにしました。外から安全にアクセスするためにはhttpsで通信したかったので、前段にNginxでリバースプロキシを組み、Let’s encryptでSSL/TLSサーバ証明書 の認証を通しました。
インターネットとブラウザがあれば、どこにいても安全にプライベートなデータベースへアクセスできるようになったので、いろいろ捗りそうです。
参考
Growiの構築及び本記事の作成にあたり下記のサイトを参考にしました。
GitHub – weseek/growi: GROWI – Team collaboration software using markdown
最近のコメント