使用 Ubuntu
+ Docker
+ Vaultwarden
+ Tailscale
自建密碼管理器
先決條件
-
一臺運行
Ubuntu
系統的服務器。可以是云提供商的VPS
、家庭網絡中的樹莓派、或者Windows
電腦上的虛擬機等等 -
一個
Tailscale
賬戶。如果還沒有Tailscale
賬戶,可以通過此鏈接迅速創建一個,這里不再贅述
安裝 Tailscale
通過一鍵安裝命令在服務器上安裝 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
將 Tailscale
啟動
sudo tailscale up --advertise-exit-node --ssh --operator=<Username> --authkey=<Authkeys>
-
<Username>
替換成你在機器上的用戶名 -
<Authkeys>
替換成你的 驗證密鑰,需要在Admin console
的Settings
-Personal Settings
-Keys
-Auth keys
中 點擊Generate auth key...
創建
開啟端口轉發
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
存儲庫
# 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 包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
部署 vaultwarden
映像
創建數據目錄
mkdir /home/$USER/vw-data
啟動 vaultwarden
鏡像
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
tailscale serve --bg --set-path /vault 127.0.0.1:8080
這樣,便能從你的 Tailnet
上的設備使用瀏覽器訪問 https://<machinename>.<tailnet-name>.ts.net/vault/
,但需要將URL中的 <machinename>
和 <tailnet-name>
替換為您自己的機器名稱和 Tailnet
名稱
參考連接:
-
Manage passwords over your tailnet with vaultwarden
-
GitHub - dani-garcia/vaultwarden: Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs