安装
环境要求
- 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
