Raspberry Pi 3にcrowi-plus/GROWIをセットアップする

crowi-plusはCrowiのカスタム版。今回はcrowi-plusをRaspberry Pi 3上に構築したときのメモです。

もくじ:

はじめに

自宅用のWikiにはログインでのアクセス制御がちょっとしんどいので、閲覧のみログイン不要な機能に惹かれました。
# タブレットで毎回メールアドレスとパスワードを入力するのは無理。。。

サーバ起動でエラーになる

以前のCrowiの記事と同じように(Raspbian用に変更しながら)、いろいろ試してビルド(インストール)まではできましたが、サーバが起動できず。
エラー内容を見るとどうやらMongoDBのバージョン(2.4)が問題だったらしく、代替案を検討することにしました。

そもそもcrowi-plusの前提条件には「MongoDB 3.x」と記載されていたので、「まあ動かなくて当然だよな」と思っていたのですが、サーバ起動時のエラー内容は2.6以上が必要と言っているように見えました。

マニュアル通りのv3に移行できるか調べてみたものの、巷に転がっているMongo DB 3.xには64bit版OSのARM向けビルドしかない。そしてRaspbianは32bit版(ARM v7, armhf)のみ。

FedoraなどRaspberry Pi 3向け64bit OSのビルドをインストールした例はいくつか見つけましたが、Wifiの構成に手間がかかったり面倒そう。MongoもARM 64bit向けのバイナリが提供されているようだけど実際に動かせるようになるまでひたすら面倒そう。

Ubuntu MATEとMongoDB 2.6

しばし悩んだ挙句、Ubuntu MATE 16にRaspberry Pi版があり、かつaptでMongo DB 2.6が入るという噂を目にしたので、依然として32bitではあるもののひとまず試してみることにしました。

流れとしては、Ubuntu MATEをRPi3にインストールし、その上でヘッドレスにしたあと、crowi-plusの実行環境を構築していきます。

Ubuntu MATE 16のセットアップ

ブート用メディアの作り方はRaspbianの場合と同じですが、設定がちょっと面倒ですかね。

ブート用Micro SDカードの作成

イメージをダウンロードして普通に焼くだけ。
公式のインストラクションはこちら、ちょっとサイズが大きめですがダウンロードのページからRaspberry Pi 32bit用の16.04(Xenial)イメージをダウンロードして下さい。

xzで圧縮されたイメージのようですが、Raspbianと同じようにEtcherで焼けました(解凍は不要です)。イメージの選択・ドライブの選択・実行と3ステップ。いやー便利ですね。

初回起動

Raspbianと違ってデフォルトでヘッドレスにするのが面倒なつくりになっているので、潔く初回はモニタ(HDMI経由)とキーボード類を繋いで起動します。

言語の設定やユーザの作成はふつうのUbuntuとそう変わらないので、迷うところはないはず。
GUI(デスクトップ環境)があるうちに無線LAN接続の設定とアドレスの固定までやってしまいます。

ターミナルを立ち上げてSSH接続を構成します。
今回はOpenSSHをインストールしましたが、おそらくraspi-configでも導入できるはず。

なお、ファイヤウォールを使いたい場合はufwでSSH用に22番ポートと、後で使うであろうMongoやcrowi-plus用のポートなども必要に応じて開けておきます。

初期設定

SSHとWifiさえあれば、後はモニタもキーボード・マウスも外してHeadlessで操作できるはず。うまくWifi経由でSSH接続できることを確認できたら、ここまでで一旦、SDカードのバックアップを作成してもいいかもしれません。

ひととおりここまでで必須の設定はできたと思いますが、必要に応じてRaspbianと同様に、raspi-configでのストレージ領域の拡張設定や、デフォルトで入っているものの不要なパッケージたちの削除を実施してもいいですね。

私の場合は、scratchsonic-piなどのプログラミング環境、xserverubuntu-mateなどのデスクトップ環境をアンインストールしました。Python3もデフォルトで入っているのですが、scipyやらpandasやらやたらとモジュールが入っていたので最低限の構成に入れなおしました。

crowi-plusのインストール

以前と同じく全文検索(Elastic Search)やセッションストア(Redis)などのオプションはなしで、最低限の構成のみのインストールです。

流れは前記事のCrowiをインストールする手順と同様ですが、crowi-plus向けにいくつか変更点があります。

スクリプトと設定ファイル

ここではインストールディレクトリを/usr/local/bin/crowi-plusとしていますので必要に応じて変更して下さい。
もちろんDBの設定(DB名、アカウント)も環境に合わせて下さい。

インストール用Shellスクリプト:setup_crowi.sh

認証付きプロキシを通すための環境変数を設定していますが、プロキシ環境でなければ不要ですので削除して下さい。

サービス設定用に同じディレクトリに置いた設定ファイルをコピーしていますが、もちろん手動で編集しても問題ありません。

起動用スクリプト:crowi.sh

起動用スクリプトcrowi.sh、crowi-plusインストールディレクトリに配置(/usr/local/bin/crowi-plus/crowi.sh)。

設定ファイル:crowid

サービス設定ファイルcrowid、systemd用ディレクトリに配置(/etc/systemd/system/crowi-plus.service)。

設定ファイル:crowi.conf

サービス設定ファイルcrowi.conf、systemd用ディレクトリに配置(/etc/systemd/system/crowi.conf)。以前のCrowi用のものと同じです。

実行方法も前回と同じです。スクリプト例の通り設定ファイルをコピーする場合は、各設定ファイルを同じディレクトリにおくかパスを指定して下さい。

スクリプトが正常に完了すれば、サービスとして自動敵に起動されるよう設定されているので再起動するかsudo systemctl start crowi-plusを使ってサーバを起動してください。

初回インストール時以降の流れはCrowiとほぼ同じです。

変更点

詳細は前回とだいたい同じなので省略し、変更点のみ記載しておきます。

MongoDBまわりはパッケージ名とユーザ作成時のコマンドを変えています。

  • パッケージ名: mongodb-server
  • コマンド: addUser("ユーザ名", "パスワード")
  • (サービスはインストール時に自動的に設定される)

今回検証したものではMongoDB 2.6がインストールされました。公式マニュアルに記載されている3.xではありませんが、少なくとも私の環境ではちゃんと動いているように見えます。

その他、crowi-plusの移行方法でも説明されている通り、インストールや起動に使うコマンドが変更されています。

起動はともかく、インストールはyarnで依存関係を解決している分も含め、やや時間がかかります。まあラズパイなので気長に待ちましょう。

その他:crowi-plusの設定

初回起動以降はCrowiとあまり変わりませんが、crowi-plusはいろいろカスタマイズできて便利ですね。

私の場合はカスタムCSSで表示を若干変えています。全体的に青系にしたり、リスト表示を詰めたり、まあソースを読まずにテキトーに書いているので雑ですが。。。

ちなみにデフォルトのものと比較するとこんな感じ。

追記:アップデート

公式のマニュアルにも書いてありますが、pullして再度ビルドすればcrowi-plusを更新することができます。

当初はcrowi-plusを入れていたのですが、最近アップデートしたらGROWI(3.1.4-RC)になっていました。
依存バージョンが変わっていたのでnode本体も事前に更新(6→8)しています。

クリーンインストールする際には、おそらくインストール用スクリプトでクローンするURLやnodeの依存バージョンを変更すれば動くと思われます。

おわり。