自建 Bitwarden 服务器

好久没更新博客了,现在毕设答辩也结束了,终于有时间更新一下了。今天先写写 Bitwarden 服务器吧。

Bitwarden就不多介绍了,很有名的开源密码管理器。Bitwarden 官方是有免费版的,也基本够用,但是既然有台服务器,又有些担心安全问题,就自己搭建了一个。

Bitwarden 官方也提供部署脚本和 Dokcer 镜像,但是占的资源比较多,所以选择了使用比较多的第三方的vaultwarden(原名 bitwarden_rs),非常轻量。

我是用 Doceker Compose,没什么难度,简单分享下 compose 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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;
}
}

中间还遇到了一个小问题,刚搭建完的时候,想随便建个账号测试下,可是注册的时候一直报错,改了半天配置都不行。最后换了个复杂的密码就好了。