自建 Bitwarden 服务器
好久没更新博客了,现在毕设答辩也结束了,终于有时间更新一下了。今天先写写 Bitwarden 服务器吧。
Bitwarden就不多介绍了,很有名的开源密码管理器。Bitwarden 官方是有免费版的,也基本够用,但是既然有台服务器,又有些担心安全问题,就自己搭建了一个。
Bitwarden 官方也提供部署脚本和 Dokcer 镜像,但是占的资源比较多,所以选择了使用比较多的第三方的vaultwarden(原名 bitwarden_rs),非常轻量。
我是用 Doceker Compose,没什么难度,简单分享下 compose 文件。
version: "3"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
- LOG_FILE=/data/bitwarden.log
- WEBSOCKET_ENABLED=true
- TZ=Asia/Shanghai
- LC_ALL=zh_CN.UTF-8
volumes:
- /var/bitwarden/data/:/data/
ports:
- 8880:80
- 3012:3012
然后用 Nginx 做了个反代,加了 SSL。
upstream vaultwarden-default { server 127.0.0.1:8880; }
upstream vaultwarden-ws { server 127.0.0.1:3012; }
server {
listen 80;
listen [::]:80;
server_name bitwarden.meancoder.xyz;
error_log /var/log/nginx/error.log;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bitwarden.meancoder.xyz;
error_log /var/log/nginx/error.log;
ssl_certificate /home/ubuntu/.keys/bitwarden.meancoder.xyz/Nginx/1_bitwarden.meancoder.xyz_bundle.crt;
ssl_certificate_key /home/ubuntu/.keys/bitwarden.meancoder.xyz/Nginx/2_bitwarden.meancoder.xyz.key;
location / {
proxy_pass http://vaultwarden-default;
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;
}
location /notifications/hub {
proxy_pass http://vaultwarden-ws;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://vaultwarden-default;
}
location /admin {
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/apache2/.htpasswd;
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://vaultwarden-default;
}
}
中间还遇到了一个小问题,刚搭建完的时候,想随便建个账号测试下,可是注册的时候一直报错,改了半天配置都不行。最后换了个复杂的密码就好了。