# 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
## 项目效果图
### 电脑屏幕
- 登录页面

- 首页

- 查看密码

- 详情页面

- 创建页面

- 个人页

### 手机屏幕




## 部署安装
### 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接口,在前端新添加页面展示。