LoginSignup
1
3

More than 3 years have passed since last update.

dockerでbitwarden_rsを構築する

Last updated at Posted at 2021-03-04

はじめに

とある有名なパスワードマネージャーが有料化し、マルチデバイスができなくなったため移行した。
本家のものではなく、有志によって開発された非公式のbitwarden_rsを利用する。

目的

bitwarden_rsを自サーバに構築する。

サーバ構成

何人で使用するかによるが、1~3人程度なら512MBで十分。
- OS:Ubuntu 20.08
- CPU:1コア
- メモリ:1GB

dockerインストール

詳細は省略。
コマンドのみ記載する。

リポジトリ設定

dockerをインストールするためにリポジトリを設定する。

command
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

dockerエンジンインストール

command
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

dockerインストール

command
sudo apt-get install docker-ce= docker-ce-cli= containerd.io
sudo apt-get install docker-ce=5:19.03.9~3-0~ubuntu-focal docker-ce-cli=5:19.03.9~3-0~ubuntu-focal containerd.io

ユーザ設定

sudoなしでdockerを触れるようにする。

command
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo systemctl restart docker
exit

自動起動設定

command
sudo service docker start
sudo systemctl enable docker

SSL証明書

以下のページを参考にしSSL証明書を作成する。

独自のルート認証局キー作成

パスワードを聞かれるので適当に入力する。

command
openssl genpkey -algorithm RSA -aes128 -out private-ca.key -outform PEM -pkeyopt rsa_keygen_bits:2048

ルートCA証明書作成

パスワードはルート認証局キーで設定したもの
Common Nameは「bitwarden_rs」とした。
それ以外はピリオド「.」を設定した。

command
openssl req -x509 -new -nodes -sha256 -days 3650 -key private-ca.key -out self-signed-ca-cert.crt

このコマンドを実行することで以下2ファイルが作成される。

  • private-ca.key
  • self-signed-ca-cert.crt

bitwardenサーバキー作成

以下のコマンドを実行し「bitwarden.key」を作成する。

command
openssl genpkey -algorithm RSA -out bitwarden.key -outform PEM -pkeyopt rsa_keygen_bits:2048

証明書要求ファイル作成

Common Name以外はピリオド「.」
Common NameはサーバのIPアドレスを設定する。

command
openssl req -new -key bitwarden.key -out bitwarden.csr

bitwarden.ext作成

command
nano bitwarden.ext

IP.1にサーバのIPアドレスを設定する。

bitwarden.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
IP.1 = <サーバのIPアドレス>

bitwarden証明書に署名

パスワードはルート認証局キーで設定したもの
このコマンドを定期的に実行して証明書を更新する必要がある。

command
openssl x509 -req -in bitwarden.csr -CA self-signed-ca-cert.crt -CAkey private-ca.key -CAcreateserial -out bitwarden.crt -days 365 -sha256 -extfile bitwarden.ext

証明書のシステムフォルダに移動

command
sudo mv bitwarden.crt bitwarden.key /etc/ssl/certs/

bitwarden起動

docker起動

ポートは8080としている。

command
docker run -d --name bitwarden --restart unless-stopped -v /bw-data:/data -v /etc/ssl/certs:/ssl -e ROCKET_TLS='{certs="/ssl/bitwarden.crt",key="/ssl/bitwarden.key"}' -e SIGNUPS_ALLOWED=true -p 8080:80 bitwardenrs/server:latest

証明書インポート

WinSCPなどを使用して上記「SSL証明書」で作成した「self-signed-ca-cert.crt」をサーバから取得する。
その後、クライアントPC側で信頼されたルート証明機関にインポートする。

起動確認

以下のURLで接続する。
証明書が正しくインストールされていれば証明書関連の警告は出ない。

URL
https://<サーバIP>:<ポート>/

アカウント作成後

dockerを停止&削除後、アカウント作成不可にして再起動する。

command
docker stop bitwarden
docker rm bitwarden
docker run -d --name bitwarden --restart unless-stopped -v /bw-data:/data -v /etc/ssl/certs:/ssl -e ROCKET_TLS='{certs="/ssl/bitwarden.crt",key="/ssl/bitwarden.key"}' -e SIGNUPS_ALLOWED=false -p 8080:80 bitwardenrs/server:latest

おわりに

上記の手順でbitwarden_rsを自サーバに構築できた。
次回はクライアント側の初期設定とbitwarden_rsの更新&バックアップを記載する。

参考サイト

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3