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.rhkb.cn/news/151226.html

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

相关文章

运行在移动设备上的ML机器学习任务——基于MediaPipe的手势识别

前期的文章我们介绍了MediaPipe的人手关键点检测。其检测的21个点的坐标位置如下: 当检测到其关键点后,我们就可以利用此关键点来进行人手手势识别。MediaPipe 手势识别器任务可实时识别手势,并提供识别的手势结果。我们可以使用此任务来识别用户的特定手势,并调用与这些手…

Andriod 简单控件

目录 一、文本显示1.1 设置文本内容1.2 设置文本大小1.3 设置文本颜色 二、视图基础2.1 设置视图宽高2.2 设置视图间距2.3 设置视图对齐方式 三、常用布局3.1 线性布局LinearLayout3.2 相对布局RelativeLayout3.3 网格布局GridLayout3.4 滚动视图ScrollView 四、按钮触控4.1 按…

SwiftUI Spacer() onTapGesture 无法触发

问题:点击这个黑色区域不会 print,黑色区域看上去刚好是 Spacer() 占据的区域 解决办法:不使用 onTapGesture,用 Button 包裹一下 Code: import SwiftUIstruct TestTap: View {var body: some View {NavigationStack {List {Sect…

正则验证用户名和跨域postmessage

一、正则验证用户名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title> </head> <body> <form action"/login" method"post"><input type…

完美解决 flex 实现一行三个,显示多行,左对齐

效果图 代码 <body><section class"content"><div class"item">元素</div><div class"item">元素</div><div class"item">元素</div><div class"item">元素</di…

Node.js操作MySQL8.0数据库无法连接

Node.js操作MySQL8.0数据库无法连接 原创&#xff1a;丶无殇  2023-10-07 报错内容 使用node.js连接数据库MySQL 8时候&#xff0c;报错ER_NOT_SUPPORTED_AUTH_MODE&#xff0c;并且提示Client does not support authentication protocol requested by server; consider upg…

【python】可视化-绘制带有边权重的无向图

文章目录 需求示例数据代码实现 需求 输入数据表(矩阵)&#xff0c;绘制无向图。 示例数据 **示例数据1&#xff1a;**3个特征之间的关系数据 (data1.txt) featuresfeature1feature2feature3feature110.60.8feature20.610.3feature30.80.31 **示例数据2&#xff1a;**4个特…

2023年中国汽车座舱行业发展现状及趋势分析:高级人机交互(HMI)系统将逐步提升[图]

2022年有22.3%的汽车用户认为座舱内车载娱乐功能成为影响使用体验的关键因素。当前智能电动汽车的用户画像与娱乐、游戏等应用的用户画像相似&#xff0c;均以年轻人作为目标用户。年轻化的用户将娱乐功能的使用习惯延伸至汽车座舱内&#xff0c;对于座舱功能的需求不再局限于导…

C++ 33.学习C++的意义-狄泰软件学院

一些历史 UNIX操作系统诞生之初是直接用汇编语言编写的随着UNIX系统的发展&#xff0c;汇编语言的开发效率成为瓶颈&#xff0c;所以需要一个新的语言替代汇编语言1971年通过对B语言改良&#xff0c;使其能直接产生机器代码&#xff0c;C语言诞生UNIX使用C语言重写&#xff0c…

mysql双主互从通过KeepAlived虚拟IP实现高可用

mysql双主互从通过KeepAlived虚拟IP实现高可用 在mysql 双主互从的基础上&#xff0c; 架构图&#xff1a; Keepalived有两个主要的功能&#xff1a; 提供虚拟IP&#xff0c;实现双机热备通过LVS&#xff0c;实现负载均衡 安装 # 安装 yum -y install keepalived # 卸载 …

智能AI系统源码ChatGPT系统源码+详细搭建部署教程+AI绘画系统+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Chat…

层次架构、面向服务架构(四十四)

层次架构设计 表现层、中间层、数据访问层、数据架构规划、物联网层次架构、层次式架构案例分析。 层次结构缺点就是效率问题&#xff0c;上一层调用下一层。 1、着重写中间层 组件设计&#xff1a;面向接口编程&#xff0c;分为接口和实现类。 实体设计&#xff1a;实体表…

无需公网IP,教学系统如何实现远程一站式管理维护?

全国多所高校应用红亚科技研发的一套教学实验系统平台&#xff0c;此实验系统服务器分别部署在学校内部&#xff0c;与校内的各种教学资源整合在一起&#xff0c;向校内师生提供服务。 红亚总部设立在北京&#xff0c;虽说在全国22个省会均设有办事处&#xff0c;在面对全国多…

【ESP32 + Edge Impulse平台】运行AI算法模拟多传感器数据融合实现异常检测

本篇博文主要以ESP32+MQ Sensor 气体传感器为例,通过连接 Edge Impulse 平台,实现数据的实时采集和训练,进而实现在嵌入式设备上部署 ML 机器学习。本教程介绍如何使用 Edge Impulse 和机器学习来实现ESP32 异常检测系统,系统使用一个机器学习模型,检测气体何时出现异常。…

JOSEF约瑟 闭锁继电器 LB-7 YDB-100 100V 50HZ 控制断路器的合闸或跳闸

闭锁继电器LB-7导轨安装名称:闭锁继电器型号:LB-7闭锁继电器额定电压100V功率消耗≤10VA触点容量220V1.5A40W返回系数≥0.8 LB-1A、LB-1D、DB-1、HBYB-102/D YDB-100、HLO、DB-100、LB-7型闭锁继电器 一、用途 LB-7型闭锁继电器(以下简称继电器)用于发电厂及变电所内高压母线…

Vim教程

目录 vim 介绍 常用的四种模式 首先先学会如何正确进入和退出vim&#xff1a; normal模式 insert模式&#xff1a; command模式&#xff1a; v-block模式&#xff1a; vim异常退出 vim配置 vim 介绍 Vim是一款高度可定制的文本编辑器&#xff0c;它的前身是Vi&#xf…

前端—— 分层模型和应用协议

1 分层模型 MAC地址 可以认为计算机专属&#xff0c;可以认为每台计算机的 MAC地址 固定不变&#xff1b; IP地址 可以认为是计算机当前的【家庭地址】&#xff0c;动态唯一&#xff0c;家庭地址变化&#xff0c;IP地址 也跟着变化&#xff1b; 举个例子&#xff0c;A 给 B 发…

踩坑日记 uniapp 底部 tabber遮挡住购物车结算

tabbar 被购物车结算遮挡 在小程序上tabbar没有将固定栏遮挡&#xff0c;如果直接调高&#xff0c;浏览器H5页面是对了&#xff0c;但在小程序上面离底部的定位就太高了 原代码 // 底部结算样式.shop-foot {border-top: 2rpx solid #F7F7F7;background-color: #FFF;position: …

通过IP地址如何计算相关地址

以IP地址为1921681005 子网掩码是2552552550为例。算出网络地址、广播地址、地址范围、主机数。 分步骤计算 1&#xff09; 将IP地址和子网掩码换算为二进制&#xff0c;子网掩码连续全1的是网络地址&#xff0c;后面的是主机地址。 虚线前为网络地址&#xff0c;虚线后为主机…

【Pod】

Pod 一、Pod基本概念二、Pod的使用方式pause容器&#xff08;pod的基础容器&#xff09;核心功能pause容器使得Pod中所有容器可以共享两种资源&#xff1a;网络和存储网络存储 三、Pod分类自主式Pod/静态pod控制器管理的Pod 四、三种容器五、镜像拉取策略&#xff08;image Pul…