AI时代,每个人都该有自己的小金库——手把手教你搭建专属密码管理器
你有没有过这种经历?
某个网站要登录,试了三遍密码都不对,最后点了”忘记密码”,发现新密码要求”包含大小写字母、数字和特殊字符,长度不少于12位”——然后你设完转头又忘了。
或者更惨的:多个网站用同一个密码,其中一个被拖库了,其他账号也跟着遭殃。
如果你觉得”我的账号不值钱,没人会黑我”,那我告诉你一个事实:AI时代,自动化攻击的成本已经低到几乎为零。过去黑客要花时间研究你的密码,现在一个脚本可以每秒尝试几百万次组合。你的”不值钱”的账号,只是他们批量扫库的其中一行数据而已。
今天这篇文章,教你用不到30分钟,搭建一个属于自己的密码管理器——你的数字小金库。
为什么是”自己的”?Bitwarden 和 Vaultwarden 是什么关系?
市面上密码管理器很多:1Password、LastPass、iCloud钥匙串……但它们有一个共同的问题:你的密码存在别人的服务器上。
2022年 LastPass 被黑,用户加密的密码库被窃取。2023年这些数据开始被暴力破解,很多人的加密货币被盗。把最重要的钥匙交给别人保管,终究不踏实。
Bitwarden 是目前最受欢迎的开源密码管理器,免费、跨平台、功能强大。但它的免费版有一些限制,而且数据仍然存在 Bitwarden 的服务器上。
Vaultwarden 是 Bitwarden 的第三方开源兼容实现——你可以理解为”民间版Bitwarden”。它完全兼容 Bitwarden 的所有客户端(浏览器插件、手机App、桌面App),但你可以把数据存在自己的服务器上。
打个比方:
选择 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 时代,安全意识比以往任何时候都重要。不要等到账号被盗才后悔——现在就开始,建好你的数字小金库。