AI时代,每个人都该有自己的小金库——手把手教你搭建专属密码管理器

作者:

,

你有没有过这种经历?

某个网站要登录,试了三遍密码都不对,最后点了”忘记密码”,发现新密码要求”包含大小写字母、数字和特殊字符,长度不少于12位”——然后你设完转头又忘了。

或者更惨的:多个网站用同一个密码,其中一个被拖库了,其他账号也跟着遭殃。

如果你觉得”我的账号不值钱,没人会黑我”,那我告诉你一个事实:AI时代,自动化攻击的成本已经低到几乎为零。过去黑客要花时间研究你的密码,现在一个脚本可以每秒尝试几百万次组合。你的”不值钱”的账号,只是他们批量扫库的其中一行数据而已。

今天这篇文章,教你用不到30分钟,搭建一个属于自己的密码管理器——你的数字小金库。


为什么是”自己的”?Bitwarden 和 Vaultwarden 是什么关系?

市面上密码管理器很多:1Password、LastPass、iCloud钥匙串……但它们有一个共同的问题:你的密码存在别人的服务器上

2022年 LastPass 被黑,用户加密的密码库被窃取。2023年这些数据开始被暴力破解,很多人的加密货币被盗。把最重要的钥匙交给别人保管,终究不踏实。

Bitwarden 是目前最受欢迎的开源密码管理器,免费、跨平台、功能强大。但它的免费版有一些限制,而且数据仍然存在 Bitwarden 的服务器上。

Vaultwarden 是 Bitwarden 的第三方开源兼容实现——你可以理解为”民间版Bitwarden”。它完全兼容 Bitwarden 的所有客户端(浏览器插件、手机App、桌面App),但你可以把数据存在自己的服务器上

打个比方:

  • Bitwarden = 银行保险箱(好用,但钥匙在银行手里)
  • Vaultwarden = 家里的保险箱(钥匙在你手里,安全性你自己负责)
  • 🔐 数据完全在自己手里,不依赖任何第三方
  • 💰 完全免费,没有付费功能限制
  • 📱 兼容 Bitwarden 全平台客户端
  • 🐳 Docker 一键部署,维护简单
  • 🔧 开源透明,代码经得起审查
  • 一台云服务器(最低配置就够,1核1G即可)
  • 或者家里的NAS、树莓派也行
  • 已安装 Docker 和 Docker Compose
  • 一个域名(用于HTTPS访问)
  • 一个邮箱(用于申请SSL证书和SMTP通知)
  • Ubuntu 24.04 LTS
  • Docker 24.0.2
  • Docker Compose v2.18.1
  • Apache 作为反向代理
  • `DOMAIN`:你的域名,必须是HTTPS
  • `SIGNUPS_ALLOWED=false`:关闭公开注册(安全起见)
  • `ADMIN_TOKEN`:管理员后台的登录Token,后面会讲怎么生成
  • `WEBSOCKET_ENABLED`:启用WebSocket推送通知
  • `-p 8080:80`:容器端口80映射到主机端口8080
  • 邮箱验证邮件
  • 两步验证码
  • 紧急访问通知
  • 登录 mail.qq.com
  • 设置 → 账户
  • 找到「POP3/SMTP/IMAP服务」
  • 开启「POP3/SMTP服务」
  • 按提示发短信验证
  • 获取16位授权码
  • 下载 Google Authenticator 或 Authy
  • 登录 Vaultwarden → Settings → Security → Two-step login
  • 选择 Authenticator app → Manage
  • 扫描二维码 → 输入验证码 → 启用
  • 一定要保存恢复代码!
  • Settings → Security → Two-step login → Email
  • 输入邮箱 → 发送验证码 → 启用
  • 确认授权码正确(不是邮箱密码)
  • 确认已开启 POP3/SMTP 服务
  • 检查端口465是否被防火墙拦截
  • ✅ Docker 容器部署
  • ✅ DNS 域名解析
  • ✅ Apache 反向代理
  • ✅ HTTPS 证书(自动续期)
  • ✅ Argon2 安全哈希
  • ✅ SMTP 邮件服务
  • ✅ 两步验证

选择 Vaultwarden 的理由:


准备工作

在开始之前,你需要准备:

硬件要求:

软件要求:

我用的环境:


第一步:部署 Vaultwarden Docker 容器

Vaultwarden 是一个 Docker 镜像,部署非常简单。

创建数据目录:


sudo mkdir -p /opt/vaultwarden/data

启动容器:


sudo docker run -d 
  --name vaultwarden 
  --restart unless-stopped 
  -e DOMAIN=https://vault.你的域名.com 
  -e SIGNUPS_ALLOWED=false 
  -e ADMIN_TOKEN='你的Argon2哈希Token' 
  -e WEBSOCKET_ENABLED=true 
  -e LOG_FILE=/data/vaultwarden.log 
  -e LOG_LEVEL=warn 
  -e EXTENDED_LOGGING=true 
  -v /opt/vaultwarden/data:/data 
  -p 8080:80 
  vaultwarden/server:latest

参数说明:

验证容器运行:


sudo docker ps --filter name=vaultwarden
curl -s http://localhost:8080 | head -5

⚠️ 如果 Docker Hub 拉取镜像超时,可以使用国内镜像源:

