OSSウィキ比較:BookStack vs Wiki.js vs DokuWiki で社内ナレッジベースをセルフホストする
オープンソースラボ編集部 ・ 2026年6月14日
OSSウィキ比較:BookStack vs Wiki.js vs DokuWiki で社内ナレッジベースをセルフホストする
Confluence(月$600/10ユーザー〜)・Notion(月$8/ユーザー〜)・GitBook(月$6.7/ユーザー〜)に対して、BookStack(PHP製のシンプルウィキ)・Wiki.js(Node.js製の高機能ウィキ)・DokuWiki(ファイルベースの軽量ウィキ)はSaaS費用なしでナレッジベースを構築できます。
OSSウィキを選ぶ理由
- コスト: Confluence 50ユーザーは月$250。BookStackセルフホストで0円
- データ主権: 社内ナレッジ・議事録・設計書を外部SaaSに預けない
- カスタマイズ: LDAP/OIDC統合・カスタムCSS・API自動化が自由
- Markdown/Git連携: Wiki.jsはGitリポジトリをコンテンツバックエンドとして使用可能
主要ツールの概要
BookStack
2015年公開、PHP/Laravel製のOSSウィキです。GitHubスター16k+。Book→Chapter→Pageの3層構造でドキュメントを整理します。WYSIWYGエディタ(TinyMCE)標準搭載・全文検索・LDAP/SAML/OIDC認証・APIを備えた実用的なConfluence代替です。
# docker-compose.yml - BookStack セルフホスト
version: '3.8'
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
restart: unless-stopped
ports:
- "8080:80"
environment:
APP_URL: https://wiki.yourcompany.com
DB_HOST: mysql
DB_PORT: "3306"
DB_DATABASE: bookstack
DB_USERNAME: bookstack
DB_PASSWORD: ${DB_PASSWORD}
# メール設定
MAIL_DRIVER: smtp
MAIL_HOST: smtp.sendgrid.net
MAIL_PORT: "587"
MAIL_ENCRYPTION: tls
MAIL_USERNAME: apikey
MAIL_PASSWORD: ${SENDGRID_API_KEY}
MAIL_FROM: wiki@yourcompany.com
# OIDC認証(Google Workspace / Okta / Keycloak)
AUTH_METHOD: oidc
OIDC_NAME: "Google Workspace"
OIDC_DISPLAY_NAME_CLAIMS: name
OIDC_CLIENT_ID: ${OIDC_CLIENT_ID}
OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}
OIDC_ISSUER: https://accounts.google.com
OIDC_ISSUER_DISCOVER: "true"
volumes:
- bookstack_data:/config
depends_on:
- mysql
mysql:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: bookstack
MYSQL_USER: bookstack
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
volumes:
bookstack_data:
mysql_data:
# BookStack REST API でページを自動作成・更新
import requests
import os
BOOKSTACK_URL = 'https://wiki.yourcompany.com'
TOKEN_ID = os.environ['BOOKSTACK_TOKEN_ID']
TOKEN_SECRET = os.environ['BOOKSTACK_TOKEN_SECRET']
headers = {
'Authorization': f'Token {TOKEN_ID}:{TOKEN_SECRET}',
'Content-Type': 'application/json',
}
def create_page(book_id: int, chapter_id: int, name: str, markdown: str) -> dict:
resp = requests.post(
f'{BOOKSTACK_URL}/api/pages',
headers=headers,
json={
'book_id': book_id,
'chapter_id': chapter_id,
'name': name,
'markdown': markdown,
},
)
resp.raise_for_status()
return resp.json()
def search_pages(query: str) -> list:
resp = requests.get(
f'{BOOKSTACK_URL}/api/search',
headers=headers,
params={'query': query, 'count': 20},
)
resp.raise_for_status()
return resp.json()['data']
# 使用例: CI/CDのデプロイ後にリリースノートを自動投稿
release_note = '''
# v2.3.0 リリースノート
## 新機能
- OSSツール比較機能を追加
- ダークモード対応
## バグ修正
- ページ読み込みが遅い問題を修正
'''
page = create_page(
book_id=1,
chapter_id=5,
name='v2.3.0 リリースノート (2026-06-14)',
markdown=release_note,
)
print(f'ページ作成完了: {BOOKSTACK_URL}/link/{page["id"]}')
Wiki.js
2016年公開、Node.js製のOSSウィキです。GitHubスター25k+。Markdownエディタ・WYSIWYGエディタ・Diagramsnet(draw.io)統合を標準搭載し、Git・GitHub・GitLabをコンテンツバックエンドとして使える点が独自機能です。PostgreSQL・MySQL・SQLite・MariaDBに対応します。
# docker-compose.yml - Wiki.js with PostgreSQL
version: '3.8'
services:
wikijs:
image: ghcr.io/requarks/wiki:2
restart: unless-stopped
ports:
- "3000:3000"
environment:
DB_TYPE: postgres
DB_HOST: postgres
DB_PORT: "5432"
DB_USER: wikijs
DB_PASS: ${DB_PASSWORD}
DB_NAME: wikijs
depends_on:
- postgres
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: wikijs
POSTGRES_USER: wikijs
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
機能比較表
| 比較項目 | BookStack | Wiki.js | DokuWiki |
|---|---|---|---|
| WYSIWYG | ✅ | ✅ | △(プラグイン) |
| Markdown | ✅ | ✅ | ❌(独自構文) |
| Gitバックエンド | ❌ | ✅ | ❌ |
| LDAP/OIDC | ✅ | ✅ | ✅(プラグイン) |
| データストア | MySQL/MariaDB | PostgreSQL等 | ファイル |
| GitHub Stars | 16k+ | 25k+ | 0.7k+ |
社内ウィキはDevOpsカテゴリ/categories/devopsのGitLab・GitHub Actionsと連携してCI/CDパイプラインのドキュメントを自動更新します。コミュニケーションカテゴリ/categories/communicationのMattermost・Rocket.Chatと組み合わせてSlash Command経由でウィキを検索する統合も実現できます。
FAQ
Q. BookStackとConfluenceのどちらが移行しやすいですか?
A. BookStackへの移行が比較的容易です。Confluenceからのエクスポート(Space Export → XML/HTML)をBookStack ImporterでインポートできるツールがOSSで公開されています(confluence-to-bookstack-importer)。BookStackはページをHTMLまたはMarkdownで直接インポートできる(/api/pagesでcontent_htmlを送信)ため、自動化スクリプトも書きやすいです。注意点: Confluenceのマクロ(Drawio図・コードブロック等)は手動での再設定が必要です。画像は添付ファイルAPIで別途アップロードが必要。移行前にConfluenceのページ数・スペース数・添付ファイル数を確認して工数を見積もることを推奨します。
Q. Wiki.jsのGitバックエンドはどういう仕組みですか?
A. Wiki.jsの「Git Storage Module」を有効化すると、すべてのウィキページがMarkdownファイルとしてGitリポジトリにコミットされます。仕組み: ①編集→保存するとDBに書き込まれると同時にGitコミットが生成②GitHubまたはGitLabへ自動プッシュ(設定可能)③他の場所でMarkdownを編集→プッシュするとWiki.jsに自動同期。利点: GitHubのPull Requestでウィキのレビューができる・すべての変更履歴がgit logで追える・Webサイトとして静的にホスティングも可能。設定: Admin → Storage → Git → Repository URLとSSH/HTTPs認証を設定。
Q. DokuWikiの大きなファイル保存でパフォーマンスが落ちるのはなぜですか?
A. DokuWikiはファイルシステム(data/pages/ディレクトリ)に全ページをテキストファイルとして保存し、全文検索はファイルを順次スキャンするため、ページ数が増えると検索が遅くなります(1,000ページを超えると体感できる程度に)。対策: ①ElasticSearch Pluginで全文検索をElasticsearchに委任②定期的にブラウザキャッシュ・DokuWikiキャッシュをクリア③SSDストレージを使用。大規模(1,000ページ+)の場合はBookStack(MySQL)またはWiki.js(PostgreSQL)への移行を検討してください。
Q. BookStackでMermaidダイアグラムを使うには?
A. BookStack 23.01以降はMermaidダイアグラムが標準でサポートされています。ページのMarkdownエディタで以下のコードブロックを使用: ~~~mermaid ブロック内にMermaid記法(graph LR, sequenceDiagram, gantt等)を記述します。WYSIWYGエディタでは「Insert → Diagram」からDiagrams.net(draw.io)の組み込みエディタを使用できます(ベクター図・フローチャート・ER図)。Mermaidの例: GitのブランチフローをSequenceDiagramで記述してCIパイプラインのドキュメント化に使う活用が多いです。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| Confluence代替・WYSIWYG重視 | BookStack |
| Markdownエディタ・Git統合 | Wiki.js |
| 超軽量・DB不要・プラグイン豊富 | DokuWiki |