文章背景图

个人开发的一款私人密码库 - 项目文档

2026-04-30
3
-
- 分钟
|

项目简介

林酱私人密码库是一款基于 Web 的密码管理工具,采用前后端分离架构,支持双因素认证(主密码 + 邮箱验证码),确保您的密码安全。

核心特性

  • 🔐 安全认证:主密码 + 6位邮箱验证码双因素认证

  • 🎨 精美界面:现代化 UI 设计,支持明暗主题切换

  • 📁 分类管理:支持自定义添加、编辑、删除密码分类

  • 🔍 快速搜索:支持按标题、用户名、URL 等关键词搜索

  • 📱 响应式设计:适配桌面和移动设备

  • 动态效果:流畅的动画效果,提升用户体验

技术栈

  • 前端:HTML5 + CSS3 + JavaScript (原生)

  • 后端:PHP 8.0+

  • 数据库:SQLite 3

  • 邮件服务:QQ邮箱 SMTP

截图


目录结构

password-manager/
├── index.php              # 入口文件
├── assets/
│   ├── css/
│   │   ├── main.css       # 主样式文件
│   │   └── variables.css  # CSS 变量定义
│   └── js/
│       ├── app.js         # 主应用逻辑
│       ├── api.js         # API 通信层
│       └── crypto.js      # 加密工具
├── api/
│   ├── config.php         # 数据库配置
│   ├── auth.php           # 认证 API
│   ├── passwords.php      # 密码 CRUD API
│   ├── send_code.php      # 发送邮箱验证码
│   └── verify_code.php    # 验证邮箱验证码
└── img/
    ├── logo1.png          # 网站 Logo
    └── logo2.jpg          # 登录页头像

部署教程

环境要求

  • PHP 8.0 或更高版本

  • SQLite3 扩展(PHP 默认开启)

  • OpenSSL 扩展(用于邮件发送)

  • Web 服务器:Nginx / Apache / Caddy

步骤 1:上传文件

password-manager 文件夹上传到服务器的网站目录。

# 示例:使用 rsync 上传
rsync -avz ./password-manager/ user@server:/var/www/password.zhihuiyun.work/

步骤 2:配置目录权限

确保 Web 服务器有权限读写文件:

# 设置目录权限
chmod -R 755 /var/www/password-manager/

# 确保 SQLite 数据库文件可写
chmod 644 /var/www/password-manager/api/vault.db 2>/dev/null || true
touch /var/www/password-manager/api/vault.db
chmod 666 /var/www/password-manager/api/vault.db

步骤 3:配置 Web 服务器

Nginx 配置示例

