# passwordserver **Repository Path**: ouhaoqiang/passwordserver ## Basic Information - **Project Name**: passwordserver - **Description**: Password是一个用于保存密码的私有化部署服务。使用 go 语言开发后端,使用 Typejs + vue 开发前端。 Password目前支持 web 客户端,支持手机小屏幕和电脑大屏幕。 Password具有端到端加密的特性,使用国密sm2+sm4进行前后端通讯交互,不怕中途被截取密码数据。 Password后端存储在数据库的`账号`和`密码`也是经过加密处理进 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: http://116.198.216.22:3333 - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-02-19 - **Last Updated**: 2025-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: password ## README # Password ## 简介 `Password`是一个用于保存密码的私有化部署服务。使用 go 语言开发后端,使用 Typejs + vue 开发前端。 `Password`目前支持 web 客户端,支持手机小屏幕和电脑大屏幕。 `Password`具有端到端加密的特性,使用国密`sm2`+`sm4`进行前后端通讯交互,不怕中途被截取密码数据。 `Password`后端存储在数据库的`账号`和`密码`也是经过加密处理进行保存,不容易被运维人员进行查看。 ## 项目体验地址 [点击我体验一下](http://116.198.216.22:3333) 账号: test, 密码: 123456 ## 项目效果图 ### 电脑屏幕 - 登录页面 ![image-20250313170856393](images/README/image-20250313170856393.png) - 首页 ![image-20250313171642573](images/README/image-20250313171642573.png) - 查看密码 ![image-20250313171658086](images/README/image-20250313171658086.png) - 详情页面 ![image-20250313171711473](images/README/image-20250313171711473.png) - 创建页面 ![image-20250313171742397](images/README/image-20250313171742397.png) - 个人页 ![image-20250313171820374](images/README/image-20250313171820374.png) ### 手机屏幕 image-20250313172040615image-20250313172319540image-20250313172340108 image-20250313172359538image-20250313172513055image-20250313172446213 ## 部署安装 ### docker compose 部署 #### 解压部署包 ```shell # 解压部署包 tar -zxvf passwordserver-docker-compose.tar.gz # 进入目录 cd passwordserver-docker-compose ``` #### 修改前端配置 ```shell # 复制模板文件 mv web/config.json.example web/config.json mv web/nginx.conf.example web/nginx.conf # 1. 修改config.json里面sm2的公钥,这个公钥需要后端服务运行起来后在数据库t_sm2_info表里面获取。 # 2. 修改config.json里面关于casdoor的clientId,这个需要创建casdoor应用后才能配置。 vim web/config.json # 3. nginx配置修改后端地址和端口,一般情况下不需要修改。(默认已经添加好passwordserver和casdoor的容器名称了,容器内自动dns解决访问) vim web/nginx.conf ``` #### 修改后端配置 ```shell # 复制模板文件 mv server/config.yaml.example server/config.yaml # 1. 修改config.yaml里面的postgres、redis、casdoor配置, 可以保持默认不进修改 # 默认情况下postgres和redis的地址是使用容器名称进行dns解析,密码固定为123abc... # 2. 修改casdoor的clientId、clientSecret、certificate,地址为容器名称dns解析无需修改。 vim server/config.yaml ``` #### 修改casdoor配置 > `casdoor`是一个开源的身份管理和单点登录平台。 `passwordserver` 使用 `casdoor` 进行鉴权 ```shell # 修改dataSourceName为postgres相关的信息 # 修改redisEndpoint为redis相关的信息 # 默认已经配置好,无需再配置了 vim ./casdoor/conf/app.conf # 需要在数据库实例创建casdoor名称数据库 ``` #### 修改postgresql配置 > 如果已经有`postgresql`实例可以不需要创建。 ##### 配置 - 复制环境变量文件,并且修改数据库密码。 ```shell cp example.env .env # 默认已经配置好,无需再配置了 vim .env ``` ##### postgres 配置文件 - 复制 postgres 配置文件,并且配置 ```shell cp ./postgresql/postgresql.conf.example ./postgresql/postgresql.conf # 默认已经配置好,无需再配置了 vim ./postgresql/postgresql.conf ``` #### 修改redis配置 > 如果已经有`redis`实例可以不需要创建。 ##### redis 需要配置内核参数 - 调整宿主机内核参数 ```shell # 永久生效 cp ./redis/redis-sysctl.conf /etc/sysctl.d/ # 临时生效 sysctl -p /etc/sysctl.d/redis-sysctl.conf ``` - 调整容器内核参数 `docker-compose.yaml` ```yaml services: redis: ... .. sysctls: # 用于设置监听套接字(listening socket)的最大等待连接队列长度 net.core.somaxconn: 4096 ... ... ``` ##### 配置文件 ```shell cp ./redis/redis.conf.example./redis/redis.conf # 默认已经配置好,无需再配置了 vim ./redis/redis.conf ``` #### 启动服务 ```shell # 运行 docker compose up -d ``` ## 开发环境 ### 前端开发环境 > 前端需要 nodejs 环境进行开发 > 使用 ts + vue3 架构 ```shell git clone https://gitee.com/ouhaoqiang/passwordserver cd passwordserver/web # 安装依赖 npm install # 修改开发配置 ## 修改后端地址和端口 vite.config.ts ## 从后端获取sm2公钥并配置上去 public/config.ts # 运行起来 npm run dev # 编译 npm run build ``` ### 后端开发环境 > 后端使用 go 语言镜像开发 > fiber + gorm ```shell git clone https://gitee.com/ouhaoqiang/passwordserver cd passwordserver/server # 修改配置 ## 重点需要修改postgres、redis、casdoor配置 deploy/config/config.yaml # 编译 make # 运行 make run ``` ## 打包 ### 打包镜像 > 镜像分为`passwordserver`和`passwordweb`两个 #### 编译全部镜像 ```shell git clone https://gitee.com/ouhaoqiang/passwordserver cd passwordserver make ``` #### 单独编译前度或后端镜像 ```shell git clone https://gitee.com/ouhaoqiang/passwordserver cd passwordserver # 编译前端 make build-web-image # 编译后端 make build-server-image ``` #### 编译并保存镜像 ```shell git clone https://gitee.com/ouhaoqiang/passwordserver cd passwordserver # 保存所有镜像 make build-all-image-save # 保存前端 make build-web-image-save # 保存后端 make build-server-image-save # 保存目录 ls ./buildSave/ passwordserver.tar passwordweb.tar ``` ### 打包`docker-compose`包 ```shell git clone https://gitee.com/ouhaoqiang/passwordserver cd passwordserver make docker-compose-build # 保存目录 ls ./buildSave/ passwordserver-docker-compose passwordserver-docker-compose.tar.gz ``` ## 实现功能时间线 - 2025-03-13 优化前端对后端返回的错误显示,解决在创建密码记录是如果 sessionid 过期会失败。 - 2025-03-12 支持打包镜像,实现 docker-compose 运行服务。 - 2025-03-07 二期功能实现: 后端实现账号和密码存储到数据库的加密功能 - 2025-03-06 二期功能实现: 实现前后端使用国密算法加密传输数据 - 2025-03-04 实现前后端弱密码显示功能 - 2025-03-04 完成前端显示样式优化,基本已经完成一期功能实现 - 2025-02-28 退出时清理 token - 2025-02-27 集成支持[casdoor](https://github.com/casdoor/casdoor)登录 - 2025-02-20 完成前端功能开发,实现登录页面、密码列表页面、密码详情页面、密码编辑页面、密码添加页面、密码搜索功能、密码排序页面、密码复制页面、密码生成页面、密码分类页面。 - 2025-02-19 完成后端功能开发,实现登录功能接口、密码的增删改查接口、支持存储数据到`postgresql`。 ## 待实现功能 1. 2025-03-04 看是否能实现浏览器插件功能 2. 2025-03-07 实现添加配置控制保存在数据库的账号和密码是否加密存储,当解密失败时直接返回数据库保存的内容 3. 2025-03-17 记录获取密码接口请求信息,在数据库中记录,包括时间、ip、用户id、密码记录id等信息。并在后端提供展示查看记录api接口,在前端新添加页面展示。