🔐Windows下使用Docker自建Vaultwarden密码管理器

2025-2-27|2025-3-3
Yawatasensei
Yawatasensei
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功能
notion image
如果准备使用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),点击后面的开始按钮:
notion image
点击Optional Settings:
notion image
  • 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。
notion image
Tunnel Type选择Cloudflared。
notion image
并为你的Tunnel填写一个响亮的名字,例如vaultwarden或者bitwarden等等,然后点击Save Tunnel进入下一步。在Install and run a connector中,我们使用Docker模式,原因在于既然开启一个Docker容器也是开,那多开一个Docker容器也是开,还不用额外安装软件。
Choose your environment中选择Docker,然后下面会出现容器运行的代码,在Docker的Terminal中,或者直接在Powershell中,或者Terminal终端中,或者其他你喜欢使用的终端里面输入复制的代码:
即可启动Cloudflare Tunnel的容器。
notion image
然后在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 许可协议。转载请注明出处!
MikroTik RouterOS 7.18更新内容Debian 10通过systemd-resolved修改DNS
Loading...