Docker部署开源密码管理器Bitwarden, 并申请免费ssl证书自动刷新永不过期

news2024/11/17 23:56:32

GitHub传送阵

废话

出于一种习惯,我基本上不会在不同的应用上使用相同的密码,这种习惯使得我需要在备忘录上不胜其烦地记录大量的账号密码,每次登录一个系统,如果chrome的密码管理器不可用,我就需要打开备忘录检索。安全,但是麻烦。 虽然chrome的密码管理器也可以使用,但是其功能过于简单,也不能满足我记录其他一些非web系统的账号,所以我早早就有打算部署密码管理器,但是真正的契机,还是在近期新加入了一个团队,相信大家都有这样的经历,新人入职第一项工作,就是申请大量的系统账号,这使我实在不想再忍受,就开始着手了。

至于为什么选择 bitwarden, 我想大概是因为其够简单,还不要钱吧。 如果有一个免费的产品,可以满足你的需求,使用起来还简单,你为什么不去用呢?

现在我已经完成部署,且整理了非常简单的一步到位的部署文档贡献出来,你还在等什么呢?快用起来吧!!!!

先贴两张图,展示一下实现后的效果:

当我登录一个网站时:image-20230421162007384

密码库:image-20230421162740155

如果不需要远程共享,可以部署在本地。
要实现远程多端共享,就至少需要一台公网可访问的服务器,最好还有一个已备案的域名。

部署

下载并启动nginx

#下载
[root@ogenes01 data]#  git clone https://github.com/ogenes/docker-bitwarden.git

#进入项目
[root@ogenes01 data]# cd docker-bitwarden

#生成环境变量
[root@ogenes01 docker-bitwarden]# cp .env.example .env

#将nginx配置文件中的域名替换成自己的域名
[root@ogenes01 docker-bitwarden]# sed s/bitwarden.example.com/yourdomain/g nginx/conf.d/bitwarden.conf

#创建网络,指定子网与.env中配置一致
[root@ogenes01 docker-bitwarden]# docker network create backend --subnet=172.19.0.0/16
18f511530214374896700ad3f179fb9180227fe4e5b6ccf7e9f8ed9b8602059c
[root@ogenes01 docker-bitwarden]# docker network ls | grep backend
18f511530214   backend   bridge    local

#启动nginx
[root@ogenes01 docker-bitwarden]# docker-composer up -d nginx

启动bitwarden

[root@ogenes01 docker-bitwarden]# docker-compose up -d bitwarden
[+] Running 1/1
 ⠿ Container bitwarden  Started                   0.3s

申请SSL证书

因为bitwarden的服务端地址必须是https的, 所以这一步必不可少。

这里演示通过 certbot 可以申请免费的ssl证书, 但是前提是要有一个已经备案的域名。

如果只是本机部署,不需要远程的话,也可以试一下通过openssl本地生成ssl证书,具体可以参考: Nginx本地开发环境配置ssl证书实现https访问

[root@ogenes01 docker-bitwarden]# docker-compose run --rm  certbot certonly --webroot --webroot-path /var/www/certbot/ -d yourdomain
Saving debug log to /var/log/letsencrypt/letsencrypt.log
……………………
Successfully received certificate.
……………………

配置https,重启nginx

#去掉注释
[root@ogenes01 docker-bitwarden]# vim nginx/conf.d/bitwarden.conf
server {
    listen 80;
    listen [::]:80;

    server_name bitwarden.example.com;

		# When you get a certificate from Let’s Encrypt, our servers validate that you control the domain names in that certificate using “challenges,” as defined by the ACME standard.
    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://bitwarden.example.com$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name bitwarden.example.com;

    ssl_certificate /etc/nginx/ssl/live/bitwarden.example.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/live/bitwarden.example.com/privkey.pem;

    location / {
        proxy_pass http://bitwarden:80/;
    }
}


#重启nginx
[root@ogenes01 docker-bitwarden]# docker-compose restart nginx

浏览器访问

image-20230418194934116

创建一个账号

点击 Create account

image-20230418200130938

登录,设置中文

image-20230418200318902.png

更改配置,禁止注册,然后重启

SIGNUPS_ALLOWED: 'false'

再次尝试注册时会报错:
发生错误。
Registration not allowed or user already exists

image-20230419150341237

从chrome导出账号密码

chrome://settings/passwords
image-20230418200627552

导入到bitwarden

image-20230418200734434

下载浏览器插件

访问 https://chrome.google.com/webstore/search/bitwarden?utm_source=chrome-ntp-icon

image-20230418195902674

设置服务器url, 自动填充

image-20230418200923646

输入服务器url: https://bitwarden.example.com
然后登录
image-20230418201520303

最后自动刷新ssl证书

添加计划任务
#每个月月初更新https证书
1 1 1 * * cd /data/docker-bitwarden && docker-compose run --rm certbot renew >> /dev/null 2>&1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab使用波束成形生成 802.11ad 波形

一、前言 本示例说明如何使用WLAN工具箱和相控阵系统工具箱对带有相控阵的IEEE 802.11ad DMG波形进行波束成形。 二、介绍 IEEE 802.11ad 定义了工作在 60 GHz 的定向千兆位 (DMG) 传输格式。为了克服在 60 GHz 下遇到的大路径损耗,IEEE 802.…

进阶必看 | 有关BIMer强推的5本书,看过的都竖大拇指!

大家好,还是我,建模助手。 本期的主题都是围绕着:热点。除了建模助手的品牌资讯之外,还有一些与行业相关的热点。 这不,4月23日是正好的世界读书日,给大家搞一波书籍推荐! 小编认为&#xff…

【Dubbo核心 详解二】Dubbo服务消费的详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Dubbo专栏 文章目录 引言介绍 Dubbo 服务消费的详解的目的和背景概述 Dubbo 服务消费的过程和核心概念一、Dubbo 服务消费的基础知识1. Dubbo 服务消费的架…

动力节点springsecurity笔记-SpringSecurity 集成thymeleaf

15 SpringSecurity 集成thymeleaf 此项目是在springsecurity-12-database-authorization-method 的基础上进行 复制springsecurity-12-database-authorization-method 并重命名为springsecurity-13-thymeleaf 15.1 添加thymeleaf依赖 | org.springframework.boot spring-…

h5逻辑_解决h5页面嵌入ios兼容性问题

安全区域 如下图所示~ 蓝色部分为安全区域。处于安全区域内的内容不受圆角、齐刘海、小黑条的影响。 若是将h5页面嵌入app中,就需要进行适配—> 让h5页面展示在安全区域内。 tips: 安全区域是在ios11之后并且是iPhoneX及以上机型才有的。 因此我们只…

【微信小程序】详解behaviors,如何使用behaviors

一,behaviors 1.1什么是 behaviors? behaviors 是小程序中, 用于实现组件间代码共享的特性 ,类似于 Vue.js 中的 “mixins”。 1.2behaviors 的工作方式 每个 behavior 可以包含一组 属性、数据、生命周期函数和方法 。组件引…

【PE】inline hook的实现

【PE】inline hook的实现 hook思路 最基本的5字节的hook思路如下,有了这个思路,可以用更多的方式进行hook 通过修改目标函数开头的5个字节为jmp …,劫持程序执行流跳转过去之后,再把API开头5字节改回来(UnHook&…

Servlet 入门到精通(六)

上一篇博客的传送门:Servlet 入门到精通(五) Servlet Filter 又称 Servlet 过滤器,它是在 Servlet 2.3 规范中定义的,是 Servlet 中的一个组件,是设计模式中责任链模式的一种经典实现。能够对 Servlet 容器…

SpringBoot启动自动执行sql脚本

在开发当中我们每次发布服务都需要手动执行脚本,然后重启服务,而SpringBoot有服务启动自动执行sql脚本的功能的,可以为我们省去手动执行脚本的这一步,只需要部署新的服务即可。 这个功能是SpringBoot自带的不需要引入额外的依赖&a…

Spring Boot 提取内存密码

访问 /actuator/heapdump 下载内存,提取密码 select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))

学习系统编程No.21【进程间通信之共享内存】

引言: 北京时间:2023/4/16/21:53,刚刚把新文章发出去,开完班会回来,本来上篇博客在昨天就能发的,昨天下午打了一下午的羽毛球之后,饭都没吃,躺在床上,准备睡觉&#xff…

Spring五大类注解 || Bean的更简单存储

目录 前言: 五大类注解 Controller Service Repository Component Configuration JavaEE标准分层 阿里分层结构 BeanName命名规则 方法注解 Bean 注入方式取Bean 属性注入 Setter注入 构造方法注入 Resource 前言: 使用Spring容器&…

Linux-驱动开发-基础温习

一、裸机开发和驱动开发的区别: 裸机开发:底层(相对于linux来说),库 二、linux驱动开发-根据各种框架进行开发 1、 外设比较多,资源多,资料非常少,官方的SDK;直接操作寄存器不显示…

Python 基础(十):元组

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 一、声明元组二、访问元组三、修改元组变量四、遍历元组五、切片六、常用函数和方法6.…

SpringBoot实现导出Excel功能

1 问题背景 需求要做一个导出excel的功能 2 前言 本篇着重阐述后端怎么实现,前端实现的部分只会粗略阐述。该实现方案是经过生产环境考验的,不是那些拿来练手的小demo。本文阐述的方案可以借鉴用来做毕设或者加到自己玩的项目中去。 3 实现思路 后端查询…

103. 二叉树的锯齿形层序遍历【191】

难度等级:中等 上一篇算法: 104. 二叉树的最大深度【75】 力扣此题地址: 103. 二叉树的锯齿形层序遍历 - 力扣(Leetcode) 1.题目:103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其…

p65 内网安全-域环境工作组局域网探针方案

数据来源 基本概念 DMZ区域:称为“隔离区”,也称‘’非军事化区/停火区” 工作组(Work Group)是局域网中的一个概念。它是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以…

完美解决丨except NameError:

示例如下: try: print(xx) except: print(xx is not defined) print(continue) 解决办法 第一种解决办法: try: print(xx) except NameError: print(xx is not defined) print(continue) 第二种解决办法: print(xx) if xx in locals() e…

camunda工作流user task如何使用

在Camunda中使用User Task通常需要以下步骤: 1、创建User Task:使用BPMN 2.0图形化设计器(如Camunda Modeler),将User Task元素拖到流程图中,并为任务命名,指定参与者(用户或用户组…

第二章 Maven 核心程序解压和配置

第一节 Maven核心程序解压与配置 1、Maven 官网地址 首页: Maven – Welcome to Apache Maven(opens new window) 下载页面: Maven – Download Apache Maven(opens new window) 下载链接: 具体下载地址:https://dlcdn.apac…