git-based wiki のまとめ
マークダウン記法で,コードのinline展開やTeXサポートがあるノートが欲しいときは git-based wiki が便利だと教えてもらった
git-based wiki の良いところ
どれがいいのか
- 結論から言うと以下の2つが良かった.
gollum
実装は Ruby+Sinatra. defaultのボタン配置やcss,バグが気になるが,TeXサポート(Mathjax)等一通りの機能が揃っている.
シンプルで使いやすいが,基本的にひとり用と思う.
github.com
jingo
実装は node.js+express. サブディレクトリ*2や,TeX サポートはない.
機能は絞っているが,安定している. サイドバーなどを設定することが可能.
nodeが好きなので, 今はjingoを使っている.
github.com
jingoの設定
デモはこんな感じ.
README 読むと大体わかる.
jingo/README.md at master · claudioc/jingo · GitHub
Install jingo
$ npm install -g jingo
or
$ git clone https://github.com/claudioc/jingo.git $ cd jingo $ npm install
config ファイルの生成
$ ./jingo -s > config.yaml
するとサンプルの設定ファイルが吐き出せる.
設定可能なオプションの詳細は以下を参照のこと.
https://github.com/claudioc/jingo/blob/master/README.md#configuration-options-reference
--- # Configuration sample file for Jingo (YAML) application: title: wiki logo: '' favicon: '' repository: '/path/to/your/repository' docSubdir: '' remote: '' pushInterval: 30 secret: change me git: git skipGitCheck: false loggingMode: 1 pedanticMarkdown: true gfmBreaks: true staticWhitelist: '/\.png$/i, /\.jpg$/i, /\.gif$/i' proxyPath: '' authentication: google: enabled: false clientId: replace me with the real value clientSecret: replace me with the real value redirectURL: '' github: enabled: false clientId: replace me with the real value clientSecret: replace me with the real value redirectURL: '' ldap: enabled: false url: 'ldap://example.org:389' bindDn: '' bindCredentials: '' searchBase: 'ou=people,dc=example,dc=org' searchFilter: '(uid={{username}})' searchAttributes: '' local: enabled: true accounts: - username: 'denkiwakame' passwordHash: '3b2c6c10d0e78072d14e02cc4c587814d0f10f3a' email: '' features: markitup: false codemirror: true gravatar: true server: hostname: localhost port: 6067 localOnly: false baseUrl: '' CORS: enabled: false allowedOrigin: '*' authorization: anonRead: true validMatches: .+ emptyEmailMatches: false pages: index: Home title: fromFilename: true fromContent: false asciiOnly: false lowercase: false itemsPerPage: 10 customizations: sidebar: _sidebar.md footer: _footer.md style: _style.css script: _script.js
git レポジトリの設定
ローカル或いはサーバの適当な場所にwikidata
みたいなレポジトリを作り,git init
しておく.
config.yaml
の application.repository
にそのレポジトリへの絶対パスを書く.
application: title: wiki logo: '' favicon: '' repository: '/path/to/wikidata'
authentication
とりあえず手軽なローカル認証にしておく.passwordHash: はSHA-1ハッシュした適当なパスワードを書く
local: enabled: true accounts: - username: 'stardust-OL' passwordHash: '3b2c6c10d0e78072d14e02cc4c587814d0f10f3a'
run
$ ./jingo -c config.yaml
で起動できるので,configに設定したポートlocalhost:6067 (default) を見に行けばwikiが使えるようになる.
ブラウザから書き込むか,ローカルでgitレポジトリに直接 *.md
を編集・git commit すればレンダラに反映される.
ブラウザで編集した時はgitレポジトリの中で勝手にcommitが走ると思えば良い.
自分は普段はVimで編集していて,markdownを展開して見たい時だけブラウザで確認する.
wikiデータ本体であるgitレポジトリさえ保持しておけば,wikiエンジン自体はいつでも別のものに変えられる.
customization
customizations: sidebar: _sidebar.md footer: _footer.md style: _style.css script: _script.js
_sidebar.md
に記載した内容がサイドバーに表示できたりする. _style.css
に追加のcssを記述できるので,好みのデザインに直せば良い.
TeX サポートやっぱり欲しい
forkして KaTeX 実装を足したやつを作った.
GitHub - denkiwakame/jingo at katex-support
KaTeX を選んだのはMathJax よりレンダリングが高速であるのと実装が軽量であることが理由だが,
- サポート関数が少ない(し書いてるとよくハマる)
- パースのエラーハンドリングが微妙
がよくなかった.
今現在,jingoの開発はあまり活発ではないが,作者は大規模なrewriteを計画しているらしいので次のバージョンのjingoに期待したい.