OSSウィキ・ナレッジベース比較:Wiki.js vs BookStack vs Outline でConfluenceをセルフホスト
オープンソースラボ編集部 ・ 2026年6月13日
OSSウィキ・ナレッジベース比較:Wiki.js vs BookStack vs Outline でConfluenceをセルフホスト
ConfluenceはDataCenter版で年$27,000〜(500ユーザー)、Cloudは月$5.75/ユーザー〜と、チームが大きくなるほどコストが重くなります。Wiki.js(Node.js製)・BookStack(PHP/Laravel製)・Outline(React製)はConfluence代替のOSSナレッジベースツールです。セルフホストで無制限ページ・ユーザーを費用なしで管理できます。
OSSウィキを選ぶ理由
- コスト削減: Confluenceの月$5.75/ユーザー × 100名 = $575/月を、VPS代のみで代替
- データ主権: 社内ドキュメント・仕様書・議事録を自社サーバーに保管
- Markdown対応: エンジニアが使いやすいMarkdown記法でドキュメントを書ける
- Git連携: Wiki.jsはGitでウィキを管理(変更履歴がGitリポジトリに保存される)
- カスタマイズ: テーマ・認証(SAML/LDAP/OAuth)・ストレージバックエンドを自由に設定
主要ツールの概要
Wiki.js
Node.js製のモダンなウィキプラットフォームです。GitHubスター26k+。Markdownエディター・リッチテキストエディター・コードブロック・数式(KaTeX)・ダイアグラム(Mermaid)に対応。認証プロバイダー(Google・GitHub・SAML・LDAP・Azure AD等)が豊富で、エンタープライズでのSSO統合に強い。ページをGitリポジトリに同期する機能があり、ウィキの変更履歴をGitで管理できます。
# Wiki.js をdocker-composeでセルフホスト
version: "3"
services:
wiki:
image: ghcr.io/requarks/wiki:2
restart: always
depends_on:
- db
ports:
- "3000:3000"
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: your-password
DB_NAME: wiki
db:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_USER: wikijs
POSTGRES_PASSWORD: your-password
POSTGRES_DB: wiki
volumes:
- wiki_db:/var/lib/postgresql/data
volumes:
wiki_db:
// Wiki.js GraphQL APIでページを検索・取得(TypeScript)
// Wiki.jsはREST APIではなくGraphQL APIを提供
const WIKIJS_URL = 'https://wiki.yourcompany.com';
const WIKIJS_TOKEN = process.env.WIKIJS_API_TOKEN; // Administration > API Access から取得
async function searchWikiPages(query: string) {
const res = await fetch(`${WIKIJS_URL}/graphql`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${WIKIJS_TOKEN}`,
},
body: JSON.stringify({
query: `
query SearchPages($query: String!) {
pages {
search(query: $query, limit: 10) {
results {
id
title
path
description
updatedAt
}
}
}
}
`,
variables: { query },
}),
});
const { data } = await res.json();
return data.pages.search.results;
}
// 新しいページを作成
async function createWikiPage(
title: string,
content: string,
path: string,
tags: string[] = []
) {
const res = await fetch(`${WIKIJS_URL}/graphql`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${WIKIJS_TOKEN}`,
},
body: JSON.stringify({
query: `
mutation CreatePage($content: String!, $description: String!, $editor: String!, $isPrivate: Boolean!, $isPublished: Boolean!, $locale: String!, $path: String!, $tags: [String]!, $title: String!) {
pages {
create(content: $content, description: $description, editor: $editor, isPrivate: $isPrivate, isPublished: $isPublished, locale: $locale, path: $path, tags: $tags, title: $title) {
responseResult {
succeeded
errorCode
message
}
page {
id
path
title
}
}
}
}
`,
variables: {
content,
description: title,
editor: 'markdown',
isPrivate: false,
isPublished: true,
locale: 'ja',
path,
tags,
title,
},
}),
});
const { data } = await res.json();
return data.pages.create;
}
BookStack
PHP・Laravel製のシンプルなドキュメント管理プラットフォームです。GitHubスター15k+。ドキュメントを本(Shelf→Book→Chapter→Page)の階層構造で整理するコンセプトで、部署ごとにBookを作って管理する使い方に向いています。WYSIWYGエディター(TinyMCE)が内蔵されており、非エンジニアも使いやすい。マルチ認証(LDAP・SAML・GitHub・Google等)対応。
# BookStackをdocker-composeでセルフホスト
version: "3"
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
restart: always
depends_on:
- bookstack_db
ports:
- "6875:80"
environment:
PUID: 1000
PGID: 1000
APP_URL: https://wiki.yourcompany.com
DB_HOST: bookstack_db
DB_PORT: 3306
DB_USER: bookstack
DB_PASS: your-password
DB_DATABASE: bookstackapp
MAIL_DRIVER: smtp
MAIL_HOST: smtp.sendgrid.net
MAIL_PORT: 587
MAIL_ENCRYPTION: tls
MAIL_USERNAME: apikey
MAIL_PASSWORD: SG.your-key
MAIL_FROM: noreply@yourcompany.com
# SAML認証(Azure AD連携)
AUTH_METHOD: saml2
SAML2_NAME: "Company SSO"
SAML2_EMAIL_ATTRIBUTE: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
SAML2_DISPLAY_NAME_ATTRIBUTES: http://schemas.microsoft.com/identity/claims/displayname
SAML2_IDP_AUTHN_URL: https://login.microsoftonline.com/your-tenant-id/saml2
volumes:
- bookstack_data:/config
bookstack_db:
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: bookstackapp
MYSQL_USER: bookstack
MYSQL_PASSWORD: your-password
volumes:
- bookstack_db:/var/lib/mysql
volumes:
bookstack_data:
bookstack_db:
# BookStack REST APIでページを取得・作成
BOOKSTACK_URL="https://wiki.yourcompany.com"
TOKEN_ID="your-token-id"
TOKEN_SECRET="your-token-secret"
# ページ一覧を取得
curl -H "Authorization: Token ${TOKEN_ID}:${TOKEN_SECRET}" "${BOOKSTACK_URL}/api/pages?count=10&sort=updated_at&order=desc"
# ページを作成
curl -X POST -H "Authorization: Token ${TOKEN_ID}:${TOKEN_SECRET}" -H "Content-Type: application/json" -d '{"book_id": 1, "name": "新しいページ", "markdown": "# 見出し
内容"}' "${BOOKSTACK_URL}/api/pages"
Outline
Notion風のブロックエディターを持つOSSナレッジベースです。GitHubスター30k+。Outlineはチームコラボレーションを重視したデザインで、ドキュメントにコメント・メンション・リアルタイム共同編集ができます。Slack連携で/outlineコマンドからドキュメントを検索可能。Markdownのエクスポートとインポートに対応。Notion代替として最も使いやすいOSSです。
# OutlineをDockerでセルフホスト
version: "3"
services:
outline:
image: outlinewiki/outline:latest
restart: always
depends_on:
- postgres
- redis
ports:
- "3000:3000"
environment:
NODE_ENV: production
SECRET_KEY: your-64-char-secret-key-here
UTILS_SECRET: your-64-char-utils-secret-here
DATABASE_URL: postgres://outline:your-password@postgres:5432/outline
REDIS_URL: redis://redis:6379
URL: https://docs.yourcompany.com
PORT: 3000
# S3互換ストレージ(ファイルアップロード)
AWS_ACCESS_KEY_ID: your-minio-key
AWS_SECRET_ACCESS_KEY: your-minio-secret
AWS_REGION: us-east-1
AWS_S3_UPLOAD_BUCKET_NAME: outline
AWS_S3_UPLOAD_BUCKET_URL: https://minio.yourcompany.com
AWS_S3_FORCE_PATH_STYLE: "true"
# Slack連携
SLACK_CLIENT_ID: your-slack-client-id
SLACK_CLIENT_SECRET: your-slack-client-secret
# Google OAuth
GOOGLE_CLIENT_ID: your-google-client-id
GOOGLE_CLIENT_SECRET: your-google-client-secret
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_DB: outline
POSTGRES_USER: outline
POSTGRES_PASSWORD: your-password
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: always
minio:
image: minio/minio:latest
restart: always
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: your-minio-key
MINIO_ROOT_PASSWORD: your-minio-secret
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
volumes:
postgres_data:
minio_data:
機能比較表
| 比較項目 | Wiki.js | BookStack | Outline |
|---|---|---|---|
| ライセンス | AGPL-3.0 | MIT | BSL-1.1 |
| 最適用途 | Git連携・技術文書 | 部署別ドキュメント | Notion代替・コラボ |
| エディター | Markdown + WYSIWYG | WYSIWYG(TinyMCE) | ブロックエディター |
| リアルタイム共同編集 | ❌ | ❌ | ✅ |
| Git連携 | ✅ | ❌ | ❌ |
| 認証プロバイダー | 多数(Google・SAML等) | LDAP・SAML・OAuth | OAuth・SAML |
| Slack連携 | ✅ | ✅ | ✅ |
| GitHub Stars | 26k+ | 15k+ | 30k+ |
Confluence・Notion代替のナレッジ管理ツール比較はKnowledgeカテゴリ/categories/knowledgeを参照。チームコラボレーションツールの全体像はCommunicationカテゴリ/categories/communicationにまとめています。
FAQ
Q. ConfluenceからWiki.jsに移行するにはどうすればよいですか?
A. ConfluenceのエクスポートはHTML形式またはXML形式で行い、Wiki.jsへのインポートには変換が必要です。推奨手順: ①Confluenceで「スペースのエクスポート」→HTML形式②HTMLをMarkdownに変換(confluence-to-md等のツールを使用)③Wiki.jsの「Import」機能でMarkdownファイルを一括インポート。Confluenceの添付ファイルは手動でダウンロードして再アップロードが必要です。スペース構造(Confluenceの階層)はWiki.jsのページパス(/team/product/spec等)として再現します。移行の工数は1,000ページで2〜3営業日が目安です。マクロ(Confluenceの特殊機能)はMarkdownで書き直す必要があります。
Q. OutlineはNotionと比べてどこまで機能が近いですか?
A. 近い機能: ブロックエディター・ドキュメント階層(Collection→Document)・コメント・メンション・キーボードショートカット・Markdownエクスポート・検索。足りない機能: データベース(テーブル・カレンダー・カンバンビュー)・ギャラリービュー・NotionのページプロパティとFilter/Sort機能・AIアシスト(Notion AI)・公開ページのOG画像自動生成・外部埋め込みプレビュー(Twitter・YouTube等)。総合評価: テキスト中心のドキュメント管理はOutlineでほぼ代替可能ですが、Notionをデータベース(プロジェクト管理・タスク管理)として使っている場合はOutlineでは代替できません。Notionをデータベース的に使っている部分には別途NocoDB・Baserow・Apeagleなどのツールを組み合わせる必要があります。
Q. BookStackのLDAP連携設定で詰まりやすいポイントは何ですか?
A. よくある落とし穴: ①LDAP_BASE_DN の設定ミス: DC=yourcompany,DC=comという形式が正しい(ドメインyourcompany.comならDC=yourcompany,DC=com)②LDAP_USER_FILTER のフォーマット: ({username_attr}=\{user})のバックスラッシュエスケープが必要(Docker環境変数では\{user})③TLS証明書の検証エラー: 自己署名証明書を使っている社内LDAPではLDAP_TLS_INSECURE=trueを一時的に設定してデバッグし、後で正規の証明書に切り替える。デバッグ手順: BookStackコンテナに入ってldapsearch -H ldap://your-ldap:389 -D "CN=bind-user,DC=yourcompany,DC=com" -W -b "DC=yourcompany,DC=com" "(sAMAccountName=testuser)"でLDAP疎通を確認するのが最速です。
Q. Wiki.jsのGit同期機能を使う場合、GitHubとどう連携しますか?
A. Wiki.jsの「Administration > Git Storage」で設定します。設定手順: ①GitHubにプライベートリポジトリを作成(例: yourcompany/wiki-content)②GitHubで「Deploy Key」または「Personal Access Token」を生成③Wiki.jsのGit Storageに接続情報(リポジトリURL・認証情報・ブランチ名)を設定④「同期間隔」を設定(デフォルト5分、最小1分)。動作: Wiki.jsでページを保存するたびに、変更がMarkdownファイルとしてGitリポジトリにコミットされます。GitリポジトリはCIでビルドして静的サイトとして提供することも可能です(VuePress・Docusaurusへの移行時にも役立ちます)。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| Git連携・技術文書管理 | Wiki.js |
| 部署別・非エンジニア向け | BookStack |
| Notion代替・コラボ重視 | Outline |