简介

Bitwarden
提供了类似KeePass类似的免费密码管理。其使用方式和LastPass非常相似。 同时Bitarden也提供了自设服务器的选项,官方提供了docker镜像,但太吃资源,对日常VPS不友好。

Vaultwarden(Bitwarden_rs)
是基于Rust实现的Bitwarden API的轻量级版本,同时数据库使用sqlite3,整体占用的资源小很多。

Letsencrypt
提供免费的https证书,用于提供https认证。本文不做介绍。

Nginx
是服务器软件,提供Vaultwarden需要的https到http的反向代理,本文不做介绍。

superviserd
是Linux下管理自启动的程序,可以指定特定用户启动进程,本文不做介绍

docker&docker-compose
vaultwarden提供的是docker镜像,本文不做介绍。

本文只介绍自行架设bitwarden服务器,搞不定的可以直接使用Bitwarden提供的服务。

安装与配置

Nginx的安装与配置
跳过,后面只介绍反向代理的模板

Letsencrypt安装与配置
跳过

基于官方文档,建立一个专门的user是最佳实践
Create a vaultwarden user:

sudo adduser vaultwarden

Set password for vaultwarden user (strong password):

sudo passwd vaultwarden

Create a docker group (if it doesn’t already exist):

sudo groupadd docker

Add the vaultwarden user to the docker group:

sudo usermod -aG docker vaultwarden

Create a vaultwarden directory:

sudo mkdir /opt/vaultwarden

Set permissions for the /opt/vaultwarden directory: 设置只有vaultwarden用户可以访问该文件夹

sudo chmod -R 700 /opt/vaultwarden

Set the bitwarden user ownership of the /opt/vaultwarden directory: 避免其他用户可以访问数据库

sudo chown -R vaultwarden:vaultwarden /opt/vaultwarden

安装docker和docker-compose

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update`
sudo apt-get install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

加入docker官方repo

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

验证安装是否成功

sudo docker run hello-world

docker-compose简化docker运行参数的管理脚本。

sudo curl -L "https://github.com/docker/compose/releases/download/$VER/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

将$VER替换成最新版本,比如v2.3.3

sudo chmod +x /usr/local/bin/docker-compose

验证

docker-compose --version

建立docker-compose配置
建立docker-compose.yml

version: "3"
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    ports:
    #web管理服务端口
        - "8080:80"
    #websocket服务端口,用于同步数据,必须开放
        - "3012:3012"
    volumes:
    #指定数据路径,可定制
      - ./vw-data:/data
    environment:
    #一直打开
      WEBSOCKET_ENABLED: "true"
    #首次注册用户需要true,设置完成后设为false
      SIGNUPS_ALLOWED: "true"
    #web管理开放,完成首次设置后可关闭(false)
      WEB_VAULT_ENABLED: "true"
    #ADMIN_TOKEN是web管理认证,一般不用
      #ADMIN_TOKEN: ""

docker-compose使用
将docker-compose放到合适的文件夹, 比如/opt/vaultwarden

引文前面配置了专门的bitwarden用户来运行vaultwarden docker。所以后面所有的docker操作默认都是由vaultwarden账户操作。

第一次运行,进入配置文件所在文件夹,运行docker-compose up -d

使用说明
启动

docker-compose up -d

重启

docker-compose restart

停止

docker-compose down

更新vaultwarden镜像,需要先停止

docker pull vaultwarden/server:latest

查看运行docker

docker ps

删除docker

docker rm docker-name

配置反向代理,Nginx

upstream bitwardenrs-default { server 127.0.0.1:8080; }
upstream bitwardenrs-ws { server 127.0.0.1:3012; }

server {
    listen $PORT ssl http2;
    server_name $DOMAIN;

    ssl_certificate $CERT1;
    ssl_certificate_key $CERT2;

    client_max_body_size 128M;
    access_log /var/log/nginx/vaultwarden_access.log;
    error_log /var/log/nginx/vaultwarden_error.log;

    location / {
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://bitwardenrs-default;
    }

    location /notifications/hub/negotiate {
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://bitwardenrs-default;
    }

    location /notifications/hub {
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $http_connection;
      proxy_set_header X-Real-IP $remote_addr;

      proxy_pass http://bitwardenrs-ws;
    }
}

需要将$PORT,$DOMAIN,$CERT1,$CERT2替换成实际信息。

建议将$PORT指定成非443的端口,增加被嗅探难度。

配置自启动

[program:vaultwarden]
#设置当前文件夹为前文设置的yml文件所在目录
directory=/opt/vaultwarden
#启动vaultwarden
command=docker-compose up -d

redirect_stderr=true
stdout_logfile=/var/log/supervisor/vaultwarden.log
stderr_logfile=/var/log/supervisor/vaultwarden_err.log
#指定用户
user=vaultwarden
autostart=true
autorestart=true
stopsignal=QUIT

备份数据库
https://github.com/jjlin/vaultwarden-backup 待定

[安全设置]
https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide
https://github.com/dani-garcia/vaultwarden/wiki/Fail2Ban-Setup

数据导入
从不同的服务商导入

使用方法及不同客户端设置
网络找教程


Published

Category

密码管理

Tags

Contact