server {
    listen 443 ssl http2;
    server_name password.zhihuiyun.work;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    root /var/www/password-manager;
    index index.php index.html;

    # 禁止访问敏感文件
    location ~ /\. {
        deny all;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Apache 配置示例

password-manager 目录下创建 .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
</IfModule>

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

# 禁止访问敏感文件
<FilesMatch "^\.">
    Order allow,deny
    Deny from all
</FilesMatch>

步骤 4:配置邮件发送

重要:邮件发送功能需要正确配置 SMTP。

打开 api/send_code.php,找到以下配置:

// SMTP 配置
define('SMTP_HOST', 'smtp.qq.com');
define('SMTP_PORT', 465);
define('SMTP_USER', 'xxxxxxxx@qq.com');    // <-- 修改为你的发件邮箱
define('SMTP_PASS', 'xxxxxxxxxxxxxxx');     // <-- 修改为你的授权码
define('FROM_NAME', '林酱密码管理');          // <-- 修改为发件人名称
define('TO_EMAIL', 'xxxxxxx@qq.com');      // <-- 修改为你的收件邮箱

如何获取 QQ 邮箱授权码

  1. 登录 https://mail.qq.com

  2. 进入 设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

  3. 开启 SMTP 服务

  4. 点击 生成授权码(需要手机验证)

  5. 复制授权码并更新到 send_code.php

修改收件邮箱位置

api/send_code.php 中,找到:

define('TO_EMAIL', 'xxxxxxxxxx@qq.com');  // 第 23 行

将邮箱地址改为你希望接收验证码的邮箱地址。

修改发件邮箱位置

api/send_code.php 中,找到:

define('SMTP_USER', 'xxxxxxxx@qq.com');  // 第 21行你的发件邮箱
define('SMTP_PASS', 'xxxxxxxxxxxxx');   // 第 22行你的授权码

将发件邮箱和授权码改为你自己的 QQ 邮箱配置。

步骤 5:访问网站

完成以上配置后,访问你的域名即可开始使用。


功能使用指南

首次设置

  1. 访问网站,输入你想设置的主密码(至少6位)

  2. 确认密码后点击"创建保险箱"

  3. 系统会自动登录并进入主界面

日常登录

  1. 输入主密码

  2. 点击"发送验证码",验证码将发送到你的邮箱

  3. 在验证码输入框中输入收到的6位验证码

  4. 点击"解锁保险箱"进入系统

添加密码

  1. 点击右上角的"添加密码"按钮

  2. 填写标题、用户名、密码、网址等信息

  3. 选择或创建分类

  4. 点击保存

管理分类

  1. 在左侧分类栏点击"+"添加新分类

  2. 点击分类右侧的"✏️"编辑分类

  3. 点击"🗑️"删除分类(需先删除该分类下的密码)

切换主题

点击页面顶部的太阳/月亮图标切换明暗主题。


安全建议

  1. 使用强主密码:建议使用 12 位以上的密码,包含大小写字母、数字和特殊字符

  2. 定期更换主密码:建议每 3-6 个月更换一次

  3. 保护邮箱安全:验证码邮件发送到你的邮箱,确保邮箱密码安全

  4. 启用 HTTPS:生产环境务必使用 HTTPS 加密传输

  5. 定期备份数据:定期备份 api/vault.db 文件


常见问题

Q: 验证码发送失败怎么办?

  1. 检查 PHP 是否安装了 OpenSSL 扩展

  2. 确认 SMTP 配置(邮箱地址、授权码)是否正确

  3. 检查服务器是否开放了 465 端口

  4. 查看服务器日志获取详细错误信息

Q: 如何重置主密码?

目前版本不支持自助重置主密码。如需重置,请删除 api/vault.db 文件,网站会提示重新设置主密码(但原有数据会丢失)。

Q: 数据库文件在哪里?

数据库文件位于 api/vault.db,包含所有密码和设置数据。请定期备份。


更新日志

v1.1.0 (2026-04-30)

  • 新增双因素认证(邮箱验证码)

  • 🎨 优化登录页面 Logo 设计

  • 🎨 优化密码卡片布局

  • 🎨 优化统计卡片显示

  • 🐛 修复主题切换 BUG

  • 🐛 修复分类编辑 BUG

v1.0.0 (2026-04-29)

  • 🎉 初始版本发布

  • 主密码保护

  • 密码 CRUD 功能

  • 分类管理

  • 搜索功能

  • 明暗主题切换


部署检查清单

部署前准备

  • 已上传 password-manager 文件夹到服务器

  • 域名已解析到服务器 IP

  • 已申请并配置好 SSL 证书

服务器配置

权限配置

# 执行命令
chmod -R 755 /path/to/password-manager/
touch /path/to/password-manager/api/vault.db
chmod 666 /path/to/password-manager/api/vault.db

Web 服务器配置

  • 已配置 Nginx/Apache

  • 已启用 HTTPS

  • 已配置 PHP-FPM

  • 已添加 URL 重写规则(如需要)

邮件配置

修改发件邮箱 (api/send_code.php)

define('SMTP_USER', 'your-email@qq.com');    // 第 14 行
define('SMTP_PASS', 'your-auth-code');       // 第 15 行
define('FROM_NAME', '你的名称');              // 第 16 行

修改收件邮箱 (api/send_code.php)

define('TO_EMAIL', 'your-receive-email@qq.com');  // 第 17 行

获取 QQ 邮箱授权码

  1. 登录 https://mail.qq.com

  2. 设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

  3. 开启 SMTP 服务

  4. 生成授权码

  5. 更新 SMTP_PASS 配置

功能测试

基础功能

  • 首次访问显示设置主密码界面

  • 主密码设置成功

  • 登录页面正常显示

  • 主题切换功能正常

邮件功能

  • 点击"发送验证码"无错误

  • 验证码邮件成功收到

  • 验证码输入框正常工作

  • 验证码验证成功

  • 过期验证码正确提示

密码管理

  • 添加密码功能正常

  • 编辑密码功能正常

  • 删除密码功能正常

  • 搜索功能正常

分类管理

  • 添加分类功能正常

  • 编辑分类功能正常

  • 删除分类功能正常

安全检查

  • HTTPS 已启用

  • 敏感文件无法直接访问(.env, vault.db 等)

  • 验证码文件权限正确(api/.verify_code.json)

部署完成

  • 所有功能测试通过

  • 已在浏览器测试各功能

  • 已告知用户主密码和邮箱地址

  • 已备份数据库文件


快速修复

验证码发送失败

  1. 检查 PHP OpenSSL 扩展:php -m | grep openssl

  2. 检查 465 端口:telnet smtp.qq.com 465

  3. 验证授权码:使用邮件客户端测试登录

  4. 查看 PHP 错误日志

数据库无法写入

chmod 666 /path/to/api/vault.db
chmod 777 /path/to/api/

PHP 500 错误

  1. 检查 PHP-FPM 日志:/var/log/php-fpm/error.log

  2. 检查 Nginx 错误日志:/var/log/nginx/error.log

  3. 临时开启 PHP 错误显示:

ini_set('display_errors', 1);
error_reporting(E_ALL);

联系支持与项目文件

项目文件:

如有问题或建议,请联系开发者。


林酱私人密码库 - 让密码管理更安全、更便捷

评论交流

文章目录