type
status
date
slug
summary
tags
category
icon
password
密码管理器我很久之前使用过LastPass,后来因为LastPass被渗透存在安全问题,就不再继续使用,转而使用Microsoft Edge浏览器自带的密码管理器,在功能上基本满足需求,但是存在一个很致命的问题,就是我浏览器完全被绑定在了Microsoft Edge,包括PC和Android,为了密码管理而必须使用Microsoft Edge,这也是我萌生了使用Bitwarden的最核心原因。这篇文章主要介绍在Windows环境下,通过使用Docker搭建本地Bitwarden服务器Vaultwarden的方法,以及通过Cloudflare Tunnel实现内网穿透,提供给移动端设备在外使用。
📝 Windows环境下Docker安装
我选择Windows系统原因不是因为Windows系统在实现这些服务管理上有多好(相反,Windows下的Docker Desktop一直在被吐槽难用),完全是因为我的PVE小主机内存捉襟见肘,暂时没有资源用于Docker服务和容器的维护,所以暂时先将Docker放在这台Windows主机上,在之后对PVE的小主机进行内存扩容后,再进行迁移。
安装方法
前往Windows | Docker Docs 下载Docker的安装程序,下载完成后打开进行安装。需要注意的是,Windows系统需要打开WSL或者Hyper-V功能后才可正常进行安装,原因在于Docker需要使用WSL(Windows Subsystem Linux)或者Hyper-V的虚拟化技术。在这里,建议使用WSL作为虚拟化后端。
Windows开启WSL或Hyper-V的方法
以Windows 11为例,打开控制面板,选择
程序
→ 启用或关闭Windows功能

如果准备使用Hyper-V作为虚拟化后端,则勾选
Hyper-V
如果准备使用WSL作为虚拟化后端,则勾选
适用于Linux的Windows子系统
📝 Vaultwarden安装及配置
为什么选择Vaultwarden
Vaultwarden(原名 Bitwarden_RS)是一个开源的密码管理服务器,它是官方密码管理工具Bitwarden的轻量级替代品,专为自托管(Self-hosted)环境设计,兼容Bitwarden的官方客户端(Windows/macOS/Linux/iOS/Android)及浏览器插件。在大部分情况下,512MB RAM足够Vaultwarden使用,同时磁盘空间算上Docker本身,也只需要不到2GB,完美适配于在家庭网络环境下部署在软路由或者Nas上。
作为对比,Bitwarden官方的服务器推荐配置如下:
System specifications | Minimum | Recommended |
Processor | x64, 1.4GHz | x64, 2GHz dual core |
Memory | 2GB RAM | 4GB RAM |
Storage | 12GB | 25GB |
Docker Version | Engine 19+ and Compose 1.24+ | Engine 19+ and Compose 1.24+ |
拉取Vaultwarden镜像
使用Docker Pull命令进行镜像的拉取。如果由于国内网络原因无法拉取,可以参考《Docker国内加速镜像》使用加速镜像或使用科学上网服务。
启动Vaultwarden容器
终端命令行模式
Windows系统下,由于转义符以及路径格式问题,无法使用Vaultwarden官方在文档中所提供的
docker run
命令,以下是我根据Windows系统的格式所修改的命令,通过PowerShell执行:其中:
--env=DOMAIN=
后面填写你准备使用的域名,域名之后会通过Cloudflare Tunnel使用内网穿透,从而在外也可以正常使用Bitwarden。
--volume=
后面填写你挂载磁盘目录的路径,例如我的是F:\Docker\vaultwarden
,替换这部分即可,不要删除:/data/
-p
即端口映射,如果你需要修改为高位端口或其他自定义端口,则格式为端口:80
,例如你想要使用10086端口,那么就是10086:80
Docker Desktop图形界面模式
除了使用上述命令行模式启动Vaultwarden容器,也可以通过Docker Desktop所提供的GUI模式进行容器的启动。
打开Docker Desktop,点击左侧Images,找到Vaultwarden的镜像(vaultwarden/server),点击后面的开始按钮:

点击Optional Settings:

- Container name:填写容器名称,如果不填写,那么会随机生成一个。
- Host port:填写你想要使用的端口
- Host path:点击后面的
···
,选择你想要使用的挂载地址
- Container path:填写
/data/
- Variable:填写
DOMAIN
,注意大小写
- Value:填写你准备使用的域名
点击Run启动容器。
这时候,使用浏览器访问
局域网IP:映射端口
即可打开Vaultwarden的页面,首次进入需要新建一个账户并配置master password。📝 Cloudflare Tunnel安装及实现内网穿透
我们已经完成了Vaultwarden本地的部署工作,那么在非局域网环境下,如何才能使用Vaultwarden进行密码填充和管理?这时候就可以请出赛博大善人Cloudflare,利用Zero Trust提供的Tunnel服务,进行内网穿透。
首先需要你有一个域名,且域名托管于Cloudflare,同时已经绑定付款卡。
登录Cloudflare账号之后,点击左侧菜单的Zero Trust,然后选择Networks → Tunnels,点击Create a tunnel。

Tunnel Type选择Cloudflared。

并为你的Tunnel填写一个响亮的名字,例如vaultwarden或者bitwarden等等,然后点击Save Tunnel进入下一步。在Install and run a connector中,我们使用Docker模式,原因在于既然开启一个Docker容器也是开,那多开一个Docker容器也是开,还不用额外安装软件。
Choose your environment中选择Docker,然后下面会出现容器运行的代码,在Docker的Terminal中,或者直接在Powershell中,或者Terminal终端中,或者其他你喜欢使用的终端里面输入复制的代码:
即可启动Cloudflare Tunnel的容器。

然后在Route Traffic中,进行路由信息的完善以及域名的绑定。
- Subdomain:填写你要使用的二级域名前缀
- Domain:选择你托管在Cloudflare的域名
- Path:空
- Type:选择
HTTP
- URL:填写
局域网IP:映射的端口
,例如我的机器是10.0.0.10
,端口为80
,那么就填写10.0.0.10:80
。切记不要使用localhost
或者127.0.0.1
点击Save Tunnel即可完成创建工作,现在访问你配置的域名,即可打开Vaultwarden的页面。
📝 使用Onedrive进行Vaultwarden备份
前面我们在启动Vaultwarden容器的时候配置了挂载的目录,为了避免密码库丢失以及后续的迁移需要,我们可以使用Onedrive进行备份同步。我没有选择对data目录再次压缩并设置压缩密码的方式,目前仅通过mklink进行软链接,直接同步备份挂载的目录,命令如下:
这个命令需要在CMD模式下使用,Powershell无法使用。
%CD%\Onedrive\bak\Warden
为同步到Onedrive下的bak下的warden目录,可根据自己需求进行修改,F:\Docker\vaultwarden
为vaultwarden挂载的目录。📝 关于资源使用
目前在启动Vaultwarden容器和Tunnel容器的情况下,算上Docker本身的内存占用为1.2G左右,容器占用在80M左右,磁盘占用1.83G,CPU占用忽略不计,整体小于Bitwarden服务端所要求的2G内存,更为轻量和节省资源。
📝 一些高级用法
禁止新用户注册
📎 参考文章
有关Vaultwarden安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!