docker部署Vaultwarden密码共享管理系统

Vaultwarden是一个开源的密码管理器,它是Bitwarden密码管理器的自托管版本。它提供了类似于Bitwarden的功能,允许用户安全地存储和管理密码、敏感数据和身份信息。

Vaultwarden的主要特点包括:

1. 安全的数据存储:Vaultwarden使用加密算法对用户的数据进行加密,并将其存储在数据库中。用户的数据只能通过唯一的加密密钥进行解密,确保数据的机密性。


2. 跨平台支持:Vaultwarden可以用作独立的Web应用程序或与桌面客户端、浏览器插件等配合使用,以满足不同平台和设备上的需求。


3. 密码生成器:Vaultwarden提供了密码生成器,可以帮助用户生成强密码,确保账号的安全性。


4. 浏览器插件支持:Vaultwarden支持各种浏览器插件,方便用户在浏览器中轻松地填充和保存密码。


5. 多因素身份验证:Vaultwarden支持多种身份验证方式,如TOTP(基于时间的一次性密码)和二次验证码(如YubiKey),以增加登录过程的安全性。


6. 团队协作:Vaultwarden支持团队协作,用户可以与团队成员共享密码和敏感数据,方便安全地共享账号和信息。

使用Vaultwarden,用户可以集中管理他们的密码和敏感数据,并通过强加密和严格的访问控制来保护这些数据。由于它是开源的,用户可以自行托管并拥有完全控制权,满足对数据隐私和安全性有更高要求的用户需求。

下面我将介绍Vaultwarden的docker部署方式:

 1、卸载旧版本

如果你之前已经安装过Docker,请先卸载旧版本。执行以下命令卸载Docker:

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、安装依赖包

在安装Docker之前,需要安装一些必要的依赖包。执行以下命令安装依赖包:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3、添加Docker软件源

使用以下命令设置Docker官方GPG密钥:

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装Docker

执行以下命令安装Docker:

sudo yum makecache fast
sudo yum -y install docker-ce

 5、启动Docker

执行以下命令启动Docker服务:

sudo systemctl start docker

6、验证安装

执行以下命令验证Docker是否安装成功:

sudo docker run hello-world

如果输出如下信息,说明Docker安装成功:

Hello from Docker!
...

 7、拉取Vaultwarden镜像

执行以下命令检查当前镜像仓库是否存在Vaultwarden镜像:

sudo docker search vaultwarden

执行以下命令拉取 Vaultwarden镜像:

sudo docker pull vaultwarden/server

8、安装MySQL5.7数据库

由于官方镜像使用的是微软的SQLserver不方便我们后期的维护,这里就需要部署MySQL以方便我们后期对Vaultwarden的维护,这就不讲MySQL是如何部署的,不会请自行百度。

9、启动Vaultwarden容器

执行以下命令启动启动Vaultwarden容器:

docker run -d --name vaultwarden --restart=always -e WEBSOCKET_ENABLED=true -e SIGNUPS_ALLOWED=false -e DOMAIN=https://vault.moutai.com.cn -e ADMIN_TOKEN=eMEt*W4ay7 -e DATABASE_URL=mysql://vault:bBzExr8Lj3NWdnsR@10.0.11.22:3306/vault -v /data/bitwarden/:/data/ -p 8080:80 -p 3012:3012 vaultwarden/server:latest

以下是启动命令中使用的选项和参数的解释:

  • -d:以守护进程模式运行容器。
  • --name vaultwarden:指定容器的名称为"vaultwarden";
  • --restart=always:设置容器在重启时自动启动;
  • -e WEBSOCKET_ENABLED=true:启用WebSocket支持;
  • -e SIGNUPS_ALLOWED=false:禁止用户自行注册新账户;
  • -e DOMAIN=https://vault.moutai.com.cn:设置Vaultwarden的域名;
  • -e ADMIN_TOKEN=eMEt*W4ay7:设置管理员令牌(密码);
  • -e DATABASE_URL=mysql://vault:bBzExr8Lj3NWdnsR@10.0.11.22:3306/vault:指定MySQL数据库的连接URL;
  • -v /data/bitwarden/:/data/:将宿主机上的/data/bitwarden/目录挂载到容器内的/data/目录,用于持久化数据;
  • -p 8080:80 -p 3012:3012:将宿主机的8080端口映射到容器的80端口,以及3012端口映射到容器的3012端口;
  • vaultwarden/server:latest:运行最新版本的Vaultwarden服务器镜像;

