470 字
2 分钟
bitwarden_rs服务端搭建(使用MySQL数据库)

简介#

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
bitwarden_rs服务端搭建(使用MySQL数据库)
https://yushum.com/posts/bitwarden_rs服务端搭建使用mysql数据库/
作者
Yushum
发布于
2020-04-24
许可协议
CC BY-NC-SA 4.0