docker安装Bitwarden如何反向代理 docker搭建bitwarden
因为bitwarden的氪金玩家才能使用双因子认证,恰好手上有个vps,搭建个bitwarden服务端来使用2fa ## 自建bitwarden vps比较垃圾,所以选用一个资源开销比较小的
因为bitwarden的氪金玩家才能使用双因子认证,恰好手上有个vps,搭建个bitwarden服务端来使用2fa
自建bitwarden
vps比较垃圾,所以选用一个资源开销比较小的服务端比较有必要,我这里选择的是 https:///mprasil/bitwarden_rs
这里采用 docker-compose 进行部署
version: '3' services: bitwarden: image: bitwardenrs/server:latest container_name: bitwarden restart: unless-stopped volumes: - ./bw-data:/data environment: - WEBSOCKET_ENABLED=true - SIGNUPS_ALLOWED=true - WEB_VAULT_ENABLED=true - ADMIN_TOKEN=xxxxxxxxxxxxxxxxxxxx ports: - "127.0.0.1:8889:80" - "127.0.0.1:8810:3012"其中的3012是websocket通知端口
- WEBSOCKET_ENABLED 代表启用 websocket
- SIGNUPS_ALLOWED 代表是否启用注册
- WEB_VAULT_ENABLED 代表是否启用web界面
- ADMIN_TOKEN 是管理界面的密码,用来启用管理界面,启用后可通过 [https://你的域名/admin](https://你的域名/admin) 进行访问
然后我们需要创建一个反向代理,这里我使用的是 nginx,下面给出 nginx 配置
upstream bitwarden-default { server 127.0.0.1:8889; } upstream bitwarden-ws { server 127.0.0.1:8810; } server { listen 80; listen [::]:80; server_name bitwarden.example.tld; client_max_body_size 128M; # reverse proxy location / { 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://bitwarden-default; } location /notifications/hub/negotiate { 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://bitwarden-default; } location /notifications/hub { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://bitwarden-ws; } }你现在可以访问域名看看界面了
当然,现在还只是http,http协议下bitwarden是不允许进行一些密码操作的,你可以配置证书接入ssl,或者使用cloudflare接入ssl
注册完自己的用户后建议修改上面的 SIGNUPS_ALLOWED 然后重启docker关闭注册。
然后你可以使用bitwarden的客户端了
创建挂载目录备份数据
密码数据最好备份一下,要是哪天vps坏了就gg了
bitwarden_rs的数据库是sqlite3,直接打包压缩备份,然后同步到坚果云
坚果云配置webdav
首先我们在坚果云后端创建一个备份应用,点击进入 账户信息 - 安全选项
然后点击下面的添加应用,随便填写一个名字,然后复制生成的应用密码
然后在坚果云根目录下创建一个目录名为 bitwarden_backup 作为我们后续的同步文件夹
服务器挂载webdav
首先安装rclone,为什么使用rclone而不是davfs2,主要是因为davfs2不支持 vfs 缓存(将直接从远程读取并直接写入远程),对于后续的同步会有比较大的问题(主要是同步程序对于文件的操作)
curl https://rclone.org/ | sudo bash挂载需要使用fuse,所以需要安装一下
apt install fuse然后使用 rclone config 配置webdav
然后创建目录进行挂载
mkdir /mnt/rclone_bitwarden_backup #挂载 #rclone mount <网盘名称:网盘路径> <本地路径> [参数] --daemon #取消挂载 #fusermount -qzu <本地路径> rclone mount jianguoyun:/bitwarden_backup /mnt/rclone_bitwarden_backup --allow-non-empty --daemon --vfs-cache-mode full --log-file /var/log/rclone_bitwarden_backup.lo上面的是手动挂载,如果你希望开机自动挂载可以查看 Rclone 使用教程 - 挂载 OneDrive、Google Drive 等网盘(Linux)
监听文件变化进行同步
其实也可以直接将上面的 docker-compose 挂载目录设置到webdav的挂载目录上去,但是icon_cache这个目录下很多文件,调用webdav次数过多会触发坚果云风控,如果不在意的话也可以采取该方案
我这里采用 inotify 进行监控同步的方案
首先安装 rsync和inotifywait
apt install -y rsync inotify-tools然后监控文件变更,同步到webdav的挂载目录
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -e modify,create,delete,move /root/bitwarden_rs/bw-data | while read -r event; do rsync -aHv --exclude icon_cache /root/bitwarden_rs/bw-data/ /mnt/rclone_bitwarden_backup/; done注意该命令最好使用tmux之类的程序来启动,因为需要跑在后台
后记
发现监听变化就同步,坚果云的上传流量用得太猛了,所以还是采用了crontab定时同步的方案
zabbix 6 server docker 安装部署 docker搭建bitwarden
nginx 反向代理mysql及redis(TCP反向代理) 反向代理多个服务器Nginx 反向代理
docker搭建php环境,docker安装php插件docker php环境搭建
正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy反向代理与正向代理
什么是正向代理(forward proxy)和反向代理(reverse proxy)反向代理与正向代理
Docker的三种网络代理配置:dockerd pull镜像代理;容器docker run网络代理;docker build代理--build-argdocker pull 代理
