摘要
还在为记住无数个复杂密码而烦恼吗?还在为商业密码管理器昂贵的订阅费和安全隐患而担忧吗?本文将通过保姆级的图文教程,教你使用 Docker 部署轻量级的 Vaultwarden 服务,搭建一个完全属于你自己的、功能媲美付费版的 Bitwarden 密码库。
前言
在上一篇文章《无需公网IP,零成本发布内网服务:Cloudflare Tunnels 保姆级教程》中,我们解决了从外网访问家庭内网服务的难题。那么,有什么服务是值得我们如此折腾,并托付核心数据的呢?密码管理器,绝对是排在第一位的答案。
现代互联网生活中,我们每个人都拥有数十甚至上百个账号。如果所有网站都用同一个简单密码,无异于“裸奔”;如果每个网站都用不同的复杂密码,大脑又根本记不住。
虽然市面上有 1Password、LastPass 等优秀的商业密码管理器,但它们通常价格不菲,而且我们也必须信任这些公司能100%保护好我们的数据(LastPass 近年的安全事故让人心有余悸)。
那么,有没有一种方案,既能拥有商业软件的便捷体验,又能将数据牢牢掌握在自己手中,还不用花钱呢?
答案是肯定的。今天的主角—— Vaultwarden,一个用 Rust 编写的、与 Bitwarden 官方客户端完全兼容的轻量级服务端。它能让你在自己的服务器上,用极低的资源消耗,搭建起一个解锁了“全部高级功能”的密码库。
为什么选择 Vaultwarden?
轻量高效:相比官方服务端,资源占用极低,一台入门级VPS甚至树莓派都能流畅运行。
完全兼容:完美支持所有 Bitwarden 官方客户端(浏览器插件、桌面应用、手机App)。
功能强大:免费解锁 Bitwarden 的所有高级功能,如 TOTP 两步验证、密码附件、组织共享等。
数据私有:你的所有密码数据都存储在你自己的服务器上,安全可控。
社区活跃:作为最热门的自建项目之一,它拥有庞大的社区和持续的更新。
准备工作
一台已经安装好 Docker 和 Docker Compose 的服务器。
(强烈推荐) 一个你自己的域名,并已按照上一篇教程配置好 Cloudflare Tunnels。这将为你的密码库提供至关重要的 HTTPS 加密。
部署步骤
第一步:创建项目目录
通过 SSH 连接到你的服务器,创建一个 vaultwarden 目录用于存放数据和配置。
mkdir vaultwarden cd vaultwarden
第二步:编写 docker-compose.yml
在 vaultwarden 目录下,创建一个 docker-compose.yml 文件,并粘贴以下内容。这是整个部署过程的核心。
# docker-compose.yml
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
volumes:
# 将容器的 /data 目录(存放所有数据)挂载到宿主机的 ./vw-data 目录
- ./vw-data:/data
ports:
# 将容器的 80 端口映射到宿主机的 8080 端口
# 注意:这里的 8080 只是为了本地访问,最终我们会通过反向代理或 Tunnel 用 443(HTTPS) 访问
- 8080:80
environment:
# 开启注册功能,首次部署必须为 true
# 注册完自己的账号后,强烈建议改为 false
SIGNUPS_ALLOWED: 'true'
# 设置管理员后台的访问令牌 (Token)
# 请务必修改为一个非常复杂的随机字符串!
ADMIN_TOKEN: 'a_very_long_and_secure_random_string'
重要配置说明:
volumes: 我们将所有重要数据(用户、密码、配置)都保存在了宿主机的 ./vw-data 目录中,方便备份和迁移。
SIGNUPS_ALLOWED: true 表示允许任何人注册。请在自己和家人注册完毕后,立刻将此项改为 false 并重启容器,防止陌生人注册。
ADMIN_TOKEN: 这是你进入后台管理页面的“超级密码”。请务必替换成一个足够长、足够复杂的随机字符串。你可以用 openssl rand -base64 48 命令生成一个。
第三步:启动服务
保存好配置文件后,在当前目录运行命令启动容器:
docker-compose up -d
服务启动后,你可以通过 http://<你的服务器IP>:8080 来访问 Vaultwarden 的 Web 界面了。
配置与使用
1. 创建账号
访问 http://<你的服务器IP>:8080,点击 “创建账户”,填写你的邮箱、主密码等信息。主密码是你整个密码库的钥匙,一定要设置得足够复杂并牢记,一旦丢失无法找回!
2. (安全操作) 禁止新用户注册
创建完你需要的账号后,立即编辑 docker-compose.yml 文件,将 SIGNUPS_ALLOWED 的值改为 false。
...
environment:
SIGNUPS_ALLOWED: 'false'
...
然后执行 docker-compose up -d 重启容器使配置生效。这样,你的密码库就“关上门”了。
3. 访问后台管理页面
你可以通过 http://<你的服务器IP>:8080/admin 访问管理后台,登录时需要输入你设置的 ADMIN_TOKEN。在这里,你可以查看所有用户、进行一些基础配置等。
4. 配置客户端(最关键的一步)
现在,你可以在浏览器、电脑或手机上下载任意一个 Bitwarden 官方客户端。
在登录界面,不要直接输入账号密码。找到设置或登录选项(通常是一个齿轮⚙️图标),点击它,在 “自建服务器” 或 “Server URL” 选项中,填入你的服务地址。
如果你还没配置域名,暂时可以填 http://<你的服务器IP>:8080。
如果你已经配置好域名(强烈推荐),请填 https://vault.yourdomain.com (你的域名)。
设置好服务器地址后,再返回登录页面,用你刚刚注册的账号和主密码登录即可。现在,你所有设备上的 Bitwarden 客户端都会与你自己的服务器进行同步了。
进阶:配置域名和 HTTPS
为了安全,也为了手机 App 能够正常使用,必须启用 HTTPS。
最佳方案
使用 Cloudflare Tunnels (已在上一篇教程实现)
这是最简单、最安全的方法:
登录 Cloudflare Zero Trust 后台,进入 Access -> Tunnels。
选择你之前创建的 Tunnel,点击 Configure。
选择 Public Hostnames 标签页,点击 Add a public hostname。
Subdomain: vault (或其他你喜欢的名字)
Domain: yourdomain.com
Service Type: HTTP
URL: http://localhost:8080 (因为 cloudflared 容器和 vaultwarden 容器在同一个 Docker 网络里,用 localhost 或者内网IP 172.x.x.x 均可)
保存即可。
现在,你就可以通过 https://vault.yourdomain.com 访问你的密码库了。这个地址也是你应该在客户端里设置的最终地址。
总结
恭喜你!你现在拥有了一个属于自己的、功能完整的私人密码库。它不仅能帮你养成良好的密码使用习惯,更将数字生活中最核心的资产——身份凭证——牢牢地掌握在了自己手中。
从现在开始,为每个网站设置一个独一无二的超长随机密码吧,你只需要记住一个主密码就够了。这,就是“折腾”带来的自由与安心。




最新评论