简介
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