10、 域名解析

后端的 Bitwarden 服务已经成功运行,前端如何访问呢?

有两种方法:

  • 直接使用 https://{ip}:{password}​ 访问 web
  • 申请个域名,使用 https://{domain}​ 访问 web

使用 ip 访问,记得去设置安全组,开放端口

使用域名访问,可以使用子域名,省得再申请域名,个人推荐使用域名,使用上更方便。

在云厂商上设置好 DNS 解析后,还需要设置下 nginx 的反向代理,才可以使用域名进行访问。

11、部署Nginx反向代理

这里值得说的是如果你不部署Nginx反向代理你是无法打开Vaultwarden的。

这里就不详细讲Nginx如何部署的,咱们直接讲Nginx的配置,找到你的 nginx 配置文件路径,假设是 /usr/local/nginx/conf/nginx.conf,添加如下配置,并将申请好的域名证书对应的pem、key文件放在正确的位置,并重启 nginx 服务。

user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;events {use epoll;worker_connections 51200;multi_accept on;
}http {include       mime.types;#include luawaf.conf;include proxy.conf;default_type  application/octet-stream;server_names_hash_bucket_size 512;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 50m;sendfile   on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 256k;fastcgi_intercept_errors on;gzip on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;gzip_vary on;gzip_proxied   expired no-cache no-store private auth;gzip_disable   "MSIE [1-6]\.";limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server_tokens off;access_log off;include /www/server/panel/vhost/nginx/*.conf;# 'upstream' 指令确保你有一个 http/1.1 连接# 这里启用了 keepalive 选项并拥有更好的性能upstream vaultwarden-default {zone vaultwarden-default 64k;server 127.0.0.1:8080;keepalive 2;}upstream vaultwarden-ws {zone vaultwarden-ws 64k;server 127.0.0.1:3012;keepalive 2;}server {listen 888;server_name phpmyadmin;index index.html index.htm index.php;root  /www/server/phpmyadmin;#error_page   404   /404.html;include enable-php.conf;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires      30d;}location ~ .*\.(js|css)?${expires      12h;}location ~ /\.{deny all;}access_log  /www/wwwlogs/access.log;}server {listen 80;listen [::]:80;server_name vault.moutai.com.cn;return 301 https://$host$request_uri;}server {listen 443 ssl http2;listen [::]:443 ssl http2;server_name vault.moutai.com.cn;ssl_certificate /etc/letsencrypt/live/moutai.com.cn/10095543__moutai.com.cn.pem;ssl_certificate_key /etc/letsencrypt/live/moutai.com.cn/10095543__moutai.com.cn.key;ssl_trusted_certificate /etc/letsencrypt/live/moutai.com.cn/10095543__moutai.com.cn.pem;client_max_body_size 128M;location / {proxy_http_version 1.1;proxy_set_header "Connection" "";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://vaultwarden-default;}location /notifications/hub/negotiate {proxy_http_version 1.1;proxy_set_header "Connection" "";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://vaultwarden-default;}location /notifications/hub {proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Forwarded $http_x_forwarded_for;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_pass http://vaultwarden-ws;}}
}

12、登录Vaultwarden管理平台

        管理员页面用于管理Vaultwarden应用程序。作为管理员,您可以创建,编辑和删除用户、组和条目,设置应用程序选项并监视应用程序统计信息。管理员页面需要管理员账号和密码才能访问,可以通过在Vaultwarden服务器上运行的特殊命令来创建管理员账号。

输入我们在创建容器时设置的管理员令牌来登录。

以下是Vaultwarden管理员页面的一些功能:

  • 用户和组管理:管理员可以创建、编辑和删除Vaultwarden应用程序中的用户和组。管理员还可以为用户分配和管理组和条目访问权限。
  • 应用程序选项设置:管理员可以配置Vaultwarden应用程序的选项,例如应用程序语言、加密设置和自动锁定时间等。
  • 安全审计日志:管理员可以查看Vaultwarden应用程序的安全审计日志,以监视各种安全事件和故障情况。
  • 用户密码策略:管理员可以设置并强制实施强密码策略,例如密码长度、复杂性和有效期限。
  •  数据备份和恢复:管理员可以定期备份Vaultwarden应用程序的数据,并在需要时对数据进行恢复。
  • 应用程序更新:管理员可以在更新可用时升级Vaultwarden应用程序到最新版本,以确保应用程序运行的安全和稳定性。