“`bash

sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vaultwarden/server:latest

sudo docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vaultwarden/server:latest vaultwarden/server:latest

“`


第二步:配置 DNS 和域名

在你的域名服务商(阿里云、腾讯云、Cloudflare等)添加一条 A 记录:

主机记录 记录类型 记录值
vault A 你的服务器IP

验证 DNS 是否生效:


dig +short vault.你的域名.com
# 应该返回你的服务器IP

第三步:配置 Apache 反向代理 + HTTPS

启用必要的 Apache 模块:


sudo a2enmod proxy proxy_http proxy_wstunnel rewrite ssl headers
sudo systemctl restart apache2

创建 HTTP 配置(用于 certbot 验证):


sudo tee /etc/apache2/sites-available/vaultwarden.conf << 'EOF'
<VirtualHost *:80>
    ServerName vault.你的域名.com
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/vaultwarden-error.log
    CustomLog ${APACHE_LOG_DIR}/vaultwarden-access.log combined
</VirtualHost>
EOF

sudo a2ensite vaultwarden.conf
sudo systemctl restart apache2

申请 Let’s Encrypt SSL 证书:


sudo certbot --apache 
  -d vault.你的域名.com 
  --non-interactive 
  --agree-tos 
  --email your@email.com 
  --redirect

配置完整的 HTTPS 反向代理:


sudo tee /etc/apache2/sites-available/vaultwarden-le-ssl.conf << 'EOF'
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName vault.你的域名.com
    
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/vault.你的域名.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/vault.你的域名.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    
    Header always set X-Frame-Options SAMEORIGIN
    Header always set X-Content-Type-Options nosniff
    
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
    
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /notifications/hub ws://127.0.0.1:3012/ [P,L]
    
    ErrorLog ${APACHE_LOG_DIR}/vaultwarden-error.log
    CustomLog ${APACHE_LOG_DIR}/vaultwarden-access.log combined
</VirtualHost>
</IfModule>
EOF

sudo apache2ctl configtest
sudo systemctl restart apache2

验证 HTTPS 访问:


curl -sI https://vault.你的域名.com | head -3
# 应该返回 HTTP/1.1 200 OK

💡 Let’s Encrypt 证书有效期90天,certbot 会自动续期。可以用 `sudo certbot renew –dry-run` 测试续期是否正常。


第四步:生成安全的管理员 Token

Vaultwarden 的管理员后台需要一个 Token 来登录。为了安全,我们使用 Argon2 哈希。

安装 argon2 工具:


sudo apt-get install -y argon2

生成随机 Token 和 Argon2 哈希:


# 生成随机Token
NEW_TOKEN=$(openssl rand -base64 32)
echo "你的Token(请保存好): $NEW_TOKEN"

# 生成Argon2哈希
HASH=$(echo -n "$NEW_TOKEN" | 
  argon2 "$(openssl rand -base64 16)" 
  -id -m 16 -t 3 -p 4 -e)
echo "Argon2哈希: $HASH"

把哈希值填入容器的 ADMIN_TOKEN 环境变量中(单引号包裹,防止 $ 被转义)。


第五步:配置 SMTP 邮件服务

配置 SMTP 后,Vaultwarden 可以发送:

以 QQ 邮箱为例:

配置项
SMTP服务器 smtp.qq.com
端口 465
加密方式 SSL/TLS
用户名 你的QQ邮箱
密码 QQ邮箱SMTP授权码(不是QQ密码)

获取 QQ 邮箱授权码:

在容器环境变量中添加:


-e SMTP_HOST=smtp.qq.com 
-e SMTP_FROM=你的邮箱@qq.com 
-e SMTP_FROM_NAME=Vaultwarden 
-e SMTP_PORT=465 
-e SMTP_SECURITY=force_tls 
-e SMTP_USERNAME=你的邮箱@qq.com 
-e SMTP_PASSWORD=你的16位授权码 

第六步:开启两步验证(2FA)

强烈建议开启! 密码再强也不如多一层验证。

推荐使用 TOTP 验证器(最安全):

也可以用邮箱验证(方便但安全性稍低):


日常管理命令


# 查看容器状态
sudo docker ps --filter name=vaultwarden

# 查看日志
sudo docker logs vaultwarden --tail 50

# 重启容器
sudo docker restart vaultwarden

# 备份数据(建议定期备份)
sudo tar -czf vaultwarden-backup-$(date +%Y%m%d).tar.gz 
  /opt/vaultwarden/data

# 更新版本
sudo docker pull vaultwarden/server:latest
sudo docker stop vaultwarden && sudo docker rm vaultwarden
# 然后重新运行 docker run 命令

常见问题

Q:无法访问网站?


sudo docker ps --filter name=vaultwarden
sudo ss -tlnp | grep -E ':(80|443|8080) '
dig +short vault.你的域名.com

Q:邮件发送失败?

Q:忘了管理员Token?

重新生成一个,更新容器环境变量即可,数据不会丢失。


总结

部署清单:

整个过程不到30分钟,你就拥有了一个完全由自己掌控的密码管理器

在 AI 时代,安全意识比以往任何时候都重要。不要等到账号被盗才后悔——现在就开始,建好你的数字小金库。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注