logo
mdocs
首页
特性
开始
文档
GitHub
首页
特性
开始
文档
GitHub
logo
mdocs

快速开始

安装
第一个知识库

AI 与 Agent

智能助手(AI)
Agent 开发闭环
CLI Token

核心概念

所见皆文件
域隔离
文档级邀请
无账户身份识别

使用指南

设置页面概览
Markdown 编辑
流程图生成
草稿与同步
我的文章与邀请
文档收藏
文档评论
受限域成员与模板
恢复码(兼容)

部署与配置

环境要求
配置文件
反向代理示例
FAQ
更新日志
Next Page第一个知识库
mdocs

Write freely. Never lose a word.

MIT License
产品
功能特性Agent 开发闭环竞品对比更新日志
资源
文档安装指南
社区
GitHub问题反馈
© 2026 mdocs · Made with ♥ by xuhuafeifei

#安装

#环境要求

  • 运行时:Node.js 22+
  • 无需额外安装数据库或中间件

#快速安装(推荐)

npm install -g @fgbg/mdocs

安装完成后,直接运行:

mdocs

即可启动服务,访问 http://localhost:4000。

也可以临时体验:

npx @fgbg/mdocs

#从源码构建(开发模式)

如果你需要参与开发或自定义功能:

git clone https://github.com/xuhuafeifei/mdocs
cd mdocs
pnpm install

#启动开发模式

pnpm dev

一条命令同时启动后端(Express,localhost:4000)和前端(Vite,localhost:5173,自动代理 /api)。

#构建与运行

pnpm build          # 构建前端 + 编译后端
pnpm start          # 生产模式,同一端口提供前端和 API

#CLI 命令

mdocs 包附带管理命令:

# 列出所有访客
mdocs visitor list

# 访客迁移(按名称,推荐)
mdocs visitor migrate --from Alice --to Bob --confirm

# 访客迁移(按 UUID,精确匹配)
mdocs visitor migrate --from OLD_UUID --to NEW_UUID --confirm

# 试运行,查看影响范围但不实际执行
mdocs visitor migrate --from Alice --to Bob --dry-run

# 显式启动服务
mdocs start

#运行时数据

首次启动后,数据目录自动创建在 ~/.mdocs/:

~/.mdocs/
  sqlite/
    data.sqlite       # 元数据(文档索引、权限、访客、审计日志)
  files/
    docs/
      {domain_id}/    # 每个域独立的子目录
        a.md          # 域内文档
        folder/       # 域内子目录(逻辑存在于数据库)
          b.md
    assets/           # 上传的附件
  logs/               # 运行日志

文档以 Lexical JSON 格式存储在 files/docs/ 中,只能由 mdocs 加载编辑。

#验证

启动后访问 http://localhost:4000(npm 安装)或 http://localhost:5173(开发模式),看到访客注册弹窗即表示运行成功。

#小服务器安装(低内存 / 云主机)

1 核 / 1G 内存左右的机器(如轻量阿里云)上,npm install -g 很容易被内核 Killed(OOM),或因半残目录报 ENOTEMPTY。按下面做更稳。

#1. 加 Swap(强烈建议)

# 加 2G swap
fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
free -h

确认 Swap 一行不再是 0B。重启后若要长期保留,把 /swapfile swap swap defaults 0 0 写入 /etc/fstab。

#2. 清掉半残的全局目录

上次安装被 Killed 或报 ENOTEMPTY 时必做:

rm -rf /usr/lib/node_modules/@fgbg
npm cache clean --force

#3. 限制内存与并发后再装

优先走官方 registry(国内镜像可能尚未同步新版本):

NODE_OPTIONS="--max-old-space-size=512" npm install -g @fgbg/mdocs@latest \
  --registry=https://registry.npmjs.org/ \
  --legacy-peer-deps \
  --no-audit \
  --no-fund \
  --maxsockets=1

不要用 npm install -g ... -force:peer 警告可忽略,-force 只会更吃内存。

#4. 离线 tgz(网络差时)

在网络较好的机器上打包,再拷到服务器:

# 本机
npm pack @fgbg/mdocs@latest --registry=https://registry.npmjs.org/
# 得到 fgbg-mdocs-x.y.z.tgz,scp 到服务器后:
NODE_OPTIONS="--max-old-space-size=512" npm install -g ./fgbg-mdocs-*.tgz \
  --legacy-peer-deps \
  --no-audit \
  --no-fund \
  --maxsockets=1

#5. 备选:不装全局,本地 + 软链

全局仍 OOM 时,可装到当前目录再链出命令:

cd /root   # 或任意工作目录
NODE_OPTIONS="--max-old-space-size=512" npm install ./fgbg-mdocs-*.tgz \
  --legacy-peer-deps --no-audit --no-fund --maxsockets=1
ln -sf "$(pwd)/node_modules/.bin/mdocs" /usr/local/bin/mdocs
mdocs --help

若出现 Cannot find module '.../typebox/build/index.mjs',补装依赖即可:

npm install typebox@1.1.38 --no-audit --no-fund

#常见报错

现象原因处理
安装过程 KilledOOM加 Swap,限制 --maxsockets=1
ENOTEMPTY rename @fgbg/mdocs上次半残目录rm -rf /usr/lib/node_modules/@fgbg 后重装
ETARGET / No matching version镜像未同步--registry=https://registry.npmjs.org/ 或改用 tgz
mdocs: command not found用了非 -g 安装用全局安装,或软链 node_modules/.bin/mdocs

#升级

#推荐:mdocs update(原地升级)

已全局安装时,直接:

mdocs update

该命令写死从淘宝镜像 https://registry.npmmirror.com 拉取最新 @fgbg/mdocs,保留现有 node_modules,再用 npm install --prefer-offline 只补差量依赖(本地缓存里已有的包不会再下一遍)。升级后重启服务即可。

#备选:重新全局安装

npm install -g @fgbg/mdocs@latest --registry=https://registry.npmjs.org/

小服务器若遇半残目录或 OOM,仍按上面「清半残目录 + 限制并发」步骤执行。

#下一步

了解 核心设计理念,或直接创建第一个文档。