这些功能使管理员能够更好地管理Vaultwarden应用程序并确保其运行的安全和可靠性。

需要注意的是现在你的密码管理服务器是不允许新用户注册的需要再管理界面将其打开,允许新用户注册登录。

然后点击保存配置,这时你才能注册新用户。

13、登录Vaultwarden用户界面

注册新用户

使用新注册的用户登录

14、新建组织

Vaultwarden提供了以下一些组织功能:

  • 组织创建:管理员可以创建组织,将用户分配到组织中。组织可以根据不同的团队、部门或项目进行组织和管理。
  • 权限管理:管理员可以为组织中的用户分配不同的权限级别,以控制他们对组织内密码和保密信息的访问和操作权限。
  • 组织共享:管理员可以在组织内共享密码和保密信息。这使得团队成员能够方便地共享和访问共享的敏感信息。
  • 组织级别的密码策略:管理员可以为组织设置密码策略,强制组织内的所有用户遵守相同的密码要求和安全标准。
  •  组织审计:管理员可以查看和监控组织的活动日志和审计记录,以便跟踪和审计组织成员的操作和变更。

通过这些组织功能,Vaultwarden使得团队和组织能够更好地协作、共享和管理敏感信息,并提供了更好的安全性和控制。

 

在组织中通过新建集合然后再集合内新建项目(密码),通过集合去分配权限,单独或多个授权给用户,已达到权限控制的效果。

 

 

至此我们的Vaultwarden密码管理系统已经介绍完了,其它的功能我这里就不一 一细说了各位大佬可以自行研究,如果有遇到问题可以私信小编。

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

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

相关文章

手机投屏电脑软件AirServer5.6.3.0最新免费版本下载

随着智能手机的普及,越来越多的人喜欢用手机观看视频、玩游戏、办公等。但是,有时候手机屏幕太小,不够清晰,也不方便操作。这时候,如果能把手机屏幕投射到电脑上,就可以享受更大的视野,更流畅的…

【javaweb】学习日记Day11 - tlias智能管理系统 - 文件上传 新增 修改员工 配置文件

目录 一、员工管理功能开发 1、新增员工 postman报错500的原因 (1)Controller类 (2)Service类 (3)Mapper类 2、根据ID查询 (1)Controller类 (2)Serv…

基于小波神经网络的网络流量预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022A 3.部分核心程序 ........................................................... %% 总流量数据 input(:,1)dat…

如何保证 RabbitMQ 的消息可靠性?

项目开发中经常会使用消息队列来完成异步处理、应用解耦、流量控制等功能。虽然消息队列的出现解决了一些场景下的问题,但是同时也引出了一些问题,其中使用消息队列时如何保证消息的可靠性就是一个常见的问题。如果在项目中遇到需要保证消息一定被消费的…

(高阶) Redis 7 第18讲 RedLock 分布式锁

🌹 以下分享 RedLock 分布式锁,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 问题 分布式锁问题从(高阶) Redis 7 第17讲 分布式锁 实战篇_PJ码匠人的博客-CSDN博客 这篇文章来看,…

redis学习(二)——redis常见命令及基础数据类型

数据类型 基础数据类型 字符串 String abcMap集合 Hsah {name:“zhangsan”,age:18}列表 List [a, b, c, d]Set集合 Set {a,b,c}有序Set集合 SortSet {a:1,b:2,c:3} 特殊数据类型 GEO 地理坐标 {A:(100.2,35.1)}BitMap 位图,只存储0和1 01101011101HyperLog 基数…

地图资源下载工具数据在线、离线查询及数据激活功能

哨兵相关产品,工具提供了表示系统是否为归档离线的信息!您可以利用下载[定时重试]功能激活并下载哨兵相关离线产品数据!

Java中栈实现怎么选?Stack、Deque、ArrayDeque、LinkedList(含常用Api积累)

