お金をかけずにサーバーの勉強をしよう

Wiki.jsインストール

2023年8月8日

メニューへ戻る

こんにちは。

ITの仕事での諸々のノウハウを人に伝えるためにドキュメントの作成は欠かせないのですが、他人のために自分の知見を記すのは思いの外面倒臭いものです。

ぶっちゃけると、やりたくない…。

これが様々な現場でドキュメント整備が進まない理由だと思います。

だからせめてフォーマットを綺麗にするのが辛い Wordじゃなくて Excel方眼紙で作ってしまうのですが、そのうち Excel方眼紙でさえ面倒くさくなります。

どうせ画面で見るなら紙ベースのフォーマットなんてどうでも良いじゃん…

と思ったものです。

その際に、「Markdownで保存できて、だけどちゃんとHTMLで表示されるサーバーがあればなぁ…」とか思っている内に、マイクロソフトの Boxを使えるようになって、勝手に実現された覚えがあります。

実際に Markdownでドキュメントを作ってみたら、修正が入った時にフォーマットを綺麗に直す手間が無いのが結構楽だったのを覚えています。

Box等は使えないけど…という人にはこんなのはどうですか?というものを今回はインストールしてみようと思います。

Wiki.js

名前からしても、いかにも Node.jsで動くものって感じですね。

環境は 2023年8月8日で以下の通り一通り最新版でやってみます。

※Node.js 18以降への対応は Wiki.js 2.5.300からです。 もう少々お待ち下さい。
また Node.jsの奇数番号(LTSではないやつ)には対応していないのでご注意下さい。

Ubuntu Serverは以下で作ったものを前提にしています。
Ubuntu Linux Serverをインストール
Ubuntu Serverの初期設定

Node.jsはこちらの手順でインストールします。
Node.jsインストール

PostgreSQLは旧バージョン(14)対象の手順ですがこちらを参考に 15をインストールします。
PostgreSQLインストール

以上の準備ができた前提で、以降に進みます。


Wiki.jsの Ubuntuへのインストールについては Dockerのものが前に出ていますが、ここでは普通にインストールしていきますので、以下の手順に従ってやっていきます。
なお、この Wiki.jsのサイトも同ソフトで提供されているとのこと。
Linux Getting started with a Wiki.js installation on Linux


Wiki.jsをダウンロードします。

subro@UbuntuServer2204-1:~$ wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
--2023-08-08 07:33:16--  https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
github.com (github.com) をDNSに問いあわせています... 20.27.177.113
github.com (github.com)|20.27.177.113|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://github.com/Requarks/wiki/releases/download/v2.5.299/wiki-js.tar.gz [続く]
--2023-08-08 07:33:16--  https://github.com/Requarks/wiki/releases/download/v2.5.299/wiki-js.tar.gz
github.com:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://objects.githubusercontent.com/github-production-release-asset-2e65be/65848095/d6be8aaf-05d1-4614-8ad1-98768a3d2bf6?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230807%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230807T223316Z&X-Amz-Expires=300&X-Amz-Signature=cfc3a5933d5808652f8443bea454c35bc5069ea6e2cbecae03e12d3747ec0100&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=65848095&response-content-disposition=attachment%3B%20filename%3Dwiki-js.tar.gz&response-content-type=application%2Foctet-stream [続く]
--2023-08-08 07:33:16--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/65848095/d6be8aaf-05d1-4614-8ad1-98768a3d2bf6?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230807%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230807T223316Z&X-Amz-Expires=300&X-Amz-Signature=cfc3a5933d5808652f8443bea454c35bc5069ea6e2cbecae03e12d3747ec0100&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=65848095&response-content-disposition=attachment%3B%20filename%3Dwiki-js.tar.gz&response-content-type=application%2Foctet-stream
objects.githubusercontent.com (objects.githubusercontent.com) をDNSに問いあわせています... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 76346409 (73M) [application/octet-stream]
‘wiki-js.tar.gz’ に保存中

wiki-js.tar.gz                                   100%[==========================================================================================================>]  72.81M  11.1MB/s    in 6.5s

2023-08-08 07:33:23 (11.1 MB/s) - ‘wiki-js.tar.gz’ へ保存完了 [76346409/76346409]

subro@UbuntuServer2204-1:~$ ls -l wiki-js.tar.gz
-rw-rw-r-- 1 subro subro 76346409  6月  4 13:56 wiki-js.tar.gz

ダウンロードが完了して [wiki-js.tar.gz]ファイルができました。

圧縮ファイルなので解凍しますが、この過程でインストール先のディレクトリを指定しなければなりません。

どうしようかな?と考え、Wiki.js運用専用の OSユーザーを作って、そのホームディレクトリに入れることにしました。

ホームディレクトリ下にこういったサーバープログラムをインストールするのはあまりメジャーではないので他の場所に入れたい場合は、以降インストールディレクトリを自分の環境に読み換えて下さい。

OSに [wikijs]ユーザーを作ります。
(自動的に同名のグループもできます)

