安装

环境要求

  • Node.js 20 或更高版本
  • pnpm 12 或更高版本
  • git
  • GitHub CLI(gh),并已通过 gh auth login 完成认证(私有仓库读取权限)

凭据(私有仓库)

docdoc 仓库为私有,安装与脚本获取统一通过 gh CLI 认证:gh auth login 登录账号,gh auth setup-git 把凭据配置给 git。

全局安装

gh auth setup-git
pnpm add -g github:Xeegam/docdoc#path:/clis/docdoc

产物已随仓库提交,安装过程不执行任何构建脚本,安装即用。固定到某个版本安装:把 # 后换成 v0.1.0&path:/clis/docdoc。

一键安装

托管服务器上以 root 执行:

gh api repos/Xeegam/docdoc/contents/install.sh --jq .content | base64 -d | \
  DOCDOC_EMAIL=ops@example.com bash

脚本依次完成:gh auth setup-git 配置 git 凭据、全局安装 CLI、生成配置文件与随机管理令牌、安装并启动 systemd 服务、放通防火墙。配置文件已存在时保留不覆盖。建议在普通 SSH shell 执行:Node 内置 libuv 的 io_uring epoll 批处理在进程退出路径存在偶发 SIGABRT(崩溃前工作已完成、仅退出码异常,当前所有 Node 版本未修复);从 pm2 fork 模式管理的终端(如 opencode terminal)运行时,环境泄漏的 Node IPC 通道变量(NODE_CHANNEL_FD 等)是崩溃取证命中的环境因素——脚本顶部已防御性 unset,CLI 自带的 shell 启动器在每次调用 docdoc 时也做同样剥离(含被此类终端直接运行的场景),另导出 UV_USE_IO_URING=0(libuv ≤1.49,即 Node 20 / 早期 Node 22 时禁用该路径;libuv ≥1.50 无条件启用、开关无效)。node 系命令不因异常退出而重跑(工作已完成),结果一律以实际产物为准:CLI 版本可打印且与标签号一致、systemd 单元文件存在;服务重启与 enable 走原生 systemctl(非 Node 进程,无该崩溃暴露),结尾对 127.0.0.1 的 health 端点做非致命回显(TLS 开启时为 httpPort、关闭时为主端口)。行为参数通过环境变量覆盖:

变量 缺省 说明
DOCDOC_EMAIL — ACME 账户邮箱,TLS 启用且配置文件不存在时必填;已有配置保留不覆盖,更新场景可不填
DOCDOC_TLS_ENABLED true 是否启用 HTTPS
DOCDOC_HOST 0.0.0.0 监听地址
DOCDOC_PORT 443 HTTPS 监听端口
DOCDOC_HTTP_PORT 80 HTTP 质询与跳转端口
DOCDOC_DATA_DIR /var/lib/docdoc 数据目录
DOCDOC_CONFIG_DIR /etc/docdoc 配置目录
DOCDOC_REF main 安装的 git ref(分支或 vXXX 标签)

验证安装

docdoc --version
docdoc --help

第一条命令打印版本号:构建时 HEAD 带 vXXX 标签则输出标签号(如 0.1.0),否则输出构建提交的短哈希(如 b98815e);第二条列出全部子命令(build / preview / add / del / service / serve)。两条都正常输出即安装成功。

卸载

pnpm remove -g docdoc