部署自己的私人密码管理系统-Bitwarden

简介

Bitwarden 是一款可靠的开源密码管理系统,它可以安全地接管你的所有密码,并将其加密保存在你自己的服务器上,支持全平台客户端,包括网页端、桌面端、浏览器拓展、手机应用以及Linux命令行客户端。

这里我们使用 Bitwarden_rs 的Docker发行版镜像来部署,因为它使用Rust重构了服务端,速度更快、资源占用更小。

部署服务

前置条件

  • 首先你需要有一台长期稳定的安全的服务器

如果你的服务器动不动就重装系统,那么就非常不适合用来存这些敏感且重要的数据,你应该知道这些数据的丢失将可能导致你永久失去一些服务的访问权。

  • 你应当拥有一定的相关技术知识

如果你不知道怎么配置Nginx反向代理,不知道什么是SSL/TLS加密,不会部署和维护容器,而且对于网络通信安全没有什么认知和概念的话,不建议使用自建的密码托管服务。

对于不满足上述的两种条件的推荐你直接去使用可信的第三方平台提供的密码托管服务。

下面列举一些知名的密码托管服务商

Bitwarden官方
1Password
Keepeer

  • 服务器需要有安装Docker和Docker Compose

如果你没有安装,可以看下面这两篇文章,先安装Docker再安装 Docker Compose

Docker部署
Docker Compose安装

创建数据存放目录与Docker Compose描述文件

首先我推荐创建一个全新的目录,专门用于存放 Bitwarden 的数据文件,后期如果需要迁移服务器的话直接把这个文件夹打包带走就可以了。

这里假设我们创建了一个名为 Bitwarden 的文件夹,专门存放该容器的数据文件。

mkdir /Bitwarden
cd /Bitwarden

然后使用vim创建并填写docker-compose描述文件。

vim docker-compopse.yml

向这个文件中写入如下文本

此处内容需要评论回复后方可阅读

上线Docker容器

当你将compose描述文件正确填写并保存后,在当前文件夹下,通过执行下面这行命令就可以上线你的Bitwarden容器了。

docker-compose up -d

附 docker-compose常用命令:

# 上线容器
docker-compose up -d
# 停止容器
docker-compose stop
# 启动容器
docker-compose start
# 重启容器
docker-compose restart
# 下线(删除)容器
docker-compose down
# 删除容器不会导致你的数据丢失,你的数据库保存在了当前目录下的data文件夹内,请妥善保管该目录

反向代理

我们使用Nginx反向代理来实现网站的SSL加密以保证数据传输安全并隐藏与保护后端容器。

配置如下

此处内容需要评论回复后方可阅读

第一部分:声明了将根目录反向代理到容器映射到宿主机的http端口上。

第二部分:由于我们开启了WebSocket功能,所以需要将 /notifications/hub 路径反向代理到容器映射到宿主机的http端口上,即3012端口。

第三部分:根据文档描述,我们应该将这个目录反代到http端口上。

高级设置:后台管理员

注意,一旦设置管理员口令并启用管理员面板,该功能将无法关闭,且无法重置该口令

要启用后台管理员,你需要在 docker-compose 描述文件中的 environment 项中添加如下配置

ADMIN_TOKEN=管理员口令

注意,口令的长度应该很长且无规律,弱口令将导致你的密码管理服务器不安全。

Tip:可以使用OpenSSL生成随机字符串来当管理员口令

下面这条命令可以生成一个48位的字符串,这些字符串可以充当口令

openssl rand -base64 48

1678549656361.png

修改后的environemet部分应该看起来像是这样的

        environment:
            - ADMIN_TOKEN=txWN3bnqTGJv9ENgNko0euISyiO51p7zXSl8QP/3wRO5VC1iJF0LiU2InLoO3Nzi
            - WEBSOCKET_ENABLED=true
            - SIGNUPS_ALLOWED=true

你需要通过下线(down)容器并重新上线(up)容器来让修改生效。

之后你可以通过访问域名+/admin的方式进入管理面板

https://password.xxxx.com/admin

1678549731508.png

关闭注册功能

在你自己注册完自己的帐号后可以选择关闭注册功能。

environment 部分的 SIGNUPS_ALLOWED 的值调整为 false

        environment:
            - ADMIN_TOKEN=txWN3bnqTGJv9ENgNko0euISyiO51p7zXSl8QP/3wRO5VC1iJF0LiU2InLoO3Nzi
            - WEBSOCKET_ENABLED=false
            - SIGNUPS_ALLOWED=true

然后down掉容器并重新上线容器使其生效

docker-compose down
docker-compose up -d

更多的进阶配置可以看该镜像的官方文档

官方文档

使用教程

注册帐号

在配置完反代后我们就可以输入域名,进入Bitwarden开始使用了

一定要确保在此之前你已经正确地配置了SSL证书,否则你的通信内容将全过程裸奔,还不如不用!
如果是个人使用的话,注册完帐号后建议关闭注册功能。

1678549901557.png

1678549917956.png

更改语言

默认语言为英文,如果你用不习惯可以将语言改为中文

1678549966743.png

导入你的密码

从浏览器中导出密码

以我所使用的Chrome浏览器为例:

1678550005450.png

1678550017015.png

1678550035588.png

最终会导出一个csv文件,你在 Chrome 中储存的 所有密码 都会以 明文 的形式保存在里面

因此您应该明白该文件高度敏感和机密,不要使用任何第三方软件传输该文件,您应尽快将该文件导入到Bitwarden中并在这之后立即彻底销毁该文件。

在Bitwarden中导入密码

打开你的Bitwarden,找到 工具 -> 导入数据 -> 选择格式 -> 选择刚导出的文件 -> 点击导入数据

导入格式根据你的实际情况来选择,我是用Chrome导出的csv,所以这里我理所应当地选择了 Chrome(csv)

1678550152944.png

然后你就可以看到你的密码库中已经可以看到刚刚导入的密码了。

下载与使用app

AppStore 搜索 Bitwarden 就能找到

1678550241510.png

进入软件后,点击右上角的设置图标

1678550265895.png

Server URL 换成你自己的服务器地址

1678550289641.png

然后点击登录,输入你自己的帐号密码即可。

在iOS系统中, 设置 -> 密码 -> 自动填充 中,勾选 Bitwarden 后就可以让它来接管你的密码了。

1678550343731.png

其他平台的软件使用方法我就不一一介绍了

使用方法都大同小异,点击右上角的 获取应用 按钮可以查看和下载官方发布的客户端

1678550381812.png

1678550392695.png

打赏
评论区
头像
    头像
    katze
      

    谢谢。学习了

    头像
    球球
      

    感谢分享

    头像
    可乐
      

    感谢

    头像
    阿北
      

    很详细

      头像
      lasky
        
      @阿北

      感谢分享

      头像
      wye
        
      @阿北

      教程很详细

    头像
    北国海洋
      

    感谢

文章目录