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密码管理系统已经介绍完了,其它的功能我这里就不一 一细说了各位大佬可以自行研究,如果有遇到问题可以私信小编。
相关文章:
docker部署Vaultwarden密码共享管理系统
Vaultwarden是一个开源的密码管理器,它是Bitwarden密码管理器的自托管版本。它提供了类似于Bitwarden的功能,允许用户安全地存储和管理密码、敏感数据和身份信息。 Vaultwarden的主要特点包括: 1. 安全的数据存储:Vaultwarden使…...
低代码开发技术选型
低代码的技术路径 低代码开发低代码开发优势低代码的技术路径1.表格驱动2.表单驱动3.数据模型4.领域模型 低代码的核心能力企业级低代码开发平台的11项关键能力低代码平台的流程引擎选型低代码平台的流程设计器选型低代码平台的表单设计器选型低代码平台的Vue.js 框架选型 低代…...
在vue2中,v-model和.sync的区别
最近在封装一个弹窗组件时,用了比较复杂的逻辑去做显示和隐藏的逻辑,在查看同事的代码之后,才知道还有更简单的方法,自己已经忘了一些API. popup组件里统一的template: <div v-ifisShowPopup> // 弹窗内容 <…...
nginx 配置
一、nginx安装 下载地址:http://nginx.org/en/download.html,和Keepalived搭配使用,防止nginx挂掉 二、nginx配置 ########### 每个指令必须有分号结束。################# #user administrator administrators; #配置用户或者组…...
【计算机视觉|人脸建模】学习从图像中回归3D面部形状和表情而无需3D监督
本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Learning to Regress 3D Face Shape and Expression from an Image without 3D Supervision 链接:[1905.06817] Learning to Regress 3D Face Shape and Expression from an I…...
Linux系统之部署h5ai目录列表程序
Linux系统之部署h5ai目录列表程序 一、h5ai介绍1.1 h5ai简介1.2 h5ai特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、安装httpd软件4.1 检查yum仓库4.2 安装httpd软件4.3 启动httpd服务4.4 查看htt…...
Java-Exception
目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题,了解如何…...
C++并发与多线程(2) | 线程运行开始和结束的基本方式
当程序运行起来,生成一个进程,该进程所属的主线程开始自动运行。当主线程从main()函数返回,则整个进程执行完毕。 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,就代表着我们这个线程运行结束。 整个进…...
vue3前端开发-flex布局篇
文章目录 1.传统布局与flex布局优缺点传统布局flex布局建议 2. flex布局原理2.1 布局原理 3. flex常见属性3.1 父项常见属性3.2 子项常见属性 4.案例实战(携程网首页) 1.传统布局与flex布局优缺点 传统布局 兼容性好布局繁琐局限性,不能再移动端很好的布局 flex布…...
网络是什么?(网络零基础入门篇)
1.如何理解局域网和广域网? 2.路由器和交换机是怎么样工作的? 3.三层交换机能不能代替路由器? -- 局域网 广域网 -- 企业网架构,运营商架构,数据中心架构 -- 局域网 通过 交换机连接的 转发 相同的ip地址…...
【JavaEE】线程安全的集合类
文章目录 前言多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表1. HashTable2. ConcurrentHashMap 前言 前面我们学习了很多的Java集合类,像什么ArrayList、Queue、HashTable、HashMap等等一些常用的集合类,之前使用这些都是在单线程中…...
【C++算法】is_partitioned、partition_copy和partition_point
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、is_partitioned函数:1.1 is_partitioned是什么?1.2 函数原型1.3 示例代码1.4 更多示例代码 二、partition_copy函数2.1 概念2.2 函数…...
MyBatis(JavaEE进阶系列4)
目录 前言: 1.MyBatis是什么 2.为什么要学习MyBatis框架 3.MyBatis框架的搭建 3.1添加MyBatis框架 3.2设置MyBatis配置 4.根据MyBatis写法完成数据库的操作 5.MyBatis里面的增删改查操作 5.1插入语句 5.2修改语句 5.3delete语句 5.4查询语句 5.5like查…...
『力扣每日一题15』:买卖股票的最佳时机
一、题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…...
Java中栈实现怎么选?Stack、Deque、ArrayDeque、LinkedList(含常用Api积累)
目录 Java中的Stack类 不用Stack有以下两点原因 1、从性能上来说应该使用Deque代替Stack。 2、Stack从Vector继承是个历史遗留问题,JDK官方已建议优先使用Deque的实现类来代替Stack。 该用ArrayDeque还是LinkedList? ArrayDeque与LinkList区别࿱…...
雷达分辨率单元、单向/双向雷达方程、天气雷达方程简介
一、点状目标 如果两个点状目标在一个分辨率单元中,经典脉冲雷达只能看到一个目标。 点状目标 二、雷达距离分辨率 对于简单的键控开/关脉冲调制: 对于使用脉冲内调制的雷达,距离分辨率取决于压缩脉冲的脉冲持续时间。脉冲压缩比(PCR)取决于传输带宽BWtx,即距离分辨率取…...
RabbitMQ之Fanout(扇形) Exchange解读
目录 基本介绍 适用场景 springboot代码演示 演示架构 工程概述 RabbitConfig配置类:创建队列及交换机并进行绑定 MessageService业务类:发送消息及接收消息 主启动类RabbitMq01Application:实现ApplicationRunner接口 基本介绍 Fa…...
Redisson—分布式集合详述
7.1. 映射(Map) 基于Redis的Redisson的分布式映射结构的RMap Java对象实现了java.util.concurrent.ConcurrentMap接口和java.util.Map接口。与HashMap不同的是,RMap保持了元素的插入顺序。该对象的最大容量受Redis限制,最大元素数…...
开发做前端好还是后端好?这是个问题!
前言 随着互联网的快速发展,越来越多的人选择从事Web开发行业,而Web开发涉及到前端和后端两个方面,相信许多人都曾经对这两个方面进行过探究。而且编程世界就像一座大城市,前端开发和后端开发就像城市的两个不同街区。作为初学者&…...
运行huggingface Kosmos2报错 nameerror: name ‘kosmos2tokenizer‘ is not defined
尝试运行huggingface上的Kosmos,https://huggingface.co/ydshieh/kosmos-2-patch14-224失败,报错: nameerror: name kosmos2tokenizer is not defined查看报错代码: vi /root/.cache/huggingface/modules/transformers_modules/ydshieh/kosmos-2-patch14-224/48e3edebaeb…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
