−25%

Windows 年払い、10月31日まで。 プランを見る

EQVPS

BookStack 向け VPS:セルフホストのチーム Wiki

BookStack を VPS で動かしてチームのドキュメント Wiki に。MariaDB と Docker での構築、自分のドメインでの HTTPS、初回ログイン、バックアップ、実際に必要なスペック。

チームのドキュメントがだめになる道はたいてい 2 つです。誰も検索できないチャットのスレッドに散らばるか、使いにくすぎて誰も更新しない Wiki に埋もれるか。BookStack は、実際に使ってもらえる珍しいセルフホストの Wiki です。内容は棚、本、章、ページに収まり、誰でも研修なしで理解できる構造になっています。しかもサーバーはほとんど要りません。

BookStack を選ぶ理由

万能の道具ではありません。コードと一緒に変わるべき開発者向けドキュメントは、Wiki ではなくリポジトリに置くべきです。

必要なスペック

BookStack は軽量です。たいていのチームには Micro-IP(1 vCPU、2 GB、月 $10)で十分すぎるほど。専用 IP があるからこそ、同僚が自分のドメインに HTTPS でアクセスできます。ディスクが増えるのはアップロードされたスクリーンショットや PDF によるもので、ページ数ではありません。

Docker Compose でインストールする

広く使われている LinuxServer.io のイメージを使います。まずアプリケーションキーを生成します。

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

表示された base64:... の値をコピーし、docker-compose.yml を作ります。

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=https://wiki.example.com
      - APP_KEY=base64:paste-your-key-here
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=bookstack
      - DB_USERNAME=bookstack
      - DB_PASSWORD=change-me
    volumes:
      - ./bookstack:/config
    ports:
      - 127.0.0.1:6875:80
    depends_on:
      - db
    restart: unless-stopped
  db:
    image: lscr.io/linuxserver/mariadb:latest
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=change-me-too
      - MYSQL_DATABASE=bookstack
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=change-me
    volumes:
      - ./db:/config
    restart: unless-stopped
docker compose up -d
docker compose logs -f bookstack

APP_URL は、https:// も含めて利用者が使うアドレスと一致させてください。間違えると、画像やリンクがおかしな壊れ方をします。Compose について詳しくはスタックのデプロイガイドで。

HTTPS と初回ログイン

サブドメインをサーバーに向け(方法)、127.0.0.1:6875 の前段に nginx を置いて、certbot で証明書を追加します。手順はリバースプロキシのガイドで順を追って説明しています。

その後、初期アカウント admin@admin.com / password でログインします。リンクを共有する前に、メールアドレスとパスワードをすぐ変更してください。ほかのメンバーには個別のアカウントを用意するか、ID プロバイダー経由でログインしてもらいます。

バックアップ

守るべきものは 2 つ、データベースと ./bookstack 内のアップロードです。データベースはこのような夜間ジョブで押さえられます。

docker compose exec -T db mysqldump -u bookstack -pchange-me bookstack > /var/backups/bookstack.sql

続いて /var/backups と compose のフォルダーをサーバー外にバックアップします。まさに restic のガイドで紹介している内容です。さらに Managed Backups でサーバー全体の日次復元ポイントも加えられます。

運用

アップデートは docker compose pull && docker compose up -d だけ。BookStack は起動時にデータベースのマイグレーションを実行します。メジャーバージョンの前にはリリースノートを読みましょう。短くてわかりやすいものです。

チケットやコードの置き場所も欲しいなら、同じ種類のプランでセルフホストの Git サーバーを並べるのがおすすめです。

デプロイの準備はできましたか?暗号通貨で支払い、KYC不要 — 約1分でオンライン。

今すぐデプロイ →

FAQ

BookStack にはどのくらいのサーバーが必要ですか?

ほんのわずかです。BookStack は MariaDB を使う PHP アプリで、数十人のチームなら 1 vCPU と 2 GB のメモリで快適に動きます。ディスクは主にアップロードされた画像や添付ファイルに使われます。

初期のログイン情報は?

admin@admin.com とパスワード 'password' です。ログインしたら、URL を誰かに共有する前に両方ともすぐ変更してください。

社内のログイン基盤を使えますか?

使えます。BookStack は LDAP、SAML2、OpenID Connect に対応しているので、すでに使っている ID プロバイダーで全員がログインできます。

専用 IP は必要ですか?

チームで使うなら必要です。同僚はブラウザから HTTPS で開くので、自分の IP で 443 番ポートへの着信を受ける必要があります。個人のメモ帳として使うだけなら、NAT プランの SSH トンネルでも足ります。

バックアップはどうすればいいですか?

データベースをダンプし、マウントした設定ボリュームの中にあるアップロード用フォルダーをコピーします。restic のガイドでは、両方を暗号化されたサーバー外のスナップショットとして自動化する方法を紹介しています。

コメント

まだコメントはありません。最初になりましょう。

コメントを残す

コメントは表示される前にモデレートされます。