简介
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
使用方法及不同客户端设置
网络找教程