# kms **Repository Path**: lijunyi/kms ## Basic Information - **Project Name**: kms - **Description**: golang 实现的一个密钥管理系统 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-21 - **Last Updated**: 2026-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KMS 密钥管理系统 基于 Go + Gin + SQLite 的 Web 密钥管理系统。 ## 快速开始 ### 本地运行 ```bash export KMS_MASTER_KEY=1234567890abcdef # 必须 16 字节 ASCII make build ./build/kms -l 127.0.0.1 -p 8000 -d ./data ``` 浏览器访问 `http://127.0.0.1:8000`,首次使用完成管理员初始化。 ### Docker ```bash export KMS_MASTER_KEY=1234567890abcdef make docker-build docker compose up -d --build ``` 默认映射 `http://127.0.0.1:8000`,数据保存在 Docker volume `kms-data`。 ## 命令行参数 | 参数 | 默认 | 说明 | |------|------|------| | `-l` / `--listen` | `127.0.0.1` | 监听地址 | | `-p` / `--port` | `8000` | 端口 | | `-d` / `--data` | `/data` | 数据目录,数据库为 `/kms.db` | ## 环境变量 - `KMS_MASTER_KEY`:16 字节 ASCII 主密钥,用于加密数据库中的密钥文件与敏感配置。**必须与数据库备份分开保管。** - `KMS_TRUSTED_PROXIES`:信任的反代地址列表(逗号分隔),用于正确识别客户端 IP;默认 `127.0.0.1,::1`。Nginx 与 KMS 不同机时填入 Nginx 出口 IP 或网段。 - `KMS_SECURE_COOKIE`:设为 `true` 时 Session Cookie 带 `Secure` 标志(HTTPS 站点建议开启)。 ## 功能概览 - 首个用户为系统管理员(邮箱登录) - 项目与密钥文件管理(加密存储于 SQLite) - 用户、项目管理员、下载权限 - 邮件重置 / 设置密码、SMTP 测试 - 审计日志、登录验证码、限频 - 系统设置(含登录页描述)、自助改密 ## 测试 ```bash make test ``` 详见 [tests/README.md](../tests/README.md)。 ## 部署(Nginx + HTTPS) 应用内不终止 TLS,由 Nginx 反代。示例配置见 [nginx-example.conf](nginx-example.conf)。 环境变量建议: - `KMS_SECURE_COOKIE=true`(HTTPS 站点) - `KMS_TRUSTED_PROXIES`:填入 Nginx 出口 IP 或网段(与 KMS 不同机时必填) 系统设置中的 **Base URL** 填写对外地址,例如 `https://kms.example.com`。 ## 压测 简单登录页压测工具与报告见 [load-test-report.md](load-test-report.md)。 ## 设计文档 - [总体设计](superpowers/specs/2026-05-20-kms-design.md) - [验收清单](superpowers/specs/2026-05-21-acceptance-checklist.md) - 各阶段 spec / plan 见 `docs/superpowers/`