从零搭建自己的密码管理器-Vaultwarden
Bitwarden是非常流行的密码管理器,Vaultwarden是使用Rust语言编写的开源的Bitwarden服务端API的替代实现。本文将利用本地树莓派Docker部署Vaultwarden+Cloudflared实现任意地点密码同步。
1.安装Docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get update
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
2.配置Docker源
由于某些问题,国内拉取镜像有点问题,可创建/etc/docker/daemon.json文件写入如下内容:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://noohub.ru",
]
}
重启docker使其生效
systemctl daemon-reload
systemctl restart docker
或者手动添加代理
mkdir /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/http-proxy.conf
写入(代理地址填自己的)
[Service]
Environment="HTTP_PROXY=http://192.168.3.180:1080"
Environment="HTTPS_PROXY=http://192.168.3.180:1080"
Environment="NO_PROXY=localhost,127.0.0.1"
重启Docker生效
systemctl daemon-reload
systemctl restart docker
3.配置Cloudflared
打开https://dash.cloudflare.com/ 创建cloudflare账号,根据Add a site | Cloudflare Fundamentals docs和Change your domain nameservers to Cloudflare添加域名修改NS记录。
在首页点击Zero Trust→Networks→Tunnels→Create Tunnel→Cloudflared,然后Next
起一个名字,save tunnel
点击Docker,点击复制按钮
粘贴到命令行,不用执行,将看到eyJh开头的一大长疮字符,执行echo -n 'eyJhIjo......' | base64 -d
省略号自己补全。将看到a、t、s和它们的键值保存备用。
4.配置Docker Compose配置文件
mkdir vault && cd vault
vim compose.yml
写入
启动容器
docker compose up -d && docker compose logs -f
#会看到启动日志,如果需要停止可使用
docker compose down
大功告成。 细心的朋友可能会发现compose.yml文件里写了ports映射8080端口给主机,这个是做什么用的呢?这个是给宿主机反向代理用的,家里的机器自签名HTTPS证书通过openresty反向代理访问速度更快,不用通过外部网络,cloudflared出问题了也不影响。
参考链接:
https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/configure-tunnels/local-management/configuration-file/