@ earthlink/ dotvault
dotvault - 同步 .env 编号 : .npmrc 编号 : .gitconfig 和任意配置文件
计算机和计算机/CD。 无需AWS账户.
安装
npm i -g @earthlink/dotvault
# or as a project devDependency
npm i -D @earthlink/dotvault
需要节点20.
升级自
@earthlink/env-sync♪ Theenv-sync命令继续工作 作为别名——参见: 兼容性别名 见下文.
快开始
# 1. Create project-config.json (first time, if not already in repo)
dotvault init
# 2. Log in — stores tokens in OS keychain (Keychain / libsecret / Credential Manager)
dotvault login -e [email protected]
# 3. Pull all synced files to local disk
dotvault pull
# 4. (Optional) Inject secrets into a dev server without writing any file
dotvault run -- npm run dev
共同工作流程
| 工作流程 | 图标 |
|---|---|
| 第一次设置 | dotvault init → dotvault login → dotvault pull |
| 合并已存在的工程( 配置为repo) | dotvault login → dotvault pull |
| 本地 dev( 磁盘上没有. env) | dotvault run -- npm run dev |
| CI/CD(服务代号) | 设定 DOTVAULT_TOKEN=est_… → dotvault pull --env production |
| 审计历史 | dotvault versions DATABASE_URL |
| 倒回一个秘密 | dotvault rollback DATABASE_URL --to 4 |
| 添加文件以同步 | dotvault push .npmrc |
| 侦测犯罪秘密 | dotvault scan . |
| 共享一个全局的密钥 | dotvault global keys → dotvault global use <KEY> |
所有命令
dotvault init # create project-config.json
dotvault login # email + password auth (Cognito)
dotvault pull # write .env / .npmrc etc. to local disk
dotvault run -- <cmd> # inject secrets into child process (no file written)
dotvault set KEY=value # set one or more secrets
dotvault delete KEY # delete a secret
dotvault import .env.production # bulk-import from a .env file
dotvault versions KEY # show version history of a key
dotvault rollback KEY --to N # restore a key to version N
dotvault list # list (env, file) inventory for this project
dotvault push .npmrc # add any file to the sync set
dotvault files # list synced files
dotvault scan . # detect committed secrets (offline)
dotvault global keys # list the org's global key-pool inventory
dotvault global set K=v [-E env] # set a global-pool value (omit -E for the common value)
dotvault global delete K [-E env] # delete a global-pool value
dotvault global use K [--as N] # bind a global key into this project's pull
dotvault global drop K # unbind a global key from this project
dotvault global status # show this project's active global-key bindings
dotvault project create --name X # create a project (headless — ADR-0018)
dotvault logout # remove tokens from keychain
dotvault whoami # report active identity (interactive user OR service token)
运行 dotvault <command> --help 每个命令的标记和示例.
输入选项
dotvault init [options]
| 选项 | 默认 | 说明 |
|---|---|---|
-n, --name <name> | basename(cwd) | 项目名称 |
--api <url> | https://api.dotvault.io/v1 | API 基础 URL |
-f, --force | —— 说 | 覆盖已存在的 project-config.json |
成功输出 :
Created project-config.json (project=my-app). Next: dotvault login && dotvault pull
拉动选项
dotvault pull --project my-app --env staging --file .env.local
| 选项 | 说明 |
|---|---|
-p, --project <name> | 覆盖工程名称 project-config.json (使用此旗帜, 配置文件是可选的 —— 见下文) |
-E, --env <env> | development | staging | production,或项目已申报的任何自定义嵌入(Settings-Environments,ADR-0024) |
-f, --file <file> | 只拉这个文件 |
成功输出(每个文件一行,然后是摘要;颜色/进度栏) 仅限TTY:
✓ Wrote 12 keys to .env.local (project=my-app, env=development, file=env.local). Markers preserved.
✔ 1 file synced, 0 excluded, 12 keys total
按整个文件
dotvault push .npmrc [--as config/prod.json] [--env staging]
push 上传整个文件(例如:. .npmrc, (中文(简体) ), kubeconfig一个JSON
服务账户密钥)作为同步文物. 一个后来的平地 dotvault pull 实现每个被推到它的文件 destPath,创建任意
缺少父目录 。 无法写入的文件( 无)
允许,在方法中的一个目录,...)在警告中命名,并且
其他文件仍然被写入.
dotvault run 仅在命令时将所推文件放置
运行并随后移除。 如果文件已经存在
destPath 内容相同(例如: pull这是
继续使用。 如果本地文件不同, 则左边
未触及和 run 打印一个警告.
只有文本文件(UTF-8). push 读取和存储文件为 UTF-8
语句。 一个无效的 UTF-8 — 二进制文件( 图像, 档案,
编译出 blobs)和文本保存在另一个编码中,例如Latin-1或
Shift JIS - 在上传前被否决,同时存在验证错误. 转换
将文件移至 UTF-8, 或 Base64- encode 二进制数据输入文本文件
如果你必须同步它.
尺寸限制:256KiB. 服务器拒绝超过 262,144 的文件
字符数( e)FILE_TOO_LARGE) (中文(简体) ). 256KiB的ASCII纯文本;
有多字节字符的文本在字节中可以较大. 已按下文件
与每一次拉出, 所以秘密,不是大资产,是
预定有效载荷.
扫描已承诺的秘密
dotvault scan . # scan a path tree (offline, no auth)
scan 沿着给定的路径走( 滑行) node_modules),旗帜
高度自信秘密(AWS密钥、私人密钥块、GitHub PATs、,
dotvault service service services)并编辑其输出中的匹配值.
退出代码为 1个 当任何发现被报告时, 6个 当一个名称
顶级路径不存在( u)SCAN_PATH_NOT_FOUND, (中文(简体) ), 0 个 当
树是干净的.
已知的限制(普通任务). 这个 generic-assignment
规则只引用了16+字符的正文(例如:. password = "supersecretvalue123") (中文(简体) ). 故意这样做的 没有 旗帜 "${VAR}"
插值引用(GitHub #254),为了避免噪音,不
旗帜短或未引用的值, 如平原 PASSWORD=value 线条在
(单位:千美元) .env 文档. scan 是个秘密的绊线,不是详尽无遗的
linter——将干净的结果作为"没有明显的高通密",
不是保证.
退出代码
| 退出 | 含义 |
|---|---|
| 0 个 | 成绩 |
| 1个 | 请求不当,或 scan 发现了可能的秘密 |
| 2个 | 网络出错( E)NETWORK_ERROR——API无法到达;可以安全重试 |
| 3个 | 未登录、会话过期或证书错误 / MFA 代码 |
| 页:1 | 拒绝许可( E)PERMISSION_DENIED(中文(简体) ) |
| 页:1 | 在服务器上找不到的工程或秘密( E)PROJECT_NOT_FOUND(中文(简体) ) |
| 6个 | 无效在此机上的输入( E)VALIDATION_ERROR, (中文(简体) ), SCAN_PATH_NOT_FOUND(中文(简体) ) |
| 第7条 | rotate 冲突(409起来自旋转路线,例如已经在飞行中的RUN) |
| 99 (韩语) | 意外错误,包括其它服务器响应(例如413,429,5xx) |
dotvault run 退出时使用孩子命令的退出代码 (127 当
命令无法启动 .
项目配置
CLI读取 project-config.json 在工作目录根中(由 dotvault init页:1.
有明确的 -p, --project <name> 文件为 选项 (ADR-0035): (英语)
每个工程范围的命令 (pull, (中文(简体) ), run, (中文(简体) ), list, (中文(简体) ), set, (中文(简体) ), push, (中文(简体) ), files, (...) (中文(简体) )
然后从任意目录中工作。 没有配置 API URL 返回到
DOTVAULT_API_URL - 众所周知的缺省,内脏又回到
--env → DOTVAULT_ENV编号 :APP_ENV → development命令
(单位:千美元)set (例如)要求明确 --file没有 --project 配置
需要保留 —— 将目录固定在项目上 :
{
"name": "my-app",
"setup": {
"bootstrap": {
"proxy": {
"apiUrl": "https://api.dotvault.io/v1"
}
},
"envSync": {
"enabled": true,
"files": [".env"],
"defaultEnv": "development"
}
}
}
将此文件提交您的仓库—— 它不包含任何秘密 。 这个 apiUrl 字段是唯一必须匹配主机平台的值.
认证
用于每次引用的CLI(适用于 pull, (中文(简体) ), run, (中文(简体) ), set, (中文(简体) ), delete, (中文(简体) ), import, (中文(简体) ), versions, (中文(简体) ), rollback, (中文(简体) ), list, (中文(简体) ), push, (中文(简体) ), files, (中文(简体) ), whoami:
DOTVAULT_TOKEN环境变量(或遗产)ENV_SYNC_TOKEN(b) ——est_…服务标志(CI/CD/Lambda)- OS 键链——由
dotvault login(交互式用户)
dotvault whoami 将会在不进行网络呼叫的情况下告诉你哪个模式是活动的 :
$ DOTVAULT_TOKEN=est_ci_secret_abcdefghij dotvault whoami
Service token (DOTVAULT_TOKEN=est_ci_secre…) — CI / Lambda mode
$ dotvault whoami
[email protected] (session valid until 2027-10-24)
服务标志——仅管理控制台
服务信使( O)est_…)在管理员控制台中创建、列出并被撤销:
app.dotvault.io/admin/托盘。这个秘密
显示一次——立即保存.
dotvault token list | create | revoke 在v0.15.6中被删除: 符号 API
只接受管理员控制器会话(拒绝CLI登录),所以
命令总是失败 PERMISSION_DENIED他们现在只打印
控制台 URL 并退出 1 .
无头项目创建( I)dotvault project create(中文(简体) )
创建一个没有管理员网络控制台的工程——让克洛德完成的作品
代码/CI载入无人驾驶的回放(ADR-0018)。 薄荷a provisioner 曾经,
然后创建没有交互式登录的工程 :
# one-time (org admin): create a `provisioner` token in the admin console
# (https://app.dotvault.io/admin/tokens) — it creates projects, cannot read or
# write any secret, and cannot mint tokens
# thereafter (headless): org is taken from the token, so --org is optional
DOTVAULT_ADMIN_TOKEN=est_… dotvault project create --name myapp
全权证书 project create数字 : DOTVAULT_ADMIN_TOKEN (或遗产) ENV_SYNC_ADMIN_TOKEN页:1
DOTVAULT_TOKEN (或遗产) ENV_SYNC_TOKENA级 dotvault login 会话不能
创建工程——没有提供符符,在管理控制台中创建. 见
Claude 代码登入运行簿。 。 。 .
兼容性别名( C)env-sync(中文(简体) )
软件包仍然安装 env-sync 二进制并列 dotvault ——每个
命令在两个名称下都相同。 通过
env-sync 打印一行标准通知:
env-sync is now dotvault — the env-sync command keeps working as an alias.
遗产 ENV_SYNC_* 环境变量(ENV_SYNC_TOKEN, (中文(简体) ),
ENV_SYNC_ADMIN_TOKEN, (中文(简体) ), ENV_SYNC_API_URL当
相应的 DOTVAULT_* 变量未设置 – 没有强制
移民期限.
链接
- 管理控制台 : https://app.dotvault.io (英语)
- 帮助 FAQ : https://app.dotvault.io/admin/ help (英语)
- 完整文档: https://github.com/EarthLinkNetwork/dotvault#readme (中文(简体) )
- 资料来源: https://github.com/EarthLinkNetwork/dotvault 互联网档案馆的存檔,存档日期2013-12-21
访问
Lambda代理后端由EarthLink Network运营. 在操作员的用户池中如果没有一个认知账户,你就不能获取秘密——这个包是故意在npm上分配的,但在业务上是私人的.
许可证
麻省理工学院