使用 Ubuntu
+ Docker
+ Vaultwarden
+ Tailscale
自建密码管理器
先决条件
-
一台运行
Ubuntu
系统的服务器。可以是云提供商的VPS
、家庭网络中的树莓派、或者Windows
电脑上的虚拟机等等 -
一个
Tailscale
账户。如果还没有Tailscale
账户,可以通过此链接迅速创建一个,这里不再赘述
安装 Tailscale
通过一键安装命令在服务器上安装 Tailscale
bash
curl -fsSL https://tailscale.com/install.sh | sh
将 Tailscale
启动
bash
sudo tailscale up --advertise-exit-node --ssh --operator=<Username> --authkey=<Authkeys>
-
<Username>
替换成你在机器上的用户名 -
<Authkeys>
替换成你的 验证密钥,需要在Admin console
的Settings
-Personal Settings
-Keys
-Auth keys
中 点击Generate auth key...
创建
开启端口转发
bash
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
安装 Docker
在新主机上首次安装 Docker
引擎之前,需要设置 Docker
存储库。可以参考官方手册
设置 Docker
的 apt
存储库
bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
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" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
安装 Docker 包
bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
部署 vaultwarden
映像
创建数据目录
bash
mkdir /home/$USER/vw-data
启动 vaultwarden
镜像
bash
sudo docker run -d --name vaultwarden -v /home/$USER/vw-data/:/data/ -p 127.0.0.1:8080:80 --restart unless-stopped vaultwarden/server:latest
-
将容器内的
80
端口绑定到服务器的8080
端口,下一步将会用到这个端口 -
使用
--restart unless-stopped
选项以确保服务器在遇到问题时继续运行 -
将主机上的
/home/$USER/vw-data/
目录挂载到容器内的/data/
目录,用于存储应用程序数据
使用 Tailscale
通过 HTTPS
将 vaultwarden
提供给 Tailnet
bash
tailscale serve --bg --set-path /vault 127.0.0.1:8080
这样,便能从你的 Tailnet
上的设备使用浏览器访问 https://<machinename>.<tailnet-name>.ts.net/vault/
,但需要将URL中的 <machinename>
和 <tailnet-name>
替换为您自己的机器名称和 Tailnet
名称
参考连接: