使用Docker搭建自己的Bitwarden密码管理服务
相信身为开发者,总会在各种网站中注册账号,为了方面记忆可以使用同一套账号密码进行注册,自从前段时间学习通时间撞库后有些人已经开始疯狂改密码了,可是密码一多就很难记忆,最好找个地方存储账户信息
我曾经使用过手机便签、笔记软件,Edge的同步功能,甚至私有的GIT仓库来记密码,效果都不是很好,于是前段时间疯狂寻找开源项目,想要搭建自己的密码管理系统,终于找到了Bitwarden这个神仙
准备工作
需要有可以使用服务器以及可以使用的域名
了解并熟悉Docker的简单使用
了解并熟悉Nginx的使用
了解HTTPS
了解Bitwarden
Bitwarden是一款开源的密码管理工具,可以直接访问他们的官网注册并使用他们的服务,将账号信息交给他们管理,也可以自行搭建服务,将账号密码存在自己的服务器上,供自己或者朋友进行使用
根据最近总结的经验来看,部署Bitwarden的方式大概总结了三种:
- 使用官方提供的的sh脚本进行安装,需要系统中安装好docker、docker-compse
这种方法我已经踩过坑了,首先的确是可以用的,但是执行安装脚本后启动服务,你会发现Docker中多了十多个容器,对于我这种强迫症来说接受不了,而且我的Docker中已经事先安装了Nginx并配置了网站的反向代理,会和官方提供的脚本中的nginx冲突导致运行失败,这个方案直接被pass
- 使用第三方维护的Docker镜像:Bitwarden_RS
https://hub.docker.com/r/bitwardenrs/server
这个是由第三方个人维护的整合好的bitwarden镜像,pull后可以直接运行并访问,这个镜像我也用了一段时间,这期间深深被bitwarden的功能折服,打算写一篇博客介绍给更多的人用,所以对这个镜像稍微了解一下,发现这个镜像已经不在维护了,但是功能可以正常使用,如果不介意的话可以使用,但不推荐

第三种方法就是我目前正在使用的方法,我会在下面介绍安装方法
快速部署Bitwarden
https://hub.docker.com/r/vaultwarden/server
注意:部署Bitwarden要求系统中安装了Docker和Nginx服务
推荐使用Vaultwarden镜像,他与第二种安装方案中的镜像是同一个作者,因docker镜像名称容易引人误会所以另开一个镜像,如果想快速安装Bitwarden使用下面这段命令就可以
# -p端口映射不多解释,-v绑定数据目录不多解释
docker run -d --name bw \
-p 8002:80 \
-v /opt/docker/bw/:/data/ \
vaultwarden/server:latest
然后通过服务器IP地址+端口号就可以访问服务了,如下所示

但是仅仅这样是用不了的,出于安全考虑Bitwarden要求必须使用https进行访问,否则报错

之前购买VPS的的博客中提过,我的域名是交给CloudFlare管理的,这里需要打开强制https功能,如果你没有这个条件的话需要用自己的域名申请一个SSL证书上传至服务器,然后配置Nginx,这里请百度

然后配置域名解析,将域名解析到你的服务器IP地址上,如下所示

然后编辑nginx的配置文件,配置Bitwarden的反向代理
server {
listen 80;
server_name bitwarden.hanzhe.site;
location / {
proxy_pass http://666.666.666.666:8002;
}
}
访问配置好的域名,就可以访问到Bitwarden网站了,强制https后注册登录都一切顺利,注册登录后在这个位置设置中文

之后就可以正常使用了,可以在存储密码后安装浏览器插件,设置远程地址后查看账号密码,或者使用密码填充




