GitHubのWikiが検索できなくて不便だなぁとか思ったりしてたら、このWikiはGitベースでできており、gollumというオープンソースで公開されていることを知りました。
そこで、ちょろっと試すためにHerokuで動くようにしてみました。 GitHubのトークンとHerokuのアカウントがあれば数分で個人用のWikiがつくれます。既存のGitHubのWikiを指定して開くこともできます。gollumには一応簡単な検索機能はあるようです。
naoa/gollum-on-heroku · GitHub
- デモ
追加機能
Herokuでの利用を想定して以下の機能を追加しています。
- GitHubへの同期
gollumでは更新があるとローカルのgitリポジトリにcommitされます。そのため、Herokuではdynoが再起動されると更新が消えてしまいます。
そこでサーバ起動時にGitHubのリポジトリをcloneし、Wikiが更新されると自動的にGitHubにpushするようにしています。*1
- Basic認証
gollumのフロントエンドはSinatraで非常にシンプルに実装されており、認証機能などはありません。環境変数で全ページもしくは編集機能のみをBasic認証を設定できるようにしています。
- 複数のgitリポジトリを利用可
1つのgitリポジトリだけでなく、複数のgitリポジトリを指定して起動できるようにしています。
必要なもの
環境変数で以下を指定する必要があります。
- GitHubのPersonal access tokens
GITHUB_TOKEN
これを指定しておかないと、Heroku上で直接更新しても再起動時に消えてしまいます。*2 GitHubのsettings -> Personal access tokensから取得することができます。
- リモートのgitリポジトリのURL
GIT_REPO_URL_1
GIT_REPO_URL_2~
wikiによって生成されたmdファイルなどが保存されるgitリポジトリを指定します。 既存のGitHubの任意のリポジトリのwikiを直接指定することもできます。*3 複数指定することができます。複数指定した場合、リポジトリ名ごとにURLが割り当てられます。*4
- 編集者のアカウント
AUTHOR_NAME
emailアドレスAUTHOR_EMAIL
git config user.name, user.email
とかで設定するやつを設定しておきます。
これがないとGitHubのコミット履歴がunknownになっちゃいます。*5
- Basic認証用のアカウント
BASIC_AUTH_USERNAME
BASIC_AUTH_PASSWORD
認証が必要な場合。編集機能のみを保護したい場合はBASIC_AUTH_MANAGE_ONLY
にtrueを設定します。
- その他gollumの起動オプション
GOLLUM_~
gollumの起動オプションを指定できます。詳細は以下参照。
https://github.com/gollum/gollum#configuration
おわりに
gollumは非常にシンプルでちょっとした個人用のwikiをさくっと使うためにはいいかもしれません。 またSintatraベースでカスタマイズしやすそうです。
共同で利用するには、OAUTH認証を追加したりsession['gollum.author']
を設定したり、もう少し手を加える必要がありそうです。