Bitwarden是一款開源的密碼管理器,Ivon主要用它在瀏覽器和手機上自動填入密碼。並用它紀錄信用卡號碼、狗窩住址、還原金鑰、小祕密等等資訊。
用Bitwarden免費版方案許久,資料都是存在官方伺服器,我想得準備一個備案,免得Bitwarden公司日後開始作惡。
Bitwarden是開源專案,從客戶端到伺服端都是可以自架的。我們並沒有說一定要用Bitwarden公司官方的伺服器,可以自己架一個。
Bitwarden客戶端我會繼續沿用,接下來要做的是自架一個相容Bitwarden的伺服器,將資料同步過去。
官方維護的伺服器在這裡:Bitwarden infrastructure,用C#寫成,可是部署指示寫的有點複雜,不知道為什麼都用Docker了還要用指令稿啟動~大概是為企業用戶準備的吧。
我看了一些教學後,發現官方伺服器可以用「Vaultwarden」取代。用Rust寫成,減少原專案的複雜度。相容Bitwarden的API。
雖是非官方專案,不過Vaultwarden其中一個開發者有被Bitwarden公司僱用,允許在業餘時間貢獻專案。
考慮到我只是要簡單的同步密碼,我不追求複雜的Bitwarden企業版功能。這些內建的功能就夠用了~
1. 準備SSL憑證#
為了有效保護密碼,給Vaultwarden伺服器上SSL是必須的。
Vaultwarden在瀏覽器有用到Web Crypto API,會需要HTTS連線,否則網頁會無法載入。
最好準備一個域名,方便從外部存取。
如果使用內網穿透軟體的話,我用Tailscale Serve或者Cloudflare Tunnel達成HTTPS效果。
可以額外加上Nginx的反向代理。
2. 用Docker部署Valutwarden#
mkdir -p ~/vaultwarden/
cd ~/vaultwarden/
vim docker-compose.yml
- 填入以下內容。
DOMAIN就填寫你的域名,我是使用子域名方便辨識Vaultwarden所在的網址。127.0.0.1是僅供http本機連線測試使用的。因為我有使用HTTPS,所以左邊的http將其去除,通訊埠可以設定成自己想要的樣子。
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
volumes:
- ./vw-data/:/data/
ports:
- 8000:80
- 啟動服務
docker compose up -d
3. 初始化Valutwarden#
註解:你不需要註冊Bitwarden官方伺服器的帳號也可以用Vaultwarden。
跟使用Bitwarden官方服務一樣,用電子郵件在自己的伺服器上註冊一個帳號,再設定主密碼即可。
4. 匯入現有Bitwarden帳號的密碼#
在Bitwarden Web vault,點工具 → 匯出 → 匯出.json密碼
然後在Valutwarden的工具 → 匯入,格式應當是完全相容的。
5. 瀏覽器擴充功能登入Valutwarden#
任一Bitwarden的客戶端都可以無縫切換到自架的Vaultwardern的伺服器。
以瀏覽器擴充功能為例,在登入面板,將網域切換到自架伺服器,輸入自己的域名,然後登入。