也可以GooglePlay商店或者百度下载手机端,同样设置服务器URL后登陆,进行添加查看账户信息,IOS也可以
https://bitwarden.hanzhe.site 这个就作为演示站供大家参考,已开放注册,信得过的话也可以联系我邀请你使用我私有的bitwarden
Bitwarden高级用法
在创建容器的时候可以指定很多环境变量,这里简单介绍几个
管理员访问密码,设置密码后可以访问管理页面
-e ADMIN_TOKEN=some_random_token_as_per_above_explanation \
是否允许注册,false为禁止之策
-e SIGNUPS_ALLOWED=false \
是否允许邀请注册,在禁止注册的情况下可以邀请某个指定的用户进行注册
-e INVITATIONS_ALLOWED=false \
是否直接在页面显示密码提示,不通过邮箱
-e SHOW_PASSWORD_HINT=false \
更多配置项请参照官方文档 https://github.com/dani-garcia/vaultwarden/wiki
使用Docker搭建自己的Bitwarden密码管理服务的更多相关文章
- Docker 搭建 etcd 集群及管理
环境 host1 10.1.99.13 host2 10.1.99.14 host3 10.1.99.15 host4 10.1.99.12(用于测试添加删除节点) 初始化集群 host1 $ doc ...
- 使用Docker搭建consul集群+registrator实现服务自动注册。
准备工作:10.173.16.83 master10.172.178.76 node110.171.19.139 node210.162.204.252 node3 一.安装consul-cluste ...
- 搭建ldap服务器及web管理服务--phpldapadmin
系统版本:centos6 安装配置openldap: yum install openldap openldap-servers openldap-clients openldap-devel com ...
- Docker 搭建 etcd 集群
阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很 ...
- Docker 搭建开发环境
本文介绍如何将Docker集成到开发环境,自动构建应用,并使容器拥有独立的内网IP为开发人员提供服务. 术语解释 Docker镜像:一个不可修改的"模板",每个代码版本对应一个镜像 ...
- docker快速搭建几个常用的第三方服务
本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch: 本篇涉及内容深 ...
- 基于docker搭建开源扫描器——伏羲
基于docker搭建开源扫描器——伏羲 1.简介 项目地址 伏羲是一款开源的安全检测工具,适用于中小型企业对企业内部进行安全检测和资产统计. 功能一览: 基于插件的漏洞扫描功能(类似于巡风) 漏洞管理 ...
- Docker搭建RabbitMQ集群
Docker搭建RabbitMQ集群 Docker安装 见官网 RabbitMQ镜像下载及配置 见此博文 集群搭建 首先,我们需要启动运行RabbitMQ docker run -d --hostna ...
- 使用docker搭建selenium grid 分布式环境
本文章只做docker搭建selenium grid 分布式环境步骤说明,对于selenium grid中的参数.流程.原理等不做说明.selenium grid的详细情况可查看官方文档https:/ ...
随机推荐
- 大一/初学者学C语言前必看!!!(建议收藏)
目录 数据类型 常量.变量 数组 字符串.转义字符 选择语句 循环语句 函数 操作符 结构体 指针 神秘的学习资料基地jq.qq.com/?_wv=1027&k=5kWJsY1z 一.数据类 ...
- Hadoop(一)Hadoop核心架构与安装
Hadoop是什么 大白话,Hadoop是个存储数据,计算数据的分布式框架.核心组件是HDFS.MapReduce.Yarn. HDFS:分布式存储 MapReduce:分布式计算 Yarn:调度Ma ...
- 解决:Could not resolve dependencies for project xxx: Could not find artifact xxx
引言 运行A module,找不到B module的依赖报错.A.B module都在project中. 报错信息 [INFO] Scanning for projects... [INFO] [IN ...
- Water 2.6.3 发布,一站式服务治理平台
Water(水孕育万物...) Water 为项目开发.服务治理,提供一站式解决方案(可以理解为微服务架构支持套件).基于 Solon 框架开发,并支持完整的 Solon Cloud 规范:已在生产环 ...
- SpringBoot如何优雅关闭(SpringBoot2.3&Spring Boot2.2)
SpringBoot如何优雅关闭(SpringBoot2.3&Spring Boot2.2) 优雅停止&暴力停止 暴力停止:像日常开发过程中,测试区或者本地开发时,我们并不会考虑项目关 ...
- css实现弹框
CSS遮罩层实现思路:遮罩层的影藏方式一般有display:none.visibility:none.opacity: 0.遮罩层从无到有的出现效果一般是opacity值从0~1,结合transiti ...
- 基于 range 的 for 循环和 auto
基于 range 的 for 循环和 auto C++11 引入一种循环的新形式,叫基于 range 的 for 循环,它允许我们用更简单易读的形式遍历容器中的所有元素 vector<int&g ...
- 1┃音视频直播系统之浏览器中通过WebRTC访问摄像头
一.WebRTC的由来 对于前端开发小伙伴而言,如果用 JavaScript 做音视频处理 在以前是不可想象的,因为首先就要考虑浏览器的性能是否跟得上音视频的采集 但是 Google 作为国际顶尖科技 ...
- 谈谈markdown
谈谈markdown 欢迎关注我的博客,️点他即可. 最近一年开始学习有关编程的内容了. 迷上代码的我开始接触到一些好玩的东西,我发现很多事情都可以由代码来完成,甚至是ppt.同学就经常说我疯掉了,连 ...
- 嵌入:CAN
说下我的学习过程.刚到公司的时候我根本不知道什么是CAN,甚至连以太网和串口通讯都不懂.领导把USBCAN分析仪拿给我,把铜线短接上,用软件在CAN1窗口点下发送,CAN2窗口马上接收到了发送出来的数 ...