subro@UbuntuServer2204-1:~$ sudo adduser wikijs
ユーザー `wikijs' を追加しています...
新しいグループ `wikijs' (1001) を追加しています...
新しいユーザー `wikijs' (1001) をグループ `wikijs' に追加しています...
ホームディレクトリ `/home/wikijs' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい パスワード: [wikijs]ユーザーの新規パスワード
新しい パスワードを再入力してください: パスワードをもう一回
passwd: パスワードは正しく更新されました
wikijs のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
        フルネーム []: Enterキー
        部屋番号 []: Enterキー
        職場電話番号 []: Enterキー
        自宅電話番号 []: Enterキー
        その他 []: Enterキー
以上で正しいですか? [Y/n] Y

ユーザーができました。

[/home/wikijs/wiki]ディレクトリがインストールディレクトリとなるように解凍します。

subro@UbuntuServer2204-1:~$ sudo mkdir /home/wikijs/wiki

subro@UbuntuServer2204-1:~$ sudo tar xzf wiki-js.tar.gz -C /home/wikijs/wiki

何も出ませんが、上手く解凍できているはずです。

いま作ったものを全て [wikijs]ユーザーの持ち物にします。

subro@UbuntuServer2204-1:~$ sudo chown -R wikijs:wikijs /home/wikijs/wiki

こちらも何も出ませんが、上手くいっているはずです。


次は Wiki.jsの設定ファイルの編集です。

一旦ログアウトして [wikijs]ユーザーでログインし直します。

ワーキングディレクトリはホームディレクトリではなく、一つ下の [~/wiki] になっていますので、ご注意下さい。
(「~」 はホームディレクトリを表す文字です)

設定ファイルの雛形 [config.sample.yml]ファイルを [config.yml] にリネームすると設定ファイルになります。

wikijs@UbuntuServer2204-1:~/wiki$ mv config.sample.yml config.yml

wikijs@UbuntuServer2204-1:~/wiki$ ls -l config.yml
-rw-r--r-- 1 wikijs wikijs 4933  6月  4 12:33 config.yml

この設定ファイル、ぱっと見では当環境だと変更が必要な箇所はないようですが、少なくとも PostgreSQLへの接続情報(ユーザー名とパスワードとか)はそれぞれの環境に合わせて変える必要があるでしょう。

面倒臭いので私は手間を減らすため、このファイルの内容に合わせて PostgreSQL側を設定してしまいますけど、本当こういう事をしてはいけません。
ちゃんと PostgreSQL側にセキュリティのしっかりした設定をしましょう。

[/home/wikijs/wiki/config.yml]に書いてある PostgreSQLへの接続情報。

db:
  type: postgres

  host: localhost
  port: 5432
  user: wikijs
  pass: wikijsrocks
  db: wiki
  ssl: false

  sslOptions:
    auto: true

  schema: public

PostgreSQLに [wikijs]ユーザーを「wikijsrocks」というパスワードでログインできるように作らないといけません。

PostgreSQLのインストールにより PostgreSQL管理者の OSユーザー [postgres] が作られていますので、Ubuntu Server に [postgres]ユーザーでログインして下さい。

PostgreSQLにログインします。

postgres@UbuntuServer2204-1:~$ psql
psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1))
"help"でヘルプを表示します。

postgres=#

PostgreSQLのコマンドプロンプトになりました。

[wikijs]ユーザーを「wikijsrocks」というパスワードで作ります。

postgres=# CREATE USER wikijs WITH PASSWORD 'wikijsrocks';
CREATE ROLE

ユーザーができました。

[wiki]データベースを作ります。

postgres=# create database wiki;
CREATE DATABASE

データベースができました。

[wiki]データベースに対する全権限を [wikijs]ユーザーに付与します。

postgres=# GRANT ALL PRIVILEGES ON DATABASE wiki TO wikijs;
GRANT

権限設定できました。

PostgreSQL15からの大きな変更として、データベースのオーナーしか [public]スキーマに書き込みができなくなっています。
よって [wiki]データーベースのオーナーを [wikijs]ユーザーに変更します。

postgres=# ALTER DATABASE wiki OWNER TO wikijs;
ALTER DATABASE

これで DBの設定が完了しました。


再び、Ubuntu Serverに [wikijs]ユーザーでログインし直します。

インストールディレクトリ [~/wiki] に移動した後、nodeコマンドで Wiki.jsを起動します。

wikijs@UbuntuServer2204-1:~/wiki$ node server
2023-08-07T22:58:26.334Z [MASTER] info: =======================================
2023-08-07T22:58:26.336Z [MASTER] info: = Wiki.js 2.5.299 =====================
2023-08-07T22:58:26.336Z [MASTER] info: =======================================
2023-08-07T22:58:26.337Z [MASTER] info: Initializing...
2023-08-07T22:58:26.805Z [MASTER] info: Using database driver pg for postgres [ OK ]
2023-08-07T22:58:26.831Z [MASTER] info: Connecting to database...
2023-08-07T22:58:26.867Z [MASTER] info: Database Connection Successful [ OK ]
2023-08-07T22:58:27.067Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2023-08-07T22:58:27.067Z [MASTER] info: Starting setup wizard...
2023-08-07T22:58:27.184Z [MASTER] info: Starting HTTP server on port 3000...
2023-08-07T22:58:27.184Z [MASTER] info: HTTP Server on port: [ 3000 ]
2023-08-07T22:58:27.187Z [MASTER] info: HTTP Server: [ RUNNING ]
2023-08-07T22:58:27.187Z [MASTER] info: 🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻
2023-08-07T22:58:27.188Z [MASTER] info:
2023-08-07T22:58:27.188Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2023-08-07T22:58:27.188Z [MASTER] info:
2023-08-07T22:58:27.188Z [MASTER] info: 🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺

Wiki.jsが動き出しました。
[3000/tcp] で待ち受けていますので Webブラウザでアクセスしてみます。
私の環境では [http://UbuntuServer2204-1:3000] です。

初期セットアップ画面です。
管理ユーザーの E-mailアドレス(これが Wiki.jsの IDになる)と、Wiki.jsへのログインパスワードを 2箇所に設定します。
INSTALLを押します。
Wiki.js画面 1

暫く初期化作業が走ってからログイン画面になります。
さっき設定した IDとパスワードを入力し、Log Inを押します。
Wiki.js画面 2

このような画面になります。
日本語環境にしましょう。
ADMINISTRATIONを押します。
Wiki.js画面 3

左のメニューにある [Locale]をクリックします。
Wiki.js画面 4

右の方にこのようなメニューが出てますので、下の方にスクロールして [Japanese] の行の右にある雲のアイコンをクリックすると日本語セットがダウンロードされます。
Wiki.js画面 5
Wiki.js画面 6

画面の上の方に戻ってきて、左にある [Locale Settings] で [Japanese] を選択します。
Wiki.js画面 7

右上にあるAPPLYを押します。
Wiki.js画面 8

これで画面が全体的に日本語になったはずです。

右上にある閉じるを押します。
Wiki.js画面 9

これでインストールは完了です。


日本語化されたこちらの画面に戻ってきていますので、Markdownで何か書いてみます。
ホームページの作成を押します。
Wiki.js画面 10

Markdownを押します。
Wiki.js画面 11

こんな画面になりますので、適当に入れて右上のOKを押します。
Wiki.js画面 12

エディタはこんな感じのよくありがちなレイアウトです。
左が書くところ、右が HTMLに変換後のプレビュー画面です。
Wiki.js画面 13

作り終わるとこんな風に表示されました。
文書にはユーザーによるコメントをつけることもできます。
Wiki.js画面 14

後はユーザーを増やして、チーム内に展開すれば…というわけです。
文書の閲覧権限の設定もできますよ。


最後に、Wiki.jsのインストール手順にある通り、サーバー起動時に systemdで Wiki.jsが自動起動するようにしておきましょう。

Ubuntu Serverに管理者権限(sudoコマンドが使える)のユーザーでログインします。
私の環境では [subro] です。

ログインしたら [/etc/systemd/system/wiki.service]ファイルを以下の内容で [root]ユーザーで作成します(sudoを使って下さい)。

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=wikijs
Environment=NODE_ENV=production
WorkingDirectory=/home/wikijs/wiki

[Install]
WantedBy=multi-user.target

このファイルを有効化します。

subro@UbuntuServer2204-1:~$ sudo systemctl enable wiki
Created symlink /etc/systemd/system/multi-user.target.wants/wiki.service → /etc/systemd/system/wiki.service.

これで OKです。
以降は OS起動時に自動的に立ち上がってくるはずです。


Wiki.jsを使ってみての感想ですが、新しいものなので見た感じデザインが今風だよね〜って思いました。

お客さんに納品するドキュメントは Wordか Excel または PDFと A4の縛りがあることがまだまだ多いと思いますけど、運用チーム用の作業手順書ならこれでイイじゃないと思います。

Boxを使っている時は挿入したい画像についてはハイパーリンクを書くだけで画像ファイルの置き場がドキュメントと一体化して管理されてなかった(気がするだけかも)ので、Wiki.jsで画層の挿入をしてみましたら、画像のアップロード画面になりました。

エディタ上で画像を挿入した図。
Wiki.js画面 15

この後でインストールディレクトリ以下で画像ファイルを探してみましたがファイルは無かったので、多分 PostgreSQL内に収まっているのでしょう。

それなら DBのバックアップ一発で全部保存しておけるのだろうと推察します。

メニューもアレコレといじってみましたが「中々良いじゃない」という感想を持ちましたです。
PDF化もできるようです。
(紙印刷で綺麗なフォーマットになるかは分かりませんが。)

ローカル環境でこういうのが欲しかった!という方にはオススメなんじゃないですかね。

サーバー運用の手順書をどのツールで書くか」や
Wiki.jsのバックアップ運用」も宜しければどうぞ。