Crowi

開発環境をつくる

モノレポを clone して api / web / プラグインをローカルで動かす

このページは Crowi 自体を開発する ための手順です。Crowi をチームで使うために立てるなら 公式イメージで動かす を、まず触ってみるだけなら クイックスタート を参照してください。

動作環境

ソフトウェアバージョン用途
Node.js24.xapi / web の実行ランタイム (.nvmrcengines で固定)
pnpmルート package.jsonpackageManager に従うパッケージマネージャ (モノレポは pnpm workspaces)。corepack enable を一度実行しておけば、使う版はリポジトリ側が決めます
Docker / Docker Compose最新MongoDB / Redis / Elasticsearch / Mailpit をコンテナで起動

依存ミドルウェアをホストへ直接インストールする必要はありません。docker compose up -d でまとめて立ち上がります。nvm を使っているなら、リポジトリのルートで nvm use を実行すると .nvmrc の Node.js に切り替わります。

セットアップ

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

# 2. 依存関係をインストール (lefthook の Git フックもここで入ります)
pnpm install

# 3. 開発用ミドルウェアを起動
docker compose up -d

# 4. 環境変数ファイルを用意
cp .env.example .env

# 5. api + web + プラグインを起動
pnpm dev

ブラウザで http://localhost:4304 を開くと Crowi の画面が出ます。初回はインストーラ画面なので、管理者ユーザーを作成してください。

:4304 は api と web を前段でまとめる同一オリジンの reverse proxy です (Caddy があれば Caddy、無ければ依存ゼロの node フォールバック)。dev の正式な入口はここだけ で、素の web ポート :4302 を直接開くとリアルタイム共同編集・プレゼンス・通知の WebSocket がつながりません。

.env.example の初期値のままでも起動しますが、CROWI_ENCRYPTION_KEY の設定を推奨します。未設定だと機密設定が平文で保存され、起動時に警告が出ます。

pnpm --filter @crowi/api crypto:gen-key

で 32 バイトの AES-256 鍵を生成し、出力値を .env に貼り付けてください (機密設定の暗号化)。

ポート

割り当ての一覧は ポートと URL にあります。作業ツリーごとに 4 ポートの区画が割り当たるため、複数の作業ツリーを同時に動かしても衝突しません。

開発用ミドルウェア

docker compose up -d (プロファイル指定なし) が起動するのは依存ミドルウェアだけです。アプリ本体はホスト側の pnpm dev で動かします。公開されるホスト側ポートは ポートと URL にあります。

Elasticsearch イメージは日本語形態素解析プラグイン analysis-kuromoji を同梱したカスタムビルドです (検索バックエンドのセットアップ)。Mailpit は送信されたメールをブラウザで確認するための受信箱です。

片側だけ起動する

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

全スタックを Docker で動かす

api と web もコンテナで動かしたい場合は app プロファイルを使います。

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

このとき api / web のイメージはモノレポからビルドされ、前段に Caddy が立ちます。入口は http://localhost:4302 です。api イメージはリファレンスの runner プロジェクト apps/crowi-runner からビルドされ、その crowi.config.json を焼き込みます。compose は同じファイルを再マウントするため、ドライバ選択は再ビルドなしで上書きできます。

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

リポジトリルートで実行します。

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