Go to file
voson 3b338be2d2
Some checks failed
Secrets CLI - Build & Release / 检查版本 (push) Successful in 1s
Secrets CLI - Build & Release / Build (x86_64-unknown-linux-musl) (push) Failing after 31s
Secrets CLI - Build & Release / Build (aarch64-apple-darwin) (push) Failing after 37s
Secrets CLI - Build & Release / Build (x86_64-pc-windows-msvc) (push) Has been cancelled
Secrets CLI - Build & Release / 发送通知 (push) Has been cancelled
style: cargo fmt — fix rustfmt formatting
Made-with: Cursor
2026-03-18 14:13:37 +08:00

secrets

跨设备密钥与配置管理 CLI基于 Rust + PostgreSQL 18。

将服务器信息、服务凭据统一存入数据库,供本地工具和 AI 读取上下文。

安装

cargo build --release
# 或从 Release 页面下载预编译二进制

配置数据库连接:

export DATABASE_URL=postgres://postgres:<password>@<host>:5432/secrets
# 或在项目根目录创建 .env 文件写入上述变量

使用

# 查看版本
secrets -V
secrets --version

# 查看帮助
secrets --help
secrets -h

# 查看子命令帮助
secrets help add
secrets help search
secrets help delete

# 添加服务器
secrets add -n refining --kind server --name my-server \
  --tag aliyun --tag shanghai \
  -m ip=1.2.3.4 -m desc="My Server" \
  -s username=root \
  -s ssh_key=@./keys/my.pem

# 添加服务凭据
secrets add -n refining --kind service --name gitea \
  -m url=https://gitea.example.com \
  -s token=<token>

# 搜索(默认隐藏敏感字段)
secrets search
secrets search -n refining --kind server
secrets search --tag hongkong
secrets search -q mqtt              # 关键词匹配 name / metadata / tags
secrets search -n refining --kind service --name gitea --show-secrets

# 删除
secrets delete -n refining --kind server --name my-server

数据模型

单张 secrets 表,首次连接自动建表。

字段 说明
namespace 一级隔离,如 refiningricnsmart
kind 记录类型,如 serverservice(可自由扩展)
name 人类可读唯一标识
tags 多维标签,如 ["aliyun","hongkong"]
metadata 明文描述信息ip、desc、domains 等)
encrypted 敏感凭据ssh_key、password、token 等MVP 阶段明文存储,预留加密字段

-m / --meta 写入 metadata-s / --secret 写入 encryptedvalue=@file 从文件读取内容。

项目结构

src/
  main.rs          # CLI 入口clap
  db.rs            # 连接池 + auto-migrate
  models.rs        # Secret 结构体
  commands/
    add.rs         # upsert
    search.rs      # 多条件查询
    delete.rs      # 删除
scripts/
  seed-data.sh     # 导入 refining / ricnsmart 全量数据

CI/CDGitea Actions

推送 main 分支时自动fmt/clippy 检查 → musl 构建 → 创建 Release 并上传二进制。

首次使用需配置 Actions 变量和 Secrets

# 需有 ~/.config/gitea/config.envGITEA_URL、GITEA_TOKEN、GITEA_WEBHOOK_URL
./scripts/setup-gitea-actions.sh
  • RELEASE_TOKENSecretGitea PAT用于创建 Release 上传二进制
  • WEBHOOK_URLVariable飞书通知可选

详见 AGENTS.md

Description
Secrets management project
Readme 4 MiB
2026-04-10 17:14:37 +08:00
Languages
Rust 66%
HTML 29.5%
Shell 2.1%
Python 2%
JavaScript 0.4%