Deploy Bitwarden with Docker and Traefik - V2

我在几个月前写过一篇配置Bitwarden的文章,当时Traefik 2还没有global configuration,我也没有把Traefik和service的配置分开。我按照我现在的配置思路分别写了WordPress和NextCloud的教程,是时候把Bitwarden的教程也按照同样的配置方法整理一下,并且加上一些之前没说的内容。

跟以前一样,我还是先把docker-compose.yml文件发出来。

请注意,我的docker-compose.yml文件需要搭配我的Traefik配置才能使用。Traefik配置可以在这个页面获取。

视频已经更新,请点击阅读全文查看视频。

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
version: '3.7'

services:
bitwarden:
image: bitwardenrs/server:latest
container_name: bitwarden
restart: always
volumes:
- ./bw-data:/data
environment:
- ADMIN_TOKEN=
- WEBSOCKET_ENABLED=true
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
# Entry Point for https
- "traefik.http.routers.bitwarden-secure.entrypoints=websecure"
- "traefik.http.routers.bitwarden-secure.rule=Host(`bw.yourdomain`)"
- "traefik.http.routers.bitwarden-secure.service=bitwarden-service"
- "traefik.http.services.bitwarden-service.loadbalancer.server.port=80"
# websocket
- "traefik.http.routers.bitwarden-ws.entrypoints=websecure"
- "traefik.http.routers.bitwarden-ws.rule=Host(`bw.yourdomain`) && Path(`/notifications/hub`)"
- "traefik.http.middlewares.bitwarden-ws=bw-stripPrefix@file"
- "traefik.http.routers.bitwarden-ws.service=bitwarden-websocket"
- "traefik.http.services.bitwarden-websocket.loadbalancer.server.port=3012"

networks:
proxy:
external: true

可以看到这里我们为Websocket加了一个middleware bw-stripPrefix,这个middleware我们需要在动态配置文件dynamic.yml里面添加如下。

1
2
3
4
5
6
7
8
9
10
11
12
# Dynamic configuration
...
stsSeconds: 31536000

bw-stripPrefix:
stripPrefix:
prefixes:
- "/notifications/hub"
forceSlash: false

user-auth:
...

官方的wiki文档里面有有很多可以设置的东西。我的配置里面设置了WebSocketAdmin PageDisable registration以及Disable invitations。各位可以根据自己的需求参考官方文档来做设置。这里提一嘴Admin Page,因为Admin Page里面其实可以设置其他东西,比如说邮箱提醒。Admin Page设置起来非常简单,只需要添加一个ADMIN_TOKEN的环境变量即可。官方甚至给出来用OpenSSL生成密码的命令openssl rand -base64 48

如果跟着教程走应该很容易就能设置成功。接下来等我把视频做出来之后再过来更新视频版的演示。

感谢收看,咱们下次再见