• 自己搭设开源密码管理工具 bitwarden


    简介

    Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登录凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。[6]Bitwarden提供云端托管服务,并支持自行部署解决方案。[7]

    官方服务器可以免费使用,但不包含高级服务。

    官网地址

    用 Rust 编写的 Bitwarden 服务器 API 的替代实现,与上游 Bitwarden 客户端兼容*,非常适合运行官方资源密集型服务可能不理想的自托管部署。
    在这里插入图片描述

    vaultwarden 自己搭设的好处:

    1. 密码仓库在自己手中更安全。
    2. 可以使用无限的账户、组织。
    3. 包含高级功能。

    官方仓库

    支持原创

    准备工作

    1. 在线云服务器
    2. 公网域名
    3. 一把时间

    云服务器

    我用的阿里云服务器 特价99一年
    学生特价服务器
    新老客户续费优惠服务器
    在这里插入图片描述
    地区选离自己近的
    我选择的是centos8

    配置安全组

    服务器通过端口与外界通信,安全组就是设置哪些端口可以通过。

    购买后进入控制台 ecs实例配置安全组
    在这里插入图片描述
    没有安全组就创建一个。
    点击管理规则,添加入方向规则 22 80 443 分别对应ssh http 和 https通信。其他的根据自己需求添加。出方向默认不用管。
    在这里插入图片描述

    设置密码

    我这边步骤是先关机,然后通过阿里云控制台修改密码,然后在启动实例。之后就可以通过ssh工具连接了。

    域名

    vaultwarden 需要通过https使用,所以需要一个域名。
    我是在阿里云买的域名。
    在这里插入图片描述
    搜索域名,然后选择购买。

    购买后需要实名和备案,阿里云一套流程走完。
    在这里插入图片描述

    备案通过后,设置dns解析。将域名解析到你的服务器公网ip。
    我这里用的cloudflare,需要先在域名提供商(阿里云 域名)设置为cloudflare的dns。

    picture 1

    然后在cloudflare设置域名解析。

    picture 0

    设置完之后继续后面的步骤。

    配置Vaultwarden

    安装docker

    安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    
    • 1
    • 2
    • 3

    使用以下命令来设置稳定的仓库。

    sudo yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1
    • 2
    • 3

    安装docker

    sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    • 1

    启动bitwarden 镜像

    docker run --rm -d --name vaultwarden -v /home/bitwarden/:/data/   -e LOG_FILE=/data/vaultwarden.log--restart unless-stopped -p 80:80 vaultwarden/server:latest
    
    • 1

    启动docker

    sudo systemctl start docker
    
    • 1

    配置反向代理

    我使用的caddy2

    安装caddy2

    dnf install 'dnf-command(copr)'
    dnf copr enable @caddy/caddy
    dnf install caddy
    
    • 1
    • 2
    • 3

    更改反向代理信息

    vi /etc/caddy/Caddyfile
    
    • 1

    参考下面的内容,配置反向代理。{{your email}}改成你的邮箱,www.exampledomain.com 改成你的域名。
    caddy 支持自动配置https 省去了我们的麻烦,只需要写上tls 邮箱即可

    www.exampledomain.com {
      log {
        level WARN
        output file "/home/caddy/www.exampledomain.com.log" {
          roll_size 10MB
          roll_keep 10
        }
      }
      log {
        level WARN
        output file "/home/caddy/www.exampledomain.com-error.log" {
          rotate_size 10
          rotate_age 14
          rotate_keep 5
          rotate_compress
        }
      }
      tls "{{your email}}"
      encode gzip
    
      handle_path "/vaultwarden/*" {
        reverse_proxy "0.0.0.0:80" {
          transport http {
            dial_timeout 2s
            response_header_timeout 30s
          }
          header_up "Host" "{upstream_hostport}"
          header_up "X-Real-IP" "{remote_host}"
        }
      }
    
      handle {
        respond "Nope!" 404
      }
    }
    
    • 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

    反向代理配置更新

    caddy reload --config /etc/caddy/Caddyfile
    
    • 1

    访问你的 域名/vaultwarden/ 就能看到登陆页面了🎉

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    高级配置

    定时备份

    vaultwarden中存储了我们的密码,以防万一,设置一个定时备份方便恢复。
    使用cron进行备份。/etc/cron.daily/ 目录下的脚本每天会自动执行一次。

    vi /etc/cron.daily/backup
    
    • 1

    输入文件内容

    #/bin/bash
    bitwardenPath=/home/bitwarden
    bitwardenBPath=你的备份目录
    bitwardenBTDir=${bitwardenBPath}/tmp/
    
    # bitwarden 备份
    mkdir -p  ${bitwardenBTDir}
    cp -r   ${bitwardenPath}/* ${bitwardenBTDir}
    
    # 删除不需要备份的数据
    rm -rf ${bitwardenBTDir}db.sqlite3-shm
    rm -rf ${bitwardenBTDir}send/
    rm -rf ${bitwardenBTDir}tmp/
    
    tar -czf  ${bitwardenBPath}/$(date '+%Y%m%d-%H%M').tar.gz -C  ${bitwardenBTDir} .
    rm -rf ${bitwardenBTDir}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    后续如果需要恢复,就把挂载目录清空解压一个备份文件到里面重启docker即可。

    定时更新镜像

    vaultwarden 还在持续更新,为了及时用上最新的版本,设置一个定时任务,定时更新镜像。

    vi /etc/cron.daily/dockerImageUpdate
    
    • 1

    脚本内容如下

    #/bin/bash
    docker run -d --name watchtower --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once
    
    • 1
    • 2

    watchtower 自动更新 Docker 容器基础镜像的流程。

    多次失败屏蔽ip fail2ban

    待续

    填坑记录

    domain 重启 404

    设置domain参数后重启docker,访问就404,暂未搜到解决方法。

    绕行方案,删除domain参数,重启docker后通过ip:端口访问admin管理页面设置domain。

    TOTP 时区问题

    报错如下

    发生错误。
    Invalid TOTP code! Server time: 2023-11-15 06:46:43 UTC IP: 172.xx.xx.xx
    
    • 1
    • 2

    docker镜像内时间错误

    启动时将时间挂载进去。

    docker run ······ -v /etc/localtime:/etc/localtime ·····
    
    • 1

    改完之后依旧不行,苦苦寻找解决方案,最后发现存的totp太多了用错了 😅。

    待续

    支持原创

  • 相关阅读:
    cmka下切换使用不同版本的boost-未解决
    软考 - 标准化与知识产权基础知识
    常见的Android编译优化问题
    易基因|RNA m7G甲基化测序(m7G-MeRIP-seq)
    【Python 实战基础】Pandas如何获取表格的信息和基本数据统计
    一命通关双指针
    1、Nginx 简介
    一些程序上概念的微思考
    计算机设计大赛 深度学习手势识别算法实现 - opencv python
    使用Visual Studio 2022 创建lib和dll并使用
  • 原文地址:https://blog.csdn.net/qq923132714/article/details/134393259