全文搜索需额外部署 ElasticSearch 并安装 kuromoji 与 ICU 分析插件;生产部署推荐按官方 docker-compose 文档配置,README 未给出直接启动命令;开发环境需严格匹配 Node.js v24.x 与 pnpm 11.x 版本
growi
growilabsMIT活跃维护基于 Markdown 的团队协作 Wiki 系统,支持多人协同编辑文档、知识库管理与内容沉淀,适合团队搭建内部知识平台。
:anchor: GROWI - Team collaboration software using markdown
docker pull growilabs/growiREADME 未说明硬件要求;开发依赖 Node.js v24.x、pnpm 11.x、MongoDB v6.x 或 v8.x,可选 Redis 3.x 与 ElasticSearch 7/8/9.x
基于 Markdown 的团队协作 Wiki,支持多人同时编辑与层级页面
基于 Markdown 的团队协作 Wiki 系统,支持多人协同编辑文档、知识库管理与内容沉淀,适合团队搭建内部知识平台。
核心能力
- 用 Markdown 创建层级化页面
- 支持多人同时协作编辑
- 集成 LDAP/AD、OAuth 与 SAML 单点登录
- 对接 Slack/Mattermost 与 IFTTT
- 可通过 npm 与 GitHub 安装插件扩展
容易踩的坑
- v8.0.10最新正式版2026-11-09 · 2026-11-09 08:53 UTC
🐛 Bug Fixes
- fix(page-bulk-export): Embed attachment images in PDFs for every storage response mode (#12209) @yuki-takei
- fix(i18n): correct spelling and grammar mistakes in English translations (#193092) (#12199) @arvid-e
🧰 Maintenance
- support: audit log bulk export job model (#12198) @mizozobu
- chore(opentelemetry): mark CI and devcontainer runs as service type dev with telemetry off (#12204) @yuki-takei
- chore(app): Add contributor (#12218) @miya
- chore(app): Add contributor (#12205) @miya
- v8.0.92026-11-04 · 2026-11-04 09:06 UTC
查看更新说明
💎 Features
- feat(ai-chat): make the AI chat sidebar resizable (#12082) @miya
- The AI chat sidebar on the right can now be resized by dragging its edge, just like the left sidebar. The chosen width (360–960px) is saved per user and kept across reloads and thread switches; on screens narrower than 576px it stays full-width.
- 右側の AI チャットサイドバーの幅を、左サイドバーと同じようにドラッグで変更できるようになりました。変更した幅(360〜960px)はユーザーごとに保存され、リロードやスレッド切替後も維持されます。576px 未満の画面では従来どおり全幅のままです。
- feat(ai-usage): record AI usage for chat, suggest-path and title generation and expose it through a public API (#12089) @yuki-takei
- GROWI now records AI usage (token counts and estimated cost per model call) for chat, path suggestion and thread title generation, kept for 90 days. A new public endpoint
GET /_api/v3/ai-usage?since=...returns totals per period, as a basis for consumption gauges and fair-use limits. New env varsAI_USAGE_BASE_MODELandAI_DISABLED_REASONwere added. - チャット・パス提案・スレッドのタイトル生成で AI の使用量(モデル呼び出しごとのトークン数と推定費用)を記録するようになりました(保持 90 日)。期間ごとの合計を返す公開 API
GET /_api/v3/ai-usage?since=...を追加し、消費量ゲージや利用上限の土台にします。環境変数AI_USAGE_BASE_MODELとAI_DISABLED_REASONが追加されています。
- GROWI now records AI usage (token counts and estimated cost per model call) for chat, path suggestion and thread title generation, kept for 90 days. A new public endpoint
🚀 Improvement
- imprv(page): Judge page deletion authority in one place for every user request (#12182) @yuki-takei
- Page deletion permission is now judged in a single place in the page service for all entry points (delete, empty trash, legacy
pages.remove), closing the gap where each route re-implemented the rules. As a side effect,DELETE /pages/empty-trashnow requires login and returns 403 (instead of 500) for anonymous callers. - ページ削除の権限判定を、すべての入口(削除・ゴミ箱を空にする・旧
pages.remove)で共通の 1 か所にまとめました。入口ごとに規則を書いていたことによる抜け道を防ぎます。あわせてDELETE /pages/empty-trashはログイン必須になり、未ログインで呼んだときの応答が 500 から 403 に変わります。
- Page deletion permission is now judged in a single place in the page service for all entry points (delete, empty trash, legacy
🐛 Bug Fixes
- fix(page): Respect page deletion permission settings when deleting pages and emptying the trash (#12163) @yuki-takei
- ページ削除やゴミ箱を空にする際に、ページ削除の権限設定を正しく反映するよう修正。
- fix(share-links): validate expiredAt against the current time per request (#12118) @yuki-takei
- 共有リンクの有効期限(expiredAt)をリクエストごとに現在時刻と照合するよう修正。
- fix(share-links): read the real admin field in the DELETE /:id bypass (#12122) @yuki-takei
- 共有リンクの DELETE /:id のバイパス判定で、実際の管理者フィールドを参照するよう修正。
- fix(rate-limiter): match auth route paths consistently (#12127) @yuki-takei
- レートリミッターが認証ルートのパスを一貫して照合するよう修正。
- fix: Page path checks hang on paths with many slashes (#12159) @yuki-takei
- スラッシュを多く含むパスでページパスのチェックが固まる問題を修正。
- fix(opentelemetry): anonymize http.url as well as http.target (#12151) @yuki-takei
- OpenTelemetry で http.target に加えて http.url も匿名化するよう修正。
- fix(opentelemetry): anonymize non-ASCII page paths (#12123) @jay23606
- OpenTelemetry で非 ASCII のページパスも匿名化するよう修正。
- fix(opentelemetry): rule-driven HTTP anonymization with a coverage table kept in sync by tests (#12158) @yuki-takei
- OpenTelemetry の HTTP 匿名化をルール駆動にし、テストで同期される対象一覧を持つよう修正。
- fix(page): keep a page on the tree when a rename fails midway (#11917) @arvid-e
- リネームが途中で失敗したときにページをツリー上に残すよう修正。
- fix(page): close the remaining gaps in the failed-rename rollback (#12150) @yuki-takei
- リネーム失敗時のロールバックに残っていた抜けを修正。
- fix(core): Treat page paths literally when omitting pages under other selected pages (#12176) @yuki-takei
- 選択した他ページ配下のページを除外する際に、ページパスを文字どおりに扱うよう修正。
- fix: Bookmark listings return 500 for users whose folders contain null bookmark ids (#12167) @yuki-takei
- フォルダに null のブックマーク ID を含むユーザーでブックマーク一覧が 500 になる問題を修正。
- fix(share): Show the shared page when navigating to a share link from another page (#12142) @yuki-takei
- 別ページから共有リンクへ遷移したときに共有ページが表示されるよう修正。
- fix(math): Prevent live preview from breaking due to incomplete math blocks (#12075) @yotatameguchi-boop
- 未完成の数式ブロックでライブプレビューが壊れないよう修正。
- fix(presentation): disable Marp CSS minification to avoid a crash on … (#12157) @y-oda-nipponrick
- クラッシュを避けるため Marp の CSS 圧縮を無効化するよう修正。
- fix(editor): Rename the PlantUML slash com
- feat(ai-chat): make the AI chat sidebar resizable (#12082) @miya
- @growi/[email protected]2026-10-30 · 2026-10-30 12:11 UTC
查看更新说明
Patch Changes
- Updated dependencies [
2f37b50]:- @growi/[email protected]
- 依存パッケージ @growi/core を 3.1.3 に更新。
- Updated dependencies [
- @growi/[email protected]2026-10-30 · 2026-10-30 12:11 UTC
查看更新说明
Patch Changes
- #12176
2f37b50Thanks @yuki-takei! - MakeomitDuplicateAreaPathFromPathsandomitDuplicateAreaPageFromPagestreat each path literally. They used to build a regular expression from the raw path, so a path containing a character such as+or(threw aSyntaxError, and a.in a path matched any character, which could drop an unrelated path.omitDuplicateAreaPathFromPathsとomitDuplicateAreaPageFromPagesがパスを文字どおりに扱うよう修正。これまではパスからそのまま正規表現を組み立てていたため、+や(を含むパスでSyntaxErrorになり、.が任意の文字に一致して無関係なパスが除外されることがあった。
- #12176
- @growi/[email protected]2026-10-28 · 2026-10-28 08:53 UTC
查看更新说明
Patch Changes
- Updated dependencies [
c0e2f63]:- @growi/[email protected]
- 依存パッケージ @growi/core を 3.1.2 に更新。
- Updated dependencies [
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
GROWI
Demonstration
Table Of Contents
Features
- Features
- Create hierarchical pages with markdown -> Try GROWI on the demo site
- Simultaneously edit with multiple people
- Support Authentication with LDAP / Active Directory, OAuth
- SSO(Single Sign On) with SAML
- Slack/Mattermost, IFTTT Integration
- GROWI Docs: Features
- Pluggable
- Docker Ready
- Docker Compose Ready
Quick Start for Production
docker-compose
Helm (Experimental)
On-premise
Migration Guide from Crowi (en/ja) is here.
Configuration
See GROWI Docs: Admin Guide (en/ja).
Environment Variables
See GROWI Docs: Environment Variables (en/ja).
See environment-only storage settings for configuring AWS S3, GCS, and Azure from environment variables.
Development
Dependencies
- Node.js v24.x
- pnpm 11.x (see the
packageManagerfield in package.json for the exact version) - Turborepo
- MongoDB v6.x or v8.x
Optional Dependencies
- Redis 3.x
- ElasticSearch 7.x or 8.x or 9.x (needed when using Full-text search)
- CAUTION: Following plugins are required
Command details
| command | desc |
|---|---|
npm run app:build | Build GROWI app client |
npm run app:server | Launch GROWI app server |
npm run start | Invoke npm run app:build and npm run app:server |
For more info, see GROWI Docs: List of npm Scripts.
Documentation
Contribution
Found a Bug?
If you found a bug in the source code, you can help us by submitting an issue to our GitHub Repository. Even better, you can submit a Pull Request with a fix.
Missing a Feature?
You can request a new feature by submitting an issue to our GitHub Repository. If you would like to implement a new feature, firstly please submit the issue with your proposal to make sure we can confirm it. Please clarify what kind of change you would like to propose.
- For a Major Feature, firstly open an issue and outline your proposal so it can be discussed.
It also allows us to coordinate better, prevent duplication of work and help you to create the change so it can be successfully accepted into the project. - Small Features can be created and directly submitted as a Pull Request.
Translations
Want to help translate GROWI into your language? No GitHub account is required. See Contributing to GROWI translations for how to join and submit translations.
Language on GitHub
You can write issues and PRs in English or Japanese.
Discussion
If you have questions or suggestions, you can join our Slack team and talk about anything, anytime.
License
- The MIT License (MIT)
- See LICENSE and THIRD-PARTY-NOTICES.md.