Crowi
運用

インストール

Docker / 手動での Crowi のインストール手順

このページでは、Crowi 2.0 (codename Reignite) を自分の環境で動かすための セットアップ手順を説明します。

注意: Crowi v2 は現在 alpha 開発中です。安定版リリースはまだないため、 特定のバージョンに固定し、十分に検証したうえで利用してください。評価・ 開発・移行検証の用途を主に想定しています。v1.x からの移行を検討して いる場合は v1 からのアップグレード もあわせて 参照してください。

動作環境

Crowi 2.0 は Turborepo + pnpm のモノレポ構成で、API・Web フロントエンド・ ドキュメントサイトの 3 つのアプリケーションを含みます。ローカルで動かすには 以下が必要です。

ソフトウェアバージョン用途
Node.js24.xAPI / Web の実行ランタイム
pnpm9.15.9 (corepack 経由)パッケージマネージャ (packageManagerpnpm@9.15.9)
MongoDB7 以降 (開発用イメージは mongo:8)Wiki データの永続化
Redis7 以降セッション・リアルタイム共同編集の pub/sub
Elasticsearch任意全文検索バックエンド (プラグイン駆動)
Docker / Docker Compose任意ローカルインフラの起動に利用

Node.js のバージョンはルート package.jsonengines24.x に固定 されています。nvm などのバージョンマネージャを使っている場合は、Node.js 24 系を有効にしてから作業してください。

Tip: MongoDB / Redis / Elasticsearch をホストに直接インストールする 必要はありません。後述の docker compose up -d で開発用インフラがまとめて 立ち上がります。

クイックスタート (Docker インフラ + ホストで開発サーバ)

最も手軽な構成は、ミドルウェアだけ Docker で起動し、API と Web は pnpm dev でホスト側で動かす 方法です。コードを編集しながら開発する 場合はこれを推奨します。

# 1. リポジトリを取得
git clone https://github.com/crowi/crowi.git
cd crowi

# 2. 依存関係をインストール
pnpm install

# 3. 開発用インフラ (MongoDB / Redis / Elasticsearch / PlantUML) を起動
docker compose up -d

# 4. 環境変数ファイルを用意
cp .env.example .env
# MONGO_URI / REDIS_URL / CROWI_ENCRYPTION_KEY などを必要に応じて編集

# 5. すべて起動 (API :4301 / Web :4302 / プラグインの watch ビルド)
pnpm dev

api は tsx watch で起動するため、初回起動はおよそ 1 秒で完了します。 起動後、ブラウザで http://localhost:4302 を開くとインストーラ画面が 表示されます。最初の管理者アカウントを作成すると Wiki が使えるように なります。

ポート構成

pnpm dev で立ち上がる各アプリのデフォルトポートは次のとおりです。

アプリポート内容
@crowi/api4301Hono API サーバ
@crowi/web4302Next.js 16 フロントエンド
@crowi/crowi-site4303crowi.wiki LP + ドキュメント (任意)

ドキュメントサイトは開発時には不要です。必要なときだけ pnpm dev:site で個別に起動してください。

開発用インフラの中身

docker compose up -d (プロファイル指定なし) で起動するのは、アプリ本体 ではなく 依存ミドルウェアのみ です。

サービスイメージホスト側ポート
mongodbmongo:827017
redisredis:76379
elasticsearchカスタムイメージ (9.4.0 + analysis-kuromoji)9200
plantumlplantuml/plantuml-server8080

Elasticsearch イメージは日本語形態素解析プラグイン analysis-kuromoji を あらかじめ同梱したカスタムビルドです。詳細は 検索のセットアップ を参照してください。

個別に起動する

API と Web を片方ずつ動かしたい場合は次のスクリプトが使えます。

pnpm dev:api    # API + プラグインのみ (Next.js は起動しない)
pnpm dev:web    # Next.js フロントエンドのみ
pnpm dev:site   # crowi.wiki の LP + ドキュメント (:4303)

全スタックを Docker で起動する

API と Web も含めてすべて Docker コンテナで動かしたい場合は、app プロファイルを指定します。

docker compose --profile app up -d --build

この場合の挙動:

  • api / web サービスのイメージが packages/{api,web}/Dockerfile から ビルドされます。
  • api イメージはリファレンスの ランナープロジェクト apps/crowi-runner からビルドされ、そのプロジェクトの crowi.config.json をイメージに焼き込みます。compose ファイルは さらに apps/crowi-runner/crowi.config.json/app/crowi.config.json に再マウントするため、再ビルドなしでドライバ選択を上書きできます。 プラグイン構成は運用者がこのファイルで制御します。
  • コンテナ内ではホスト名ベースの URI (mongodb://mongodb:27017/crowi など) が .envlocalhost 値を上書きします。
  • ホスト側ポートは pnpm dev と揃えてあり、API が 4301、Web が 4302 にマッピングされます (コンテナ内部はいずれも 3000)。

api サービスは .env ファイルを env_file として読み込むため、 CROWI_ENCRYPTION_KEYWS_TOKEN_SECRET などの機密値は .env に 記述しておきます。詳しくは 設定 を参照してください。

公式 Docker イメージのビルド

@crowi/apiプラグインを同梱しません — SDK とコアのみを出荷し、 ストレージ / 検索 / メール / レンダラのドライバは同梱しません。ドライバは 小さな ランナープロジェクト が所有します。@crowi/api と必要な @crowi/plugin-* パッケージを依存に持つ package.json、各ドライバを どのプラグインで提供するかを選択する crowi.config.json、そして .env からなります。api は起動時にランナープロジェクトの node_modules/ から プラグインを解決するため、プラグインの追加・削除に api の再ビルドは 不要です。ランナープロジェクト方式の詳細は 設定 を 参照してください。

モノレポは 2 つのリファレンスランナープロジェクトを同梱しており、公式 イメージは packages/api/Dockerfile を build arg でパラメータ化して、 次の 2 種類のいずれかとしてビルドします。

# full (デフォルト): first-party の全 12 ドライバを同梱。
# ドライバの切り替えは crowi.config.json の編集だけ — 再ビルド不要。
docker build -f packages/api/Dockerfile -t crowi:full .

# slim: implicit-default の 3 ドライバ
# (storage-local + search-mongo + mail-smtp) のみ — MongoDB だけで動作し、
# フルカスタマイズの土台になります。
docker build -f packages/api/Dockerfile -t crowi:slim \
  --build-arg RUNNER_APP=@crowi/runner-app-slim \
  --build-arg RUNNER_APP_DIR=apps/crowi-runner-slim .

どちらのイメージも WORKDIR=/app (デプロイされたランナープロジェクトの ルート = api の projectDir) を設定し、node node_modules/@crowi/api/dist/app.js をコンテナ内ポート 3000 で実行します。full イメージは app compose プロファイルがビルドするものです。slim イメージは Elasticsearch も S3 も なしで起動できます。

ビルド・テスト・型チェック

開発中によく使うスクリプトは次のとおりです。すべてリポジトリルートで 実行します。

pnpm build        # 全パッケージをビルド
pnpm test         # 全パッケージのテスト (API は Jest)
pnpm type-check   # API + Web + Site の型チェック
pnpm lint         # Lint (errors=0 が必須)

pnpm install 時に lefthook の Git フックがインストールされ、コミット時に Biome のフォーマット、プッシュ時に pnpm lint が自動で走ります。

次のステップ

On this page