Skip to content

ahui2016/mima

Repository files navigation

mima

Just another password manager.

本软件是一个有特色的密码管理器,既可架设到服务器中,也可在本地运行,通过访问网页使用(因此不同的电脑、手机系统都可使用,也不用考虑同步,这使得程序代码可以非常简单)。

采用简单有效的 NaCl (libsodium) 加密方式,该方式以 “容易正确处理” 为最大特点, 因此可以确保加密过程得到正确处理。

Install (绿色软件,开箱即用)

本软件采用了 Go 语言的 embed 技术,把静态资源也打包到程序中,因此不需要安装,直接下载一个文件,通过点击或命令行启动程序即可使用。(下载 ➡ Releases)

默认端口是 80, 启动程序后用浏览器访问 http://127.0.0.1 即可打开程序界面。

可使用 -addr 参数修改端口,例如:

mima.exe -addr 127.0.0.1:8080

数据库 (sqlite)

本软件采用 sqlite, 默认保存在 os.UserConfigDir, 可使用参数 -db 指定数据库的文件夹(必须是一个已存在的文件夹),例如:

$ mkdir mima-db-folder
$ mima -db ./mima-db-folder

demo (在线演示)

https://mimademo.ai42.cc (密码:abc)

特点

  • 完整的历史记录 不仅记录历史密码,甚至用户名与备注的每次修改都全部记录
  • 神奇的标签功能 利用标签可轻松实现多密码与分组,并可代替顶置(详见后文)
  • 首页无列表 多数密码管理软件一打开就是网址与用户名列表,虽然通常密码隐藏,但有时网址与用户名也可能是隐私,需要防旁人窥视
  • 信任IP可使用PIN码登入 通过受信任的 IP 访问时可使用 PIN (即一个更简单,方便输入的密码), 从而实现了安全性与便利性的平衡

Label (多功能标签)

请看图文说明: about-label.md

mima-web (旧版/前身)

本软件的前身是 https://github.com/ahui2016/mima-web

我没有在原项目做版本升级,而是新开一个项目,是因为不仅有很多升级的地方,同时也有很多降级的地方,导致两个软件差别有点大。(旧版数据可导入新版)

以下把本项目称为“新版”,把 mima-web 称为“旧版”。

升级 (新版的优点)

  • 新版安装更方便,采用 Go embed 技术,只需要下载一个可执行文件,直接运行即可。而旧版需要安装 Go 语言环境进行编译。
  • 新版有“信任IP使用PIN码登入”的功能,旧版没有。
  • 新版前端采用了 mj.js 和 TypeScript, 更容易开发和维护。而旧版则是采用原始的 HTML+JQuery 方式。

降级 (旧版的优点)

  • 旧版前端使用了 Bootstrap, 更美观(但没有 dark mode), 而新版采用 Simple.css, 自带 dark mode, 但我没做美化,采用比较原始的风格。
  • 旧版后端未使用 web 框架,只使用标准库,而新版使用了 gin。
  • 旧版后端未使用数据库(自己实现了一个简单的基于文件的数据库),编译速度快到离谱。新版使用了 sqlite, 编译速度受到 cgo 的影响而变慢,而且在 Windows 里编译也有点麻烦。
  • 旧版有回收站,删除条目后可选择恢复或彻底删除。新版没有回收站,删了就是彻底删除。

Go embed

Go embed 的好处是发布时一个文件包括一切,足够简单。

但由于静态资源都打包到可执行文件里了,在开发阶段每次修改前端的内容,都需要执行一次 go build 才能反映变化。为了方便前端开发,我弄了个 debug 模式:

mima.exe -debug

在 debug 模式下,修改前端的 HTML/JS 文件,不需要重新打包,不需要重启后端,只要刷新网页就行。(有时需要 Ctrl+Shift+R 强制刷新)

免责声明

我已尽自己的能力最大程度地确保本软件的安全性 (因为我自己就是本软件的深度用户), 用户可免费使用本软件, 可自行审查本软件的源代码,但万一有什么泄密、删除数据、 造成直接或间接损失等, 我一概不负责任。 (使用别的任何密码管理软件, 即使是收费的, 他们也一样不会负责用户的损失.)

备忘

使用 gox 跨平台交叉编译时,由于本软件使用的 sqlite3 依赖 cgo, 因此需要添加 '-cgo' 参数,例如:

gox -osarch="darwin/arm64" -cgo -tags=nomsgpack