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

news2024/11/16 15:58:56

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.coloradmin.cn/o/1067041.html

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

相关文章

C++递归函数

在本文中,您将学习创建递归函数。调用自身的函数。 调用自身的函数称为递归函数。并且,这种技术称为递归。 递归在C 中如何工作? void recurse() {... .. ...recurse();... .. ... }int main() {... .. ...recurse();... .. ... } 下图显…

在模拟器上安装magisk实现Charles抓https包(一)

本机环境:win7 64位,Python3.8.10,逍遥模拟器版本9.0.6,安卓版本9(手机里的设置-系统-关于平板电脑-Android版本)。 首先下载magisk,下载地址为Releases topjohnwu/Magisk GitHub&#xff0c…

Combination Lock

题目描述 新学期开学,您又回到了学校。您需要记住如何操作储物柜上的组合锁。一个组合锁的常见设计如图 1 所示。组合锁有一个圆形刻度表盘,在表盘上,有 40 个编号为从 0 至 39 的刻度,正上方有一个刻度指针。一个组合由这些数字…

ggkegg | 用这个神包玩转kegg数据库吧!~(一)

1写在前面 好久没更了,实在是太忙了,值班真的是根本不不睡觉啊,一忙一整天,忙到怀疑人生。😭 最近看到比较🔥的就是ggkegg包,感觉使用起来还是有一定难度的。🫠 和大家分享一下使用教…

波浪input输入框文字边框动画

一个input输入框的小动画,大家可以按需引入和修改 input的动画表现为,文字提示波浪动画 效果图如下 源码如下 tips: 有不懂的可以在评论区问博主 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name&q…

mac有些软件无法删除,CleanMyMac X 4.14.3轻松帮你解决

作为Mac用户&#xff0c;你会发现mac有些软件无法删除&#xff0c;这会导致不必要的空间浪费&#xff0c;也可能会干扰你的系统稳定性。但是不用担心&#xff0c;小编会告诉你遇到这种情况应该怎么办&#xff1f; mac有些软件无法删除 首先&#xff0c;让我们一起探究一下背后…

轻量级MobileSAM:比FastSAM快4倍,处理一张图像仅需10ms(附源代码)

论文地址&#xff1a;https://arxiv.org/pdf/2306.14289.pdf 代码地址&#xff1a;https://github.com/ChaoningZhang/MobileSAM 一、概要简介 SAM是一种prompt-guided的视觉基础模型&#xff0c;用于从其背景中剪切出感兴趣的对象。自Meta研究团队发布SA项目以来&#xff0c…

​孤网双机并联逆变器下垂控制策略(包括仿真模型,功率计算模块、下垂控制模块、电压电流双环控制模块​)(Simulink仿真)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

土木硕设计院在职转码上岸

一、个人介绍 双非土木硕&#xff0c;98年&#xff0c;目前在北京&#xff0c;职位为前端开发工程师&#xff0c;设计院在职期间自学转码上岸&#x1f33f; 二、背景 本人于19年开始土木研究生生涯&#xff0c;研二期间去地产实习近半年(碧桂园和世茂&#xff0c;这两家的地产…

java api System类

currentTimeMills() package daysreplace;public class Test {public static void main(String[] args) {long start System.currentTimeMillis();// System.out.println(start"毫秒");for (int i 0; i < 100; i) {System.out.println("计算执行100次输出…

迭代合成中小量液体样品静态法饱和蒸气压高精度自动测量解决方案

摘要&#xff1a;针对目前静态法液体饱和蒸气压测量中存在测量精度差、自动化程度低以及无法进行微量液体样品测试的问题&#xff0c;本文提出了微量样品蒸气压高精度自动测量解决方案。解决方案基于静态法原理&#xff0c;采用了低漏率的测试装置和高精度电容真空计&#xff0…

MM-Camera架构-Open 流程分析

文章目录 1 camera open总结2 Camera Open 代码流程分析2.1 Java 层 Camera Class 使用介绍2.2 Frameworks 层 Camera.java 分析2.2.1 \[JNI] CameraService初始化 native\_setup( ) —> android\_hardware\_Camera\_native\_setup( )2.2.2 \[AIDL] interface ICameraServic…

【Java 进阶篇】HTML文本标签详解

HTML&#xff08;Hypertext Markup Language&#xff09;是构建Web页面的基础。在HTML中&#xff0c;文本标签用于定义和呈现文本内容。本文将详细介绍HTML中的一些常用文本标签&#xff0c;包括段落、标题、文本样式等&#xff0c;适用于初学者&#xff0c;让您了解如何创建和…

可视化大屏怎么打破数据孤岛,整合分析数据?

在今天这个数据驱动的时代&#xff0c;企业面临着海量数据带来的挑战。其中最突出的问题之一就是数据孤岛现象&#xff0c;它限制了数据的全面利用和价值挖掘。但这一问题在奥威BI系统前都不算什么。奥威BI系统的可视化大屏不仅可对接多业务系统数据&#xff0c;更可智能整合、…

力扣-404.左叶子之和

Idea attention&#xff1a;先看清楚题目&#xff0c;题目说的是左叶子结点&#xff0c;不是左结点【泣不成声】 遇到像这种二叉树类型的题目呢&#xff0c;我们一般还是选择dfs&#xff0c;然后类似于前序遍历的方式加上判断条件即可 AC Code class Solution { public:void d…

数据结构与算法-前缀树

数据结构与算法-前缀树详解 1 何为前缀树 2 前缀树的代码表示及相关操作 1 何为前缀树 前缀树 又称之为字典树,是一种多路查找树,多路树形结构,是哈希树的变种&#xff0c;和hash效率有一拼&#xff0c;是一种用于快速检索的多叉树结构。 性质&#xff1a;不同字符串的相同…

Libevent库的介绍以及使用示例

Libevent库的介绍以及使用示例 Chapter1 Libevent库的介绍以及使用示例1、Libevent概述2、Libevent使用模型3、Libevent支持的事件类型4、示例一&#xff1a;简单使用Libevent注册信号事件以及定时事件5、 示例二&#xff1a;Libevent实现TCP服务器 Chapter2 Libevent库的介绍与…

【Java 进阶篇】HTML 图片标签详解

HTML&#xff08;超文本标记语言&#xff09;是构建Web页面的标准语言&#xff0c;它包含了许多标签&#xff0c;用于定义和排列页面内容。在Web开发中&#xff0c;显示图像是非常常见的需求之一&#xff0c;为此HTML提供了<img>标签来插入图像。本文将详细介绍HTML图片标…

TCP相关面试题

TCP相关面试题 题目1 介绍一下TCP三次握手的过程 介绍TCP三次握手应该从3个方面进行回答&#xff0c;分别是数据包名称&#xff0c;客户端与服务端的状态变化&#xff0c;数据包的序号变化。而不能只是简单回答发送的数据包名称。 TCP三次握手的过程如下&#xff1a; 从数据…