目录 Java中的Stack类 不用Stack有以下两点原因 1、从性能上来说应该使用Deque代替Stack。 2、Stack从Vector继承是个历史遗留问题,JDK官方已建议优先使用Deque的实现类来代替Stack。 该用ArrayDeque还是LinkedList? ArrayDeque与LinkList区别&#xff1…

Java-多线程

摘要 多线程编程是现代软件开发中的一个重要概念,它允许程序同时执行多个任务,提高了程序的性能和响应性。本博客深入探讨了多线程编程的关键概念、原理和最佳实践。 线程、进程、多线程、并发、并行 进程 进程是计算机中运行的程序的实例。每次打开一…

《人间失格》阅读笔记

《人间失格》读书笔记 2023年10月7日读完,在过去的三个月时间内,有忙碌申博、从杭州辞职回家、准备入学、到澳门入学的事情,终于忙完了这些所有事情,回到了横琴的小房子里读完了这本书。 这本书前半部分讲了主角,作为…

Delphi编程:pagecontrol组件的tab字体变大

1、将pagecontrol组件属性中的font的字体变成四号。 2、将tabsheet1属性中的font的字体设置成八号。 结果如下:

水果种植与果园监管“智慧化”,AI技术打造智慧果园视频综合解决方案

一、方案背景 我国是水果生产大国,果园种植面积大、产量高。由于果园的位置大都相对偏远、面积较大,值守的工作人员无法顾及到园区每个角落,因此人为偷盗、野生生物偷吃等事件时有发生,并且受极端天气如狂风、雷暴、骤雨等影响&a…

山东省赛二阶段第一部分解题思路

提交攻击者的IP地址 192.168.1.7 这个直接awk过滤一下ip次数,这个ip多得离谱,在日志里面也发现了它的恶意行为,后门,反弹shell 识别攻击者使用的操作系统 Linux 找出攻击者资产收集所使用的平台 shodan 提交攻击者目…

C#,数值计算——数据建模Fitab的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Fitting Data to a Straight Line /// </summary> public class Fitab { private int ndata { get; set; } private double a { get; set; } …

CTF之信息收集

什么是信息收集 信息收集是指通过各种方式获取所需要的信息&#xff0c;以便我们在后续的渗透过程更好的进行。最简单的比如说目标站点的IP、中间件、脚本语言、端口、邮箱等等。我觉得信息收集在我们参透测试的过程当中&#xff0c;是最重要的一环&#xff0c;这一环节没做好…

Java-Exception

目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题&#xff0c;了解如何…

nsoftware Cloud SMS 2022 .NET 22.0.8 Crack

nsoftware Cloud SMS 能够通过各种流行的消息服务&#xff08;包括 Twilio、Sinch、SMSGlobal、SMS.to、Vonage、Clickatell 等&#xff09;发送、接收和安排 SMS 消息&#xff0c;从而提供了一种简化且高效的消息服务方法。 Cloud SMS 提供单个 SMS 组件&#xff0c;允许通过…

JDBC-day02(使用PreparedStatement实现CRUD操作)

所需的数据库数据要导入到自己的数据库库中 三&#xff1a;使用PreparedStatement实现CRUD操作 数据库连接被用于向数据库服务器发送命令和 SQL 语句&#xff0c;并接受数据库服务器返回的结果。其实一个数据库连接就是一个Socket连接。CRUD操作&#xff1a;根据返回值的有无…

【Go】go-es统计接口被刷数和ip访问来源

go-es模块统计日志中接口被刷数和ip访问来源 以下是使用go的web框架gin作为后端&#xff0c;展示的统计页面 背景 上面的数据来自elk日志统计。因为elk通过kibana进行展示&#xff0c;但是kibana有一定学习成本且不太能满足定制化的需求&#xff0c;所以考虑用编程的方式…

Eclipse iceoryx™ - 真正的零拷贝进程间通信

1 序言 通过一个快速的背景教程&#xff0c;介绍项目范围和安装所需的所有内容以及第一个运行示例。 首先&#xff1a;什么是冰羚&#xff1f; iceoryx是一个用于各种操作系统的进程间通信&#xff08;IPC&#xff09;中间件&#xff08;目前我们支持Linux、macOS、QNX、FreeBS…