上一篇 下一篇 分享链接 返回 返回顶部

用 Cloudflare Pages 搭一套企业知识库:从 Docusaurus 到权限控制全流程命令实战

发布人:慈云数据-客服中心 发布时间:4小时前 阅读量:3

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 可选,用于企业内部权限控制

这种方案的优点是:

  1. 不需要购买服务器
    Cloudflare Pages 可以直接托管静态网站,避免了服务器维护、系统升级、安全加固等问题。

  2. 访问速度快
    Cloudflare 全球 CDN 节点覆盖广泛,适合跨地区团队访问。

  3. 文档易维护
    Docusaurus 支持 Markdown,团队成员可以直接用 Markdown 写文档。

  4. 支持版本管理
    所有文档都保存在 GitHub 中,可以追踪修改历史,也方便回滚。

  5. 成本低
    对大多数企业内部知识库来说,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 的访问控制。

最后需要强调的是,知识库建设不是一次性项目,而是长期运营机制。工具只解决“放在哪里”和“怎么访问”的问题,真正决定知识库价值的,是团队是否持续维护、是否及时更新、是否形成统一规范。建议企业在搭建完成后,明确文档负责人、更新周期和审核流程,让知识库真正成为团队协作和组织成长的基础设施。

目录结构
全文