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:[email protected]: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:[email protected]: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
暂无评论

发送评论 编辑评论

上一篇
下一篇