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
でも導入できるはず。
1 | $ sudo apt install openssh-server |
なお、ファイヤウォールを使いたい場合はufw
でSSH用に22番ポートと、後で使うであろうMongoやcrowi-plus用のポートなども必要に応じて開けておきます。
初期設定
SSHとWifiさえあれば、後はモニタもキーボード・マウスも外してHeadlessで操作できるはず。うまくWifi経由でSSH接続できることを確認できたら、ここまでで一旦、SDカードのバックアップを作成してもいいかもしれません。
ひととおりここまでで必須の設定はできたと思いますが、必要に応じてRaspbianと同様に、raspi-config
でのストレージ領域の拡張設定や、デフォルトで入っているものの不要なパッケージたちの削除を実施してもいいですね。
私の場合は、scratch
やsonic-pi
などのプログラミング環境、xserver
やubuntu-mate
などのデスクトップ環境をアンインストールしました。Python3もデフォルトで入っているのですが、scipy
やらpandas
やらやたらとモジュールが入っていたので最低限の構成に入れなおしました。
crowi-plusのインストール
以前と同じく全文検索(Elastic Search)やセッションストア(Redis)などのオプションはなしで、最低限の構成のみのインストールです。
流れは前記事のCrowiをインストールする手順と同様ですが、crowi-plus向けにいくつか変更点があります。
スクリプトと設定ファイル
ここではインストールディレクトリを/usr/local/bin/crowi-plus
としていますので必要に応じて変更して下さい。
もちろんDBの設定(DB名、アカウント)も環境に合わせて下さい。
インストール用Shellスクリプト:setup_crowi.sh
認証付きプロキシを通すための環境変数を設定していますが、プロキシ環境でなければ不要ですので削除して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #!/bin/bash -eu ### prerequisites # set proxy ##### proxy_url="http://{PROXY_USER}:{PROXY_PASSWORD}@{PROXY_ADDRESS}:{PROXY_PORT}/" export http_proxy=$proxy_url export https_proxy=$proxy_url shopt -s expand_aliases alias sudo='sudo -E ' ################# echo install prerequisites sudo apt update -y sudo apt install -y build-essential libkrb5-dev git ### Insall MongoDB echo install mongodb sudo apt install mongodb-server -y echo up and enabling mongodb service sudo systemctl enable mongodb sudo systemctl start mongodb ### Node.js configuration echo install default node.js, npm, and yarn via apt sudo apt install -y nodejs npm curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install yarn -y echo install node v6.12.x via n package & upgrade npm to 4.x sudo npm cache clean sudo npm install n -g sudo n 6.12 sudo npm install -g npm@4 echo remove distro default packages sudo apt -y purge nodejs npm sudo apt -y autoremove ### Deploy crowi-plus echo configure mongodb user and dedicated database mongo --eval 'db = db.getSiblingDB("{DB_NAME}")' mongo {DB_NAME} --eval 'db.addUser("{DB_USER}", "{DB_PASSWORD}")' echo get crowi sources and start installation git clone https://github.com/weseek/crowi-plus.git sudo mv crowi-plus /usr/local/bin/ sudo cp crowi.sh /usr/local/bin/crowi-plus/crowi.sh sudo cp crowid /etc/systemd/system/crowi-plus.service sudo cp crowid.conf /etc/systemd/system/crowi.conf cd /usr/local/bin/crowi-plus sudo chmod +x crowi.sh sudo yarn sudo npm run build:prod sudo systemctl enable crowi-plus |
サービス設定用に同じディレクトリに置いた設定ファイルをコピーしていますが、もちろん手動で編集しても問題ありません。
起動用スクリプト:crowi.sh
起動用スクリプトcrowi.sh
、crowi-plusインストールディレクトリに配置(/usr/local/bin/crowi-plus/crowi.sh
)。
1 2 3 | #!/bin/bash cd /usr/local/bin/crowi-plus npm run server:prod |
設定ファイル:crowid
サービス設定ファイルcrowid
、systemd用ディレクトリに配置(/etc/systemd/system/crowi-plus.service
)。
1 2 3 4 5 6 7 8 9 10 11 | [Unit] Description=crowi-plus - Enhanced Crowi. After=network.target mongodb.service [Service] WorkingDirectory=/usr/local/bin/crowi-plus EnvironmentFile=/etc/systemd/system/crowi.conf ExecStart=/bin/bash /usr/local/bin/crowi-plus/crowi.sh [Install] WantedBy=multi-user.target |
設定ファイル:crowi.conf
サービス設定ファイルcrowi.conf
、systemd用ディレクトリに配置(/etc/systemd/system/crowi.conf
)。以前のCrowi用のものと同じです。
1 2 3 4 | PORT=3000 MONGO_URI="mongodb://{DB_USER}:{DB_PASSWORD}@{MONGODB_ADDRESS}/{DB_NAME}" PASSWORD_SEED={YOUR_PASSWORD_SEED} FILE_UPLOAD=local |
実行方法も前回と同じです。スクリプト例の通り設定ファイルをコピーする場合は、各設定ファイルを同じディレクトリにおくかパスを指定して下さい。
1 2 3 | $ (スクリプトと同じディレクトリ) $ chmod +x setup_crowi.sh $ ./setup_crowi.sh |
スクリプトが正常に完了すれば、サービスとして自動敵に起動されるよう設定されているので再起動するかsudo systemctl start crowi-plus
を使ってサーバを起動してください。
初回インストール時以降の流れはCrowiとほぼ同じです。
変更点
詳細は前回とだいたい同じなので省略し、変更点のみ記載しておきます。
MongoDBまわりはパッケージ名とユーザ作成時のコマンドを変えています。
- パッケージ名:
mongodb-server
- コマンド:
addUser("ユーザ名", "パスワード")
- (サービスはインストール時に自動的に設定される)
今回検証したものではMongoDB 2.6がインストールされました。公式マニュアルに記載されている3.xではありませんが、少なくとも私の環境ではちゃんと動いているように見えます。
その他、crowi-plusの移行方法でも説明されている通り、インストールや起動に使うコマンドが変更されています。
起動はともかく、インストールはyarnで依存関係を解決している分も含め、やや時間がかかります。まあラズパイなので気長に待ちましょう。
その他:crowi-plusの設定
初回起動以降はCrowiとあまり変わりませんが、crowi-plusはいろいろカスタマイズできて便利ですね。
私の場合はカスタムCSSで表示を若干変えています。全体的に青系にしたり、リスト表示を詰めたり、まあソースを読まずにテキトーに書いているので雑ですが。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | a { color: #00358c; } .crowi.main-container .crowi-header .navbar-collapse { background: #002B72; } .wiki ul li { line-height: 1.1em; } .wiki ol li { line-height: 1.1em; } .wiki ul li p { line-height: 1.1em; margin: 8px 0; } .wiki ol li p { line-height: 1.1em; margin: 8px 0; } .wiki a { color: #0057e5; } .wiki pre { color: #f5f5f5; background-color: #333333; } code { font-family: Osaka-Mono, Monaco, Menlo, Consolas, "Courier New", monospace; } |
ちなみにデフォルトのものと比較するとこんな感じ。
追記:アップデート
公式のマニュアルにも書いてありますが、pullして再度ビルドすればcrowi-plusを更新することができます。
1 2 3 4 | $ cd /usr/local/bin/crowi-plus $ sudo git pull $ sudo yarn $ sudo npm run build:prod |
当初はcrowi-plusを入れていたのですが、最近アップデートしたらGROWI(3.1.4-RC)になっていました。
依存バージョンが変わっていたのでnode本体も事前に更新(6→8)しています。
クリーンインストールする際には、おそらくインストール用スクリプトでクローンするURLやnodeの依存バージョンを変更すれば動くと思われます。
1 2 3 4 5 6 | ... sudo n 8 sudo npm install -g npm@6 ... git clone https://github.com/weseek/growi.git ... |
おわり。
コメント
[…] Mateを使ったRaspberryRaspberry Pi 3にcrowi-plus/GROWIをセットアップする […]