更新於 2023/02/05閱讀時間約 5 分鐘

自架Bitwarden全記錄

第一版:架設於私人伺服器

在〈一個密碼安全打天下-Bitwarden〉一文中提到,我決定自架Bitwarden。
一開始我將Bitwarden架設在我私人的伺服器上(實際上是一台10年前的舊桌機),除了要在Docker上佈建Bitwarden外,為了讓手機app能在區域網路外順利使用,還必須搭建Nginx以運行反向代理伺服器(reverse proxy)。此外,因為我的私人伺服器設在家中,而我家並沒有申請固定ip,因此必須另外申請DDNS服務以及替domain申請TLS憑證(Let's Encrypt),過程中吃了不少苦頭。
雖然最終我仍然成功搭建並運作順暢,但最近老桌機的風扇和硬碟開始不靈光,隨時有可能壽終正寢,為了降低維護伺服器的麻煩,我決定將Bitwarden移置到NAS上。

第二版:架設於NAS上

我有一台2020年所購置的Synology DS220+的NAS機器,根據Synology的官方說明,運行幾個Docker應該不成問題。
此外,由於Synology NAS所搭載的OS系統為基於Linux所客製的DSM,本身就有內建reverse proxy、DDNS和自動申請TLS憑證的功能,大幅降低佈建難度,基本上只需要在NAS上安裝Docker套件、部署Bitwarden的image、調整NAS的外部連線設定即可。
整體架設邏輯圖
整體架設邏輯圖

搭建流程

由於DSM系統為圖像化的操作介面,因此安裝docker套件非常容易,只需在套件中心選擇安裝docker套件即可。
安裝好docker套件後,即可開始佈建Bitwarden。網路上有些教學會先佈建Portainer,但DSM的docker套件已經有提供視覺化介面,Portainer只是方便管理docker而不是必須,是否佈建Portainer讀者可自行評估。
而我選擇直接按照以下教學直接佈建Bitwarden。

佈建Bitwarden
可能有讀者會疑惑教學文章中所佈建的是「Vaultwarden」而非Bitwarden。Vaultwarden也是開源軟體,是以Bitwarden為原型、用Rust語言重新改寫的版本,比原始的Bitwarden更加輕量化,但部分功能被捨棄(如SSO單點登入功能)。由於我並沒有多人同時使用或企業使用的需求,因此選擇輕量化的版本即可,也可節省NAS的資源耗用。
如果讀者未來有使用完整Bitwarden的需求,還是可以使用原始的Bitwarden的image,但NAS可能無法承受過大的使用需求,建議還是搭建於效能更強的伺服器上。

申請DDNS
前面提到,由於我的私人伺服器和NAS都是放置在家中,用的是中華電信的光世代網路,預設不會有固定的對外ip(浮動ip),因此若要從外網連入就必須借助DDNS的服務,讓我只需要在app上打上網址(domain name),而無需去記憶或查詢我家的ip位置。
關於如何申請DDNS,Synology官網上就有詳細的教學,讀者如果對此部分不熟悉,不妨採用Synology所提供的免費服務,只需在DSM的頁面上操作,即可獲得一組以「.synology.me」結尾的網址。
由於我的私人伺服器先前就有申請過其他服務提供商的DDNS服務(No-IP),因此我僅是將服務移轉至NAS管理(負責更新ip位置),未來打上此網址,就會連結到位在NAS中的Bitwarden docker。

申請TLS憑證 (Let's Encrypt)
由於Bitwarden預設需要有TLS憑證(也就是常見的https)才能登入,因此還需要幫剛剛申請的domain name申請一個憑證。Synology亦有提供教學頁面,讀者按步驟申請Let's Encrypt憑證即可。
若讀者家中的NAS是安裝在路由器後面的話,在申請前必須將80 port指向NAS,憑證才能順利申請。以我所使用的TP-Link路由器為例,可進到「進階-NAT導向-虛擬伺服器」頁籤,將外部80 port指向NAS的80 port。

設定reverse proxy
最後一步則是需要設定reverse proxy,好讓NAS知道剛剛申請的DDNS網址代表要前往Bitwarden docker。
設定的方式也很簡單,一樣依照Synology的教學步驟設定即可。
必須注意的是,目的地欄位為求便利,我直接填上localhost,也就是NAS本機的意思,但仍建議讀者直接填上NAS的ip位置。否則讀者根據前面的教學文設定Bitwarden的SMTP發信功能時,會發現外寄信件中的邀請網址也直接顯示localhost而造成連線不正常。

安裝Bitwarden App

Bitwarden支援目前所有作業系統及手機平台,只需要在官網或手機app商店即可找到免費的瀏覽器外掛或app。登入時於右上角齒輪圖示中輸入先前申請的DDNS網址後,再輸入帳號密碼即可。登入後也可再設定使用生物辨識功能登入。
Android版
iOS版

結語

透過NAS架設可以大幅降低申請DDNS、TLS憑證和設定reverse proxy的難度,且NAS的原始設計就是長時間不間斷地開機運行,Vaultwarden也不太耗用NAS的資源,我認為是現階段自架Bitwarden的最佳方案。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.