シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

Wiki.jsをさわってみました。

シナプスの技術部システム開発課の小園です。
今時のWikiエンジンであるWiki.jsをさわってみました。

目次

Wiki.jsとは

Node.jsで動くWikエンジンです。
初版が2017年です。
Wikiエンジンとしては後発になると思います。

Wiki.jsの導入に必要なサイト

なぜさわってみたのか

シナプスでドキュメントをいかに管理するかというのは長年の課題になっています。
シナプスのシステム部門では、当初Pukiwikiを使っていましたが、現在は、GitLab上のMarkdownファイルをMkDocsでhtmlに変換するという仕組みを使って、ドキュメントを管理しています。
Markdownになった事で、サービス間の移行が以前よりは容易になりましたので、様々なツールを検証しています。
その一環としてWiki.jsについても検証しました。

インストール~管理者ログイン~初期ページ作成

今回は、Dockerで構築します。
公式ドキュメントでは他に、Ubuntu、Heroku、Kubernetes、Linux、macOSなど色々な環境でのインストール方法が記載されています。

公式のDockerでのインストールを参考にします。
Docker | Wiki.js
ページに載っている docker-compose.yml のサンプルを環境にあわせて調整して起動します。

他に、外部からアクセスができるようにNginxのReverseProxyの設定を行います。

ブラウザでアクセスをすると、初期設定画面が開きます。

f:id:oceandepthz:20220311152419p:plain:w500

管理者ユーザ、サイトURLを設定して、インストールします。
しばらくすると、起動してログイン画面になるので、先程、登録した管理者ユーザでログインします。

f:id:oceandepthz:20220311153155p:plain:w500

ログインをすると、初期ページの作成を促されます。

f:id:oceandepthz:20220311153606p:plain:w500

作成できるページの種類は、Markdown、Code(HTMLを書く)、VisualEditor となっています。
APIDocs、Blog、Tabular は Coming Soon です。(今後に期待ですね。)

f:id:oceandepthz:20220311161739p:plain:w500

Markdownを選択するとページプロパティのページが開きます。
そこにTitle等の項目を入力し、[OK]ボタンを押すと、Markdownエディターになります。
ページ作成時にLocateが設定できます。これはマルチランゲージ対応のためです。(無効にもできます) 他、このページの公開スケジュール、JavaScript、CSS などを設定可能です。

f:id:oceandepthz:20220311162205p:plain:w500

Markdownエディターでは、入力画面とプレビュー画面があり、リアルタイムに確認をしながら作業できます。

f:id:oceandepthz:20220311162243p:plain:w500

機能について

メニューの日本語化

管理機能のLocaleより、日本語のデータをダウンロードして、設定する事でメニューが日本語化されます。

f:id:oceandepthz:20220311162755p:plain:w500

認証

様々な方法で認証をする事ができます。
AzureActiveDirectory, GitHub, Google, LDAP(Active Directory) などあるので、環境にあわせて選択、設定します。
イントラ環境やクラウド環境、様々な環境に合わせて認証を選べるのは良いですね。
詳細は、公式ドキュメントのAuthenticationを参照ください。
Authentication | Wiki.js

f:id:oceandepthz:20220311163154p:plain:w500

権限

グループにパーミッションやページルールを設定する事で権限の管理が出来ます。
設定する事で、グループ毎に閲覧や編集の範囲を設定する事ができます。

  • 権限の設定画面です。
    f:id:oceandepthz:20220311170624p:plain:w500

  • パーミッションの設定画面です。
    f:id:oceandepthz:20220311170731p:plain:w500

  • ページルールの設定画面です。
    f:id:oceandepthz:20220311170945p:plain:w500

レンダリング

Markdownの拡張として、PlantUML, Mermaid などがサポートされています。
Markdownエディターのプレビュー画面でのリアルタイム表示もされます。
MermaidはGitHubが標準サポートしたので、今後、使う機会が増えそうです。

f:id:oceandepthz:20220311164050p:plain:w500

ストレージ

コンテンツのバックアップや同期ができます。
ストレージとして、Amazon S3, Azure Blob Storage, Git, Local File System など色々あります。
コンテンツの同期方法として、双方向、ターゲットに push、ターゲットから pull など色々あります。(ストレージによって同期方法は未サポートのものもあります。)
あくまでコンテンツのバックアップや同期で、Wiki.jsのコンテンツはデータベースへ保存されています。

Gitリポジトリに保存されたコンテンツのインポートやエクスポートができます。

f:id:oceandepthz:20220311172640p:plain:w500

記事の履歴管理

記事の差分管理ができます。
記事の差分を見たり、内容を戻したりする事ができます。

Gitリポジトリのコンテンツをインポートした場合に、Gitのコミットが履歴管理になるのか確認しましたが、それはならないようでした。(あくまで Wiki.js で保存した分が履歴管理の対象になります。)

f:id:oceandepthz:20220311180944p:plain:w500

まとめ

基本的な機能はもっており、チーム、社内などで情報共有をしたいといった場合には 選択肢として検討しても良いのではないかと思いました。
ストレージとして様々な手段を持っており、柔軟な運用ができる点も良いと思います。
まだ機能が未実装の部分もありますが、次のバージョンに向けて積極的に開発も行われているようです。今後のアップデートにも期待です。