Wiki.js
オープンソースの Node.js 製 Wiki engine です。
https://wiki.js.org/
https://github.com/Requarks/wiki
Markdown で記述でき、Github 等のリモートのリポジトリにも sync させることができます。
docker-compose でローカルに立ち上げる
Using Docker Compose | Docker - Wiki.js
ドキュメントにある、sample の config.yml
と docker-compose.yml
を使う場合以下の点を直しておきます。
- port: 80
+ port: 3000
- db: mongodb://localhost:27017/wiki
+ db: mongodb://wikidb:27017/wiki
mongo の設定はドキュメントにある通りです。port の方は docker-compose
の方の ports の設定が "80:3000"
になっているためです。
https://github.com/Requarks/wiki/blob/master/tools/docker-compose.yml#L18-L19
さらに注意ですが、ホスト側に expose する port は 80 にしておかないと、 JavaScript 等の asset ファイルが読み込めません。
Github に sync する設定を追加する
Github Using SSH (Repository) | Git - Wiki.js
Using SSH | Git - Wiki.js
ここでは、SSH を使って Github に sync する方法を利用します。
git:
url: git@server.com:org/repo.git
branch: master
auth:
type: ssh
privateKey: /etc/wiki/keys/git-private.pem
sslVerify: true
signature:
name: Marty
email: marty@doc.com
ドキュメントの設定を抜粋しています。
上記の場合、まず org/repo
のリポジトリの master
ブランチは存在している状況にしておく必要があります。新規リポジトリを作ったままの状態では失敗します。
続いて、ssh の key に関してですが、上記の設定の場合はドキュメントにあるように、 Deploy Keys が必要です。
Deploy Keys が取得できたら、その秘密鍵を以下のように設定します。以下では秘密鍵を id_rsa_wikijs
という名前にしたという前提です。
wikijs:
image: 'requarks/wiki:latest'
# 略
volumes:
- ./config.yml:/var/wiki/config.yml
- /path/.ssh/id_rsa_wikijs:/etc/wiki/keys/git-private.pem
config.yml の内容
とりあえず動かす場合には認証も不要だと思うので、以下ぐらいの設定があれば十分です。(もちろん Heroku 等に publish する場合は sessionSecret
の値を変えたり、 auth
の設定はしてください。)
host: http://localhost
port: 3000
db: mongodb://wikidb:27017/wiki
sessionSecret: 1234567890abcdefghijklmnopqrstuvxyz
public: false
auth:
defaultReadAccess: false
local:
enabled: true
git:
url: git@github.com:dany1468/wiki.git
branch: master
auth:
type: ssh
privateKey: /etc/wiki/keys/git-private.pem
sslVerify: true
signature:
name: dany1468
email: dany1468@example.com
ログを見る
うまく動作しなかった場合はログを見ます。
% docker-compose exec wikijs bash
# supervisorctl tail wikijs
# cd /logs
# ls
supervisord.log wiki-stderr.log wiki-stdout.log
supervisord で動作しているのでログを見れますし、/logs
にいけばログファイルもあるので、内容を見てみます。
Github への同期のされ方
上記を見れもらうと分かる通り、すべてのページが root に配置されます。
余談
部門の都合で、Markdown ベースの情報共有ツールが使えず、仕方なく Github をドキュメント置き場にするかと考えて、いろいろ調べていた中でたどり着きました。
Git をデータベースにするという点では、 Ruby 製の gollum 等もありましたが、なるべく余計な工夫なしで Github に入れられて、かつ、Github だけ見る人は普通の Markdown として見られるツールが欲しかったのでした。
結果として、Gitbook Editor を使ってドキュメントを書くのが自分のしたいことに最も近かったので、Wiki.js は使わなかったのでした。