SynologyのNASでGrowiをサーバを構築する

はじめに

自宅にNASを持っている方も最近は多いかもしれません。Googleフォトのサービスが有料になったりするなど、クラウドのサービスもいつどうなるか分からないため、自分でデータは管理したいと言われる方も多いでしょう。

今回はNASの中でも使いやすいSynology社のNASにGrowiというWikiサイトを立ち上げる方法を紹介したいと思います。
社内や家庭で情報を共有したい方は、便利ですので、興味があれば試してみてください。

今回Growi自体の使い方は載せていませんので、詳しくは下記の公式ページをご覧ください。

SynologyのNASでの設定

1.Gitコマンドを使えるようにする。

  1. Synologyのパッケージセンターの「設定」>「パッケージソース」に以下を追加する。
synocommunity:http://packages.synocommunity.com/
  1. Synologyのパッケージセンターの「設定」>「全般」のトラストレベルに以下の設定を行う。
    ☑Synology Inc.および信用された製造元

2.SSHでつながるように設定する。

1.Synologyのコントロールパネルの「端末とSNMP」>ターミナルに以下の設定を行う。

☑SSHサービスを有効にする。

3.Dockerをインストールする。

1.Synologyのパッケージセンターより、「Docker」を検索し、インストールする。

4.Docker-ComposeでGrowiをインストールする。

  1. SSHで繋げ、管理者権限でログインする。
sudo su -

2.Gitのプロキシ設定を行う。(プロキシーサーバがある方のみ)

git config --global http.proxy XXX.XXX.XXX.XXX:yyyy
git config --global https.proxy XXX.XXX.XXX.XXX:yyyy

3.Growiのインストール

cd /volume1/docker
git clone https://github.com/weseek/growi-docker-compose.git growi

4.growiフォルダのDockerfileを編集する。(プロキシーサーバがある方のみ)

RUN ES_JAVA_OPTS="-DproxyHost=XXX.XXX.XXX.XXX-DproxyPort=yyyy -Dhttps.proxyHost=1XXX.XXX.XXX.XXX -Dhttps.proxyPort=yyyy" bin/elasticsearch-plugin install analysis-kuromoji
RUN ES_JAVA_OPTS="-DproxyHost=XXX.XXX.XXX.XXX -DproxyPort=yyyy -Dhttps.proxyHost=XXX.XXX.XXX.XXX -Dhttps.proxyPort=yyyy" bin/elasticsearch-plugin install analysis-icu

5.growiフォルダのdocker-compose.ymlを編集する。

①.ポートを変更

services:
  app:
    ports:
      - 3000:3000

②.パスワード
XXXXXのところは、自分でパスワードを決めてください。

- PASSWORD_SEED=XXXXX

③.ファイルのアップロード設定

- FILE_UPLOAD=local

④.数式有効

- MATHJAX=1 

⑤.elasticsearchのプロキシ設定(プロキシーサーバがある方のみ)

environment:
  - "ES_JAVA_OPTS=-Xms256m -Xmx256m -DproxyHost=XXX.XXX.XXX.XXX -DproxyPort=yyyy"

6.elasticsearchフォルダのDockerfileを編集する。

RUN ES_JAVA_OPTS="-DproxyHost=XXX.XXX.XXX.XXX -DproxyPort=yyyy -Dhttps.proxyHost=XXX.XXX.XXX.XXX -Dhttps.proxyPort=yyyy" bin/elasticsearch-plugin install analysis-kuromoji
RUN ES_JAVA_OPTS="-DproxyHost=XXX.XXX.XXX.XXX -DproxyPort=yyyy -Dhttps.proxyHost=XXX.XXX.XXX.XXX -Dhttps.proxyPort=yyyy" bin/elasticsearch-plugin install analysis-icu

7.実行

cd growi
docker-compose up -d

8.動作確認

docker ps

Growiのバックアップ設定

何かあった時の為にバックアップは取りたいですよね。下記のように設定してバックアップも実現することが出来ます。

1.バックアップスクリプト作成
vi growi_backup.sh

#!/bin/sh

BKDIR=/volume1/Backup
docker exec -d growi_mongo_1 mongodump --archive=mongodb.archive
docker cp growi_mongo_1:mongodb.archive $BKDIR/$(date --date '1 day ago' "+%Y%m%d%s_4.4_mongodb.archive")

find $BKDIR -mtime +6 | xargs rm -rf

2.コントロールパネルのタスクスケジューラに以下を登録

[タスク設定]
sh /volume1/docker/growi/growi_backup.sh
※名前などは適当でよい。

バックアップデータからの復元方法

1.復元したいファイルをカレントディレクトリにコピーする。(例では、mongodb.archive)

2.下記のコマンドで復元する。

docker cp mongodb.archive growi_mongo_1:/
docker exec -d growi_mongo_1 mongorestore --drop --archive=mongodb.archive

番外編

停止コンテナ、イメージ、ボリューム、ネットワークの削除

1.コンテナの停止

docker-compose stop

2.全て削除する。

docker container prune
docker image prune
docker volume prune
docker network prune

ボリュームでのバックアップ(ローカルに保存している場合)

1.以下のコマンドで、「CONTAINER ID」を確認しておく。

docker ps

2.コンテナの停止

docker-compose stop

3.カレントディレクトリに「backup」を作成する。

4.バックアップファイルを作成する。

# mongoDB
> docker run --volumes-from <CONTAINER ID> --mount type=bind,src="$(pwd)/backup",dst=/backup -it mongo:3.4 tar cvf /backup/growi_mongo_db.tar /data/db

# growi
> docker run --volumes-from <CONTAINER ID> --mount type=bind,src="$(pwd)/backup",dst=/backup -it growi_app tar cvf /backup/growi_growi_data.tar /data

Dockerにログインしたい場合

docker exec -it growi_app_1 sh

まとめ

いかがだったでしょうか?
私のメモとして書いている為、ちょっと分かりにくいところもあると思います。大変申し訳ございませんが、その場合は、ググって他のページなどを参考にされると良いと思います。

IT

Posted by スングル