用 Cloudflare Pages 搭一套企业知识库:从 Docusaurus 到权限控制全流程命令实战
Cloudflare 企业知识库搭建|附完整命令
在企业数字化办公场景中,知识库已经不再只是“文档存放处”,而是团队协作、流程沉淀、经验复用和新人培训的重要基础设施。一个好的企业知识库,应该具备以下特点:
- 访问速度快;
- 维护成本低;
- 权限控制清晰;
- 支持全文检索;
- 支持 Markdown 编写;
- 可版本管理;
- 易于迁移和备份;
- 能够对接企业域名;
- 最好不依赖复杂服务器运维。
如果你希望搭建一个轻量、稳定、全球访问速度优秀的企业知识库,Cloudflare 是一个非常适合的选择。
本文将介绍一种基于 Cloudflare Pages + GitHub + Docusaurus 的企业知识库搭建方案,并附上完整命令。该方案适合中小型团队、创业公司、技术团队、运营团队、产品团队搭建内部知识库、技术文档中心、SOP 文档库、客户支持文档等。
一、方案架构说明
本文采用的整体架构如下:
员工 / 用户
|
| 访问企业域名
v
Cloudflare DNS
|
v
Cloudflare Pages
|
v
Docusaurus 静态知识库
|
v
GitHub 仓库管理文档
主要组件说明
| 组件 | 作用 |
|---|---|
| Cloudflare DNS | 管理企业域名解析 |
| Cloudflare Pages | 托管静态知识库网站 |
| GitHub | 存放知识库源码与 Markdown 文档 |
| Docusaurus | 生成知识库静态网站 |
| Markdown | 编写企业知识文档 |
| Cloudflare Access | 可选,用于企业内部权限控制 |
这种方案的优点是:
-
不需要购买服务器
Cloudflare Pages 可以直接托管静态网站,避免了服务器维护、系统升级、安全加固等问题。 -
访问速度快
Cloudflare 全球 CDN 节点覆盖广泛,适合跨地区团队访问。 -
文档易维护
Docusaurus 支持 Markdown,团队成员可以直接用 Markdown 写文档。 -
支持版本管理
所有文档都保存在 GitHub 中,可以追踪修改历史,也方便回滚。 -
成本低
对大多数企业内部知识库来说,Cloudflare Pages 免费额度已经足够使用。
二、准备工作
在开始之前,你需要准备以下内容:
1. 一个 Cloudflare 账号
访问:
https://dash.cloudflare.com/
注册并登录 Cloudflare。
2. 一个 GitHub 账号
访问:
https://github.com/
用于创建知识库项目仓库。
3. 一个企业域名
例如:
example.com
你可以使用如下子域名作为知识库地址:
kb.example.com
docs.example.com
wiki.example.com
本文以 kb.example.com 为例。
4. 本地开发环境
建议安装:
- Node.js 18 或以上版本;
- Git;
- npm 或 pnpm;
- Cloudflare Wrangler CLI。
检查 Node.js 版本:
node -v
检查 npm 版本:
npm -v
检查 Git 版本:
git --version
如果你的 Node.js 版本过低,建议先升级到 Node.js 18 或 20 LTS。
三、创建 Docusaurus 知识库项目
Docusaurus 是 Meta 开源的文档网站生成工具,非常适合搭建企业知识库、技术文档、产品手册和帮助中心。
首先,在本地创建项目目录:
mkdir cloudflare-enterprise-kb
cd cloudflare-enterprise-kb
使用 Docusaurus 官方脚手架创建项目:
npx create-docusaurus@latest kb classic
进入项目目录:
cd kb
安装依赖:
npm install
启动本地开发服务:
npm run start
启动成功后,浏览器访问:
http://localhost:3000
你应该可以看到默认的 Docusaurus 文档站点。
四、调整知识库基础配置
Docusaurus 的核心配置文件是:
docusaurus.config.js
打开该文件:
vim docusaurus.config.js
如果你不习惯使用 vim,也可以使用 VS Code:
code docusaurus.config.js
将站点标题、描述、域名等信息调整为企业知识库信息。
示例配置如下:
// docusaurus.config.js
const config = {
title: '企业知识库',
tagline: '沉淀组织经验,提升团队效率',
favicon: 'img/favicon.ico',
url: 'https://kb.example.com',
baseUrl: '/',
organizationName: 'your-company',
projectName: 'enterprise-kb',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
i18n: {
defaultLocale: 'zh-CN',
locales: ['zh-CN'],
},
presets: [
[
'classic',
{
docs: {
sidebarPath: './sidebars.js',
routeBasePath: '/',
editUrl: 'https://github.com/your-company/enterprise-kb/tree/main/',
},
blog: false,
theme: {
customCss: './src/css/custom.css',
},
},
],
],
themeConfig: {
navbar: {
title: '企业知识库',
logo: {
alt: '企业知识库 Logo',
src: 'img/logo.svg',
},
items: [
{
type: 'docSidebar',
sidebarId: 'tutorialSidebar',
position: 'left',
label: '知识库',
},
{
href: 'https://github.com/your-company/enterprise-kb',
label: 'GitHub',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: '知识分类',
items: [
{
label: '公司制度',
to: '/company/rules',
},
{
label: '产品文档',
to: '/product/overview',
},
{
label: '技术文档',
to: '/tech/overview',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Your Company.`,
},
},
};
export default config;
注意将以下内容替换为你自己的信息:
kb.example.com
your-company
enterprise-kb
五、规划企业知识库目录结构
企业知识库最重要的不是技术,而是内容结构。建议一开始就设计清晰的分类,否则后期文档会越来越乱。
推荐目录结构如下:
docs/
├── intro.md
├── company/
│ ├── rules.md
│ ├── onboarding.md
│ └── reimbursement.md
├── product/
│ ├── overview.md
│ ├── roadmap.md
│ └── faq.md
├── tech/
│ ├── overview.md
│ ├── deploy.md
│ └── security.md
├── operation/
│ ├── sop.md
│ └── campaign.md
└── support/
├── customer-service.md
└── common-issues.md
创建目录:
mkdir -p docs/company docs/product docs/tech docs/operation docs/support
创建示例文档:
cat > docs/intro.md <<'EOF'
---
sidebar_position: 1
---
# 企业知识库首页
欢迎访问企业知识库。
这里用于沉淀公司的制度流程、产品资料、技术文档、运营 SOP、客户支持经验等内容。
## 使用建议
- 优先搜索已有文档;
- 修改文档前确认责任人;
- 重要制度变更需要记录时间和修改人;
- 文档内容应保持准确、简洁、可执行。
EOF
创建公司制度文档:
cat > docs/company/rules.md <<'EOF'
---
sidebar_position: 1
---
# 公司制度
本文档用于记录公司基本制度,包括考勤、请假、报销、信息安全等内容。
## 考勤制度
请根据公司实际规则填写。
## 请假流程
1. 在系统中提交请假申请;
2. 直属主管审批;
3. HR 备案。
## 信息安全要求
- 不得外传公司内部资料;
- 不得共享个人账号;
- 离职前需要交接权限和资料。
EOF
创建新人入职文档:
cat > docs/company/onboarding.md <<'EOF'
---
sidebar_position: 2
---
# 新人入职指南
本文档用于帮助新同事快速了解公司工具、流程和协作方式。
## 入职第一天
- 开通企业邮箱;
- 加入企业通讯工具;
- 配置常用系统权限;
- 阅读公司制度文档。
## 常用系统
| 系统 | 用途 | 地址 |
|---|---|---|
| 企业邮箱 | 邮件沟通 | 待补充 |
| 项目管理 | 任务协作 | 待补充 |
| 知识库 | 文档沉淀 | 待补充 |
EOF
创建产品文档:
cat > docs/product/overview.md <<'EOF'
---
sidebar_position: 1
---
# 产品概览
本文档用于介绍公司产品定位、核心功能、目标用户和使用场景。
## 产品定位
请填写产品定位。
## 核心功能
- 功能一;
- 功能二;
- 功能三。
## 目标用户
请填写目标用户画像。
EOF
创建技术文档:
cat > docs/tech/overview.md <<'EOF'
---
sidebar_position: 1
---
# 技术文档概览
这里用于记录系统架构、部署流程、故障处理、安全规范等技术内容。
## 技术文档要求
- 说明背景;
- 给出操作步骤;
- 附带命令示例;
- 记录风险点;
- 标明维护人。
EOF
创建部署文档:
cat > docs/tech/deploy.md <<'EOF'
---
sidebar_position: 2
---
# 部署流程
本文档记录系统部署流程。
## 部署前检查
```bash
git status
npm test
npm run build
构建
npm run build
发布
根据具体项目填写发布命令。 EOF
这里有一个注意点:上面的 `cat` 命令中包含 Markdown 代码块,如果直接复制到某些 Shell 里可能因为嵌套反引号导致显示异常。实际使用时,也可以直接用编辑器创建文件。
---
## 六、配置侧边栏
Docusaurus 的侧边栏配置文件是:
```text
sidebars.js
你可以手动维护侧边栏,也可以使用自动生成方式。
编辑文件:
vim sidebars.js
推荐配置如下:
// sidebars.js
const sidebars = {
tutorialSidebar: [
'intro',
{
type: 'category',
label: '公司制度',
items: [
'company/rules',
'company/onboarding',
'company/reimbursement',
],
},
{
type: 'category',
label: '产品文档',
items: [
'product/overview',
'product/roadmap',
'product/faq',
],
},
{
type: 'category',
label: '技术文档',
items: [
'tech/overview',
'tech/deploy',
'tech/security',
],
},
{
type: 'category',
label: '运营 SOP',
items: [
'operation/sop',
'operation/campaign',
],
},
{
type: 'category',
label: '客户支持',
items: [
'support/customer-service',
'support/common-issues',
],
},
],
};
export default sidebars;
如果某些文档暂时还没有创建,构建时可能报错。你可以先创建空文件:
touch docs/company/reimbursement.md
touch docs/product/roadmap.md
touch docs/product/faq.md
touch docs/tech/security.md
touch docs/operation/sop.md
touch docs/operation/campaign.md
touch docs/support/customer-service.md
touch docs/support/common-issues.md
然后为这些空文件写入基本内容:
for file in \
docs/company/reimbursement.md \
docs/product/roadmap.md \
docs/product/faq.md \
docs/tech/security.md \
docs/operation/sop.md \
docs/operation/campaign.md \
docs/support/customer-service.md \
docs/support/common-issues.md
do
cat > "$file" <
本地检查构建是否正常:
npm run build
如果构建成功,会生成:
build/
目录。
七、添加全文搜索功能
企业知识库没有搜索功能,使用体验会大幅下降。Docusaurus 支持多种搜索方案,例如 Algolia DocSearch、本地搜索插件等。
如果是企业内部知识库,推荐先使用本地搜索插件,部署简单,不依赖外部爬虫。
安装本地搜索插件:
npm install @easyops-cn/docusaurus-search-local
修改 docusaurus.config.js,增加插件配置:
plugins: [
[
require.resolve('@easyops-cn/docusaurus-search-local'),
{
hashed: true,
language: ['en', 'zh'],
indexDocs: true,
indexBlog: false,
indexPages: true,
docsRouteBasePath: '/',
},
],
],
完整位置示例:
const config = {
title: '企业知识库',
tagline: '沉淀组织经验,提升团队效率',
// 其他配置省略
plugins: [
[
require.resolve('@easyops-cn/docusaurus-search-local'),
{
hashed: true,
language: ['en', 'zh'],
indexDocs: true,
indexBlog: false,
indexPages: true,
docsRouteBasePath: '/',
},
],
],
};
重新构建:
npm run build
本地预览构建产物:
npm run serve
访问:
http://localhost:3000
测试搜索功能是否正常。
八、提交到 GitHub 仓库
在 GitHub 创建一个新仓库,例如:
enterprise-kb
然后在本地初始化 Git:
git init
git add .
git commit -m "init enterprise knowledge base"
设置主分支名称:
git branch -M main
添加远程仓库地址:
git remote add origin https://github.com/your-company/enterprise-kb.git
推送到 GitHub:
git push -u origin main
如果你使用 SSH 地址,则命令类似:
git remote add origin git@github.com:your-company/enterprise-kb.git
git push -u origin main
九、部署到 Cloudflare Pages
接下来,将 GitHub 仓库连接到 Cloudflare Pages。
方式一:通过 Cloudflare 控制台部署
登录 Cloudflare 后,进入:
Workers & Pages
点击:
Create application
选择:
Pages
然后选择:
Connect to Git
绑定 GitHub 账号,选择刚才创建的仓库:
enterprise-kb
构建配置填写如下:
| 配置项 | 值 |
|---|---|
| Project name | enterprise-kb |
| Production branch | main |
| Framework preset | Docusaurus |
| Build command | npm run build |
| Build output directory | build |
| Root directory | / |
环境变量可以先不填。
点击部署后,Cloudflare Pages 会自动拉取代码、安装依赖并构建。
部署成功后,你会得到一个默认域名,例如:
enterprise-kb.pages.dev
方式二:使用 Wrangler CLI 部署
如果你更喜欢命令行,也可以通过 Wrangler 部署。
安装 Wrangler:
npm install -g wrangler
登录 Cloudflare:
wrangler login
构建项目:
npm run build
创建 Pages 项目:
wrangler pages project create enterprise-kb --production-branch main
部署到 Cloudflare Pages:
wrangler pages deploy build --project-name enterprise-kb
部署成功后,终端会输出访问地址。
如果之后需要再次部署,只需要:
npm run build
wrangler pages deploy build --project-name enterprise-kb
十、绑定企业自定义域名
假设你要使用:
kb.example.com
作为知识库访问地址。
在 Cloudflare Pages 项目中进入:
Custom domains
点击:
Set up a custom domain
输入:
kb.example.com
如果你的主域名 example.com 已经托管在 Cloudflare DNS 中,Cloudflare 会自动添加 CNAME 记录。
你也可以手动添加 DNS 记录:
Type: CNAME
Name: kb
Target: enterprise-kb.pages.dev
Proxy status: Proxied
等待 DNS 生效后访问:
https://kb.example.com
使用命令检查 DNS
nslookup kb.example.com
或者:
dig kb.example.com
检查 HTTPS:
curl -I https://kb.example.com
如果返回类似以下内容,说明访问正常:
HTTP/2 200
server: cloudflare
content-type: text/html
十一、开启企业内部访问控制
如果知识库包含内部制度、技术文档、客户资料等敏感内容,不建议完全公开访问。可以使用 Cloudflare Zero Trust Access 做权限控制。
配置步骤
进入 Cloudflare 控制台:
Zero Trust
如果是第一次使用,需要创建团队名称,例如:
your-company
然后进入:
Access > Applications
点击:
Add an application
选择:
Self-hosted
配置应用:
| 配置项 | 示例 |
|---|---|
| Application name | 企业知识库 |
| Session duration | 24 hours |
| Application domain | kb.example.com |
然后配置访问策略,例如只允许公司邮箱访问:
Include:
Emails ending in: @example.com
或者指定具体用户:
Include:
Emails:
alice@example.com
bob@example.com
如果企业使用 Google Workspace、Microsoft Entra ID、Okta,也可以接入身份提供商,实现 SSO 登录。
配置完成后,访问:
https://kb.example.com
用户会先进入 Cloudflare Access 登录页,通过身份验证后才能访问知识库。
十二、设置缓存与安全规则
Cloudflare Pages 默认已经具备较好的缓存和 HTTPS 支持,但企业知识库可以进一步优化。
1. 强制 HTTPS
进入 Cloudflare SSL/TLS 配置,建议设置:
SSL/TLS encryption mode: Full
Always Use HTTPS: On
Automatic HTTPS Rewrites: On
2. 开启 Brotli 压缩
进入:
Speed > Optimization
开启:
Brotli: On
3. 添加基础安全响应头
可以在 Docusaurus 项目中创建 _headers 文件。
Cloudflare Pages 支持在构建产物中使用 _headers。我们可以将文件放在 static/_headers:
cat > static/_headers <<'EOF'
/*
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
EOF
重新构建并部署:
npm run build
wrangler pages deploy build --project-name enterprise-kb
检查响应头:
curl -I https://kb.example.com
十三、文档编写规范建议
企业知识库能否长期发挥价值,关键不在于工具,而在于规范。建议制定一套简单可执行的文档规范。
1. 每篇文档必须包含这些信息
建议文档顶部加入:
# 文档标题
## 适用范围
说明本文档适用于哪些团队、系统或场景。
## 背景说明
说明为什么需要这篇文档。
## 操作步骤
给出清晰步骤。
## 注意事项
列出风险点和常见错误。
## 维护信息
- 维护人:
- 最后更新时间:
- 相关系统:
2. 命名规范
推荐使用英文小写加短横线:
customer-service.md
deploy-guide.md
security-policy.md
不推荐:
最终版.md
新建文档2.md
部署流程最新版.md
3. 内容规范
建议遵循以下原则:
- 标题清晰;
- 步骤可执行;
- 命令可复制;
- 结论前置;
- 避免口语化;
- 重要流程附截图;
- 过期内容及时删除或标记。
十四、日常更新流程
团队成员更新知识库的推荐流程如下:
1. 拉取最新代码
git pull origin main
2. 新建或修改文档
例如新增一篇客户支持文档:
mkdir -p docs/support
cat > docs/support/refund-policy.md <<'EOF'
---
sidebar_position: 3
---
# 退款政策说明
本文档用于说明客户退款政策、处理流程和注意事项。
## 适用范围
适用于客户支持团队处理退款申请。
## 处理流程
1. 核实客户订单信息;
2. 判断是否符合退款条件;
3. 提交退款审批;
4. 完成退款后通知客户。
## 注意事项
- 不得绕过审批流程;
- 涉及大额退款需主管确认;
- 保留沟通记录。
EOF
3. 更新侧边栏
编辑:
vim sidebars.js
添加:
'support/refund-policy',
4. 本地测试
npm run start
或者构建测试:
npm run build
5. 提交修改
git add .
git commit -m "add refund policy document"
git push origin main
如果 Cloudflare Pages 已连接 GitHub,则推送到 main 分支后会自动部署。
十五、备份与迁移
由于所有知识库内容都保存在 GitHub 仓库中,因此备份非常简单。
1. 克隆备份
git clone https://github.com/your-company/enterprise-kb.git
2. 打包备份
tar -czvf enterprise-kb-backup.tar.gz enterprise-kb
3. 查看远程仓库
git remote -v
4. 迁移到新仓库
git remote set-url origin https://github.com/your-company/new-enterprise-kb.git
git push -u origin main
这种方式比传统数据库型知识库更易于迁移,也更适合做版本审计。
十六、常见问题排查
1. Cloudflare Pages 构建失败
先在本地执行:
npm run build
如果本地也失败,通常是配置文件、侧边栏路径或 Markdown 语法错误。
常见原因包括:
sidebars.js引用了不存在的文档;- Markdown front matter 格式错误;
- Node.js 版本不一致;
- 插件配置错误。
可以检查 Node.js 版本:
node -v
在 Cloudflare Pages 中建议设置 Node.js 版本环境变量:
NODE_VERSION=20
2. 页面 404
检查 docusaurus.config.js:
url: 'https://kb.example.com',
baseUrl: '/',
如果你部署在子路径下,例如:
https://example.com/kb/
则需要设置:
baseUrl: '/kb/',
但使用独立子域名时,保持:
baseUrl: '/',
3. 搜索不可用
检查是否安装插件:
npm list @easyops-cn/docusaurus-search-local
重新构建:
npm run build
注意搜索索引一般在构建阶段生成,开发模式下表现可能和生产构建不同。
4. 自定义域名无法访问
检查 DNS:
dig kb.example.com
检查 HTTPS:
curl -I https://kb.example.com
确认 Cloudflare Pages 的 Custom Domain 状态是否为 Active。
十七、完整命令汇总
下面给出从零开始搭建的核心命令汇总,便于复制执行。
# 创建项目目录
mkdir cloudflare-enterprise-kb
cd cloudflare-enterprise-kb
# 创建 Docusaurus 项目
npx create-docusaurus@latest kb classic
# 进入项目
cd kb
# 安装依赖
npm install
# 安装本地搜索插件
npm install @easyops-cn/docusaurus-search-local
# 创建知识库目录
mkdir -p docs/company docs/product docs/tech docs/operation docs/support
# 启动本地开发
npm run start
# 构建
npm run build
# Git 初始化
git init
git add .
git commit -m "init enterprise knowledge base"
git branch -M main
# 添加远程仓库
git remote add origin https://github.com/your-company/enterprise-kb.git
# 推送代码
git push -u origin main
# 安装 Wrangler
npm install -g wrangler
# 登录 Cloudflare
wrangler login
# 创建 Cloudflare Pages 项目
wrangler pages project create enterprise-kb --production-branch main
# 部署
npm run build
wrangler pages deploy build --project-name enterprise-kb
# 后续更新部署
git add .
git commit -m "update docs"
git push origin main
# 如果使用命令行手动部署
npm run build
wrangler pages deploy build --project-name enterprise-kb
十八、总结
通过 Cloudflare Pages + Docusaurus + GitHub,我们可以快速搭建一个稳定、低成本、易维护的企业知识库。它不需要服务器,不需要数据库,也不需要复杂的后端系统,非常适合用于公司制度、产品文档、技术文档、运营 SOP、客户支持知识沉淀等场景。
如果知识库内容公开,可以直接使用 Cloudflare Pages 托管;如果内容仅限企业内部访问,可以结合 Cloudflare Zero Trust Access,实现基于邮箱、身份提供商或 SSO 的访问控制。
最后需要强调的是,知识库建设不是一次性项目,而是长期运营机制。工具只解决“放在哪里”和“怎么访问”的问题,真正决定知识库价值的,是团队是否持续维护、是否及时更新、是否形成统一规范。建议企业在搭建完成后,明确文档负责人、更新周期和审核流程,让知识库真正成为团队协作和组织成长的基础设施。