简介
Bitwarden是一项免费的开源密码管理服务,可将敏感信息(例如网站凭据)存储在加密的保险库中。Bitwarden平台提供各种客户端应用程序,包括Web界面,桌面应用程序,浏览器扩展,移动应用程序和CLI。Bitwarden提供云托管服务,并能够在本地部署解决方案。
bitwarden_rs是用Rust编写的Bitwarden服务器API实现,与上游Bitwarden客户端兼容,非常适合自托管部署,在这种情况下运行官方资源密集型服务可能不理想。

安装
bitwarden_rs的作者推荐使用docker方式部署,如何安装docker就不赘述了。
首先在宿主机的mysql里为bitwarden_rs创建库bitwarden,用户bitwarden,密码为password,主机为docker的ip段172.17.0.%
拉取docker镜像后运行
docker pull bitwardenrs/server-mysql:latest docker run -d --name bitwarden --user 65534:65534 -e SIGNUPS_ALLOWED=true --restart=always -e ROCKET_PORT=1024 -v /bw-data/:/data/ -p 127.0.0.1:8080:1024 -e DATABASE_URL='mysql://bitwarden:password@172.17.0.1:3306/bitwarden' -e ENABLE_DB_WAL='false' bitwardenrs/server-mysql:latest
为了安全起见使用了nobody用户,由于nobody用户没有监听1024以下端口的权力所以使用了ROCKET_PORT。该容器使用了宿主机的8080端口,请视情况修改。
Nginx反向代理
示例配置如下
server {
listen 80;
listen [::]:80;
server_name your.domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /path/to/your/domain.crt;
ssl_certificate_key /path/to/your/domain.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_dhparam /path/to/your/dhparam;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
server_name your.domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
部署完成后访问你的域名注册用户,然后为了安全起见,关闭注册功能。
docker stop bitwarden docker rm bitwarden docker run -d --name bitwarden --user 65534:65534 -e SIGNUPS_ALLOWED=false --restart=always -e ROCKET_PORT=1024 -v /bw-data/:/data/ -p 127.0.0.1:8080:1024 -e DATABASE_URL='mysql://bitwarden:password@172.17.0.1:3306/bitwarden' -e ENABLE_DB_WAL='false' bitwardenrs/server-mysql:latest
常见问题
获取docker容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}'
或者
docker inspect
或者
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
获取宿主机IP
ip address show docker0
