Wiki.
あなたのWikiはどこから?
一般的に
生のHTMLを書くのに疲れた人にとって,
- ※1
- 個人の感想です。
他にもPerlで作られたYukiWiki,
- ※2
- 「最初のWiki」
であるWikiWikWebはPerl製のようです。
最近ではGitHub・
結果的にウィキソフトウェアを単体でインストールすることは,
Wiki.
- Markdownエディター・
WYSIWYGエディター・ HTMLエディターのサポート - gitリポジトリやクラウド上にデータを保存可能
- 多種多様な認証システムのサポート
- 柔軟なアクセス管理機能
- 図の作成・
埋め込み - 画像などのメディアコンテンツのアップロードにも対応
- モバイルデバイスでも使いやすいUI
今風のWikiなら必要な機能は一通り備わっていると思って問題ありません。またアカウント認証・
ちなみにWiki.
Wiki.jsのデプロイ
それではWiki.
- ※3
- Wiki.
jsのサイトや設定画面で 「coming soon」 と書かれているものは, おおよそ3. 0かそれ以降で投入を予定している機能だと思ってください。
公式ドキュメントの
- 2コア以上のCPUを推奨
- 少なくとも1GBのRAM
(Wiki. js自身は通常は70MBぐらいしか使わないが, たまにより多く使うことも) - ストレージ容量はコンテンツ次第,
Wiki. js自身は数MB程度使用 - アップデートや各種アドオンのインストールのためのインターネットへのアクセス
(ただしインターネットから隔離されていても利用は可能) - アクセス可能なドメインかIPアドレス
(サブフォルダーを使うのは不可, ただしリバースプロキシーを経由すれば可)
あとはSQLデータベース
最後の要件はhttps://
」
公式ドキュメントのUbuntuのインストール方法ではDockerを使ったインストールを紹介しているものの,
DockerそのものはDocker公式のリポジトリのそれでも,
他にもサービスごとにサーバーを分離したいのであれば,sudo lxd init
」
$ lxc launch ubuntu:20.04 wikijs $ lxc exec wikijs -- sh -c 'apt update && apt full-upgrade -y && apt autoremove -y' $ lxc config set wikijs security.privileged true $ lxc config set wikijs security.nesting true $ lxc restart wikijs $ lxc shell wikijs # sudo -i -u ubuntu
システムコンテナーの中でさらにdocker-composeを使うために,
- ※4
- LXDのセキュリティ的な隔離機能は使えなくなってしまいますが,
サービス単位でグループ化できるのと, ホストOSとは独立したファイルシステムになるため, 別サーバーへのマイグレーションが楽になるというメリットがあります。
もちろん,
ここからは,docker-compose.
ファイルを置く場所を決めます。これはどこでもかまいません。
$ sudo apt install -y docker.io docker-compose $ sudo mkdir /etc/wikijs && cd /etc/wikijs
次に例の内容をそのままにdocker-compose.
ファイルを作成します。
$ cat <<'EOF' | sudo tee docker-compose.yml version: "3" services: db: image: postgres:11-alpine environment: POSTGRES_DB: wiki POSTGRES_PASSWORD: wikijsrocks POSTGRES_USER: wikijs logging: driver: "none" restart: unless-stopped volumes: - db-data:/var/lib/postgresql/data wiki: image: requarks/wiki:2 depends_on: - db environment: DB_TYPE: postgres DB_HOST: db DB_PORT: 5432 DB_USER: wikijs DB_PASS: wikijsrocks DB_NAME: wiki restart: unless-stopped ports: - "80:3000" volumes: db-data: EOF
最後にデータベースのパスワードを変更して準備完了です。
$ sudo sed -i "s,wikijsrocks,$(openssl rand -base64 32)," docker-compose.yml
本来であればこのパスワード情報はsecretsを使うのが正しいやり方だと思うのですが,requaraks/
イメージではなく,
環境変数に関しては公式ドキュメントのDockerのページに記載があります。基本的にその設定のままで良いはずです。ただしもしLet’s EncryptなどでWiki.SSL_
やLETSENCRYPT_
等の設定が必要になります。今回は前段のNginxでこれらを行うこととし,
docker-compose.
でports
」80:3000
」- 127.
」
- ※5
- LXD上にDockerをインストールして構築する場合,
上記手順で構築したLXDインスタンス上の80番ポートはインターネットに公開されず, ホスト上のリバースプロキシーはLXDインスタンスの80番を見ることになため 「 - 80:3000
」のままで問題ありません。
docker-compose.
の準備ができたら,
$ sudo docker-compose pull $ sudo docker-compose up -d $ sudo docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------- wikijs_db_1 docker-entrypoint.sh postgres Up 5432/tcp wikijs_wiki_1 docker-entrypoint.sh node ... Up 0.0.0.0:80->3000/tcp,:::80->3000/tcp, 3443/tcp
オリジナルのdocker-compose.
のままだと,
この状態になったらhttp://サーバーのアドレス/
」
- ※6
- TLS接続を構築する上で,
必ずしもリバースプロキシーを使わなければいけないということはありません。ただし, そういう設定をしておいたほうが楽になるケースは多いです。今回の場合, LXDコンテナーの中にWiki. jsを閉じ込めるなら, ホスト側にあるNginxでリバースプロキシーを構築するのが一番かんたんな対応となります。