Wiki.js

Wiki.js を docker-compose で動かす

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 を使う場合以下の点を直しておきます。

https://github.com/Requarks/wiki/blob/master/config.sample.yml#L26

config.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 する方法を利用します。

config.yml
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 という名前にしたという前提です。

docker-compose.yml
  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 の設定はしてください。)

config.yml
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 への同期のされ方

https://github.com/dany1468/wiki

上記を見れもらうと分かる通り、すべてのページが root に配置されます。

余談

部門の都合で、Markdown ベースの情報共有ツールが使えず、仕方なく Github をドキュメント置き場にするかと考えて、いろいろ調べていた中でたどり着きました。

Git をデータベースにするという点では、 Ruby 製の gollum 等もありましたが、なるべく余計な工夫なしで Github に入れられて、かつ、Github だけ見る人は普通の Markdown として見られるツールが欲しかったのでした。

結果として、Gitbook Editor を使ってドキュメントを書くのが自分のしたいことに最も近かったので、Wiki.js は使わなかったのでした。