密码管理 - 使用BitWarden/VaultWarden自托管密码服务 - 折腾记录

news2025/3/14 0:54:18

密码管理 - 使用Bitwarden/Vaultwarden自托管密码服务 - 折腾记录

前言

某天(大约两周前了至少 一直没找到机会记录)逛Github发现了开源的密码管理服务Bitwarden,能自托管、能加密、多端适配。

这,,不是让人如获至宝吗。于是就开始折腾了。

折腾Bitwarden

镜像无法拉取

在服务器上按照bitwarden/server提示进行操作,拉取脚本并执行,然后无法拉取指定镜像。

解决办法有3:

  1. 在服务器上配置特殊网络环境
  2. 寻找可用镜像
  3. 本地魔法拉取并上传镜像到服务器,并修改脚本源码

于是我修改了脚本源码,分析环境变量并提前下载好指定的镜像版本,并注释掉了docker pull命令。

这个脚本还会下载其他脚本,我还修改了脚本为不下载其他脚本而是直接执行本地下载好的脚本文件。

每次尝试都需要重新输入所有内容。

无法认证

使用bitwarden的自托管服务也需要在bitwarden官网提交邮箱并获得ID和KEY,只有服务器上认证通过了这个ID和KEY,才能继续执行,否则会直接报错。

不知为何,无论如何尝试都始终无法验证成功。因此docker会启动失败。

再次运行安装脚本时,脚本检测本地文件认为已经安装成功,就会拒绝安装。想要uninstall又提示卸载失败。

每次尝试都需要手动删除执行到一般的缓存文件、新建文件夹并上传“魔改版”子脚本、重新输入所有内容。

资源占用

官方要求内存至少2G,有博客说部署成功后未进行任何操作内存占用就达到1G以上。对于我那小学生机,还是放弃了吧。

改进建议

  1. 输入内容保存到本地,下次运行时可以直接询问是否修改(或者像cuda安装时那样可以手动选择并修改一些配置),要不然每次重新尝试需要输入的内容有点多(域名、数据库配置信息等)。也许是因为在良好的互联网环境下几乎可以一次完成,所以不会存在这个问题吧。
  2. “安装过”检测。启动失败了不代表安装成功,下次执行安装命令不应该拒绝安装。
  3. 有无“ID和KEY验证失败”的原因说明。
  4. 能占据资源小一些的话就更好了。

折腾Vaultwarden

好在有大佬用rust重写了bitwarden的服务端,可以完美兼容所有bitwarden客户端所需服务端api。资源占用小且易部署。

似乎之前这个项目叫bitwarden_rs,后面为了防止商标侵权之类的改名为了vaultwarden。我使用的部署方式是docker-compose。

客户端表示不支持

一切“顺利”,诶,不是说vaultwarden完美覆盖了所有bitwarden服务端的api吗,为啥我这bitwarden的客户端(浏览器插件)就不认我这服务器呢?

登录时候选择自托管服务器,总是说登录失败。在服务器上看log是访问了一个不存在的url。

我甚至想过魔改docker镜像,修改一下服务的路径。结果发现除了我没有人遇到过这个问题。

后面我突然发现,执行docker images的时候,vaultwarden/server:latestCREATED3 years ago

好家伙,原来是因为使用的阿里云“阿里服务器专属docker镜像服务”,这个服务似乎很久不更新了。

在搜镜像源的时候,发现很多镜像提供者陆陆续续关闭了,包括很多互联网大厂和顶尖高校,这些大厂/高校还在正常提供其他镜像服务,但是说“由于ZhengCe原因关停”。

也许在不久的将来,其他镜像服务也会陆续下架?吾不敢言。

最后找了个镜像源并指定tag为1.31.0成功了。这里对镜像提供者表示感谢。

证书链不受信任

网页版、浏览器插件、安卓APP使用都十分顺利,完美!准备试一段时间然看看是否要完全替代Chrome的密码管理了,毕竟连Edge都能不经你询问直接导入所有Chrome密码。

突然,手机APP同步时提示“同步失败”,重新登录时提示“证书链不受信任”。诶,手机上访问网页版也正常啊,是安卓APK证书链信任机制的锅吗?还是之前抓包导入自定义证书导致的?不应该啊。

之后的几天里,这种现象时不时出现,有时发生,有时又一切正常。有时流量会这样,有时连上wifi也不行。我甚至怀疑过是不是因为Cloudflare CDN导致每次访问到的节点不一样,我也甚至想过导入一些证书到手机上(但安卓从7.0开始就不信任用户自己导入的证书了)。

直到有一天,What The Fantastic,我访问我自己的网站访问不了了。。。我的服务器上搭建了很多服务,为了保护主机ip,全部使用了互联网界清流CF的CDN。那天,任何子域名,一概无法正常访问。那段时间,正常访问Github没有一秒可以成功过。

我甚至怀疑过是不是北邮V-P.N的BUG,也怀疑过xxx,还在Termux上进行了一堆的debug。可能是笔者计网知识薄弱导致的错误推断,结论是并非安卓机配置问题,而是遭到了神秘力量的强有力封锁。

不过过了那十来天后现象有所缓和,又不想关掉CDN暴露主机真实IP,就先这样吧。。。大多时候一切正常,偶尔网络链路会受到一些魔改。

End

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://blog.letmefly.xyz/2025/02/15/Other-Password-SelfHostPasswordToolUsingBitwardenVaultwarden

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

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

相关文章

C语言-章节 1:变量与数据类型 ——「未初始化的诅咒」

在那神秘且广袤无垠的「比特大陆」上,阳光奋力地穿过「内存森林」中错综复杂的代码枝叶缝隙,洒下一片片斑驳陆离、如梦似幻的光影。林间的空气里,弥漫着一股浓郁的十六进制锈蚀味,仿佛在诉说着这片森林中隐藏的古老秘密。 一位零基…

HTML的入门

一、HTML HTML(HyperText Markup Language,超文本标记语言)是一种用来告知浏览器如何组织页面的标记语言。 超文本:就是超越了文本;HTML不仅仅可以用来显示文本(字符串、数字之类),还可以显示视频、音频等…

闭源大语言模型的怎么增强:提示工程 检索增强生成 智能体

闭源大语言模型的怎么增强 提示工程 检索增强生成 智能体 核心原理 提示工程:通过设计和优化提示词,引导大语言模型进行上下文学习和分解式思考,激发模型自身的思维和推理能力,使模型更好地理解和生成文本,增强其泛用性和解决问题的能力。检索增强生成:结合检索的准确…

【图像加密解密】空间混沌序列的图像加密解密算法复现(含相关性检验)【Matlab完整源码 2期】

1、说明 本文给出详细完整代码、完整的实验报告和PPT。 环境:MATLAB2019a 复现文献:[1]孙福艳,吕宗旺.Digital image encryption with chaotic map lattices[J].Chinese Physics B,2011,20(04):136-142. 2、部分报告内容 3 部分源码与运行步骤 3.1 部…

QxOrm生成json

下载Qxorm-1.5版本 使用vs打开项目,直接生成即可: lib目录中会生成dll和lib文件 新建Qt项目使用Qxorm: 将QxOrm中上面三个目录拷贝到新建的Qt项目中 pro文件添加使用QxOrm第三方库 INCLUDEPATH $$PWD/include/ LIBS -L"$$PWD/lib" LIBS…

ASP.NET Core Web应用(.NET9.0)读取数据库表记录并显示到页面

1.创建ASP.NET Core Web应用 选择.NET9.0框架 安装SqlClient依赖包 2.实现数据库记录读取: 引用数据库操作类命名空间 创建查询记录结构类 查询数据并返回数据集合 3.前端遍历数据并动态生成表格显示 生成结果:

uniapp商城之首页模块

文章目录 前言一、自定义导航栏1.静态结构2.修改页面配置3.组件安全区适配二、通用轮播组件1. 静态结构组件2.自动导入全局组件3.首页轮播图数据获取三、首页分类1.静态结构2.首页获取分类数据并渲染四、热门推荐1.静态结构2.首页获取推荐数据并渲染3.首页跳转详细推荐页五、猜…

以若依移动端版为基础,实现uniapp的flowable流程管理

1.前言 此代码是若依移动端版为基础,实现flowable流程管理,支持H5、APP和微信小程序三端。其中,APP是在安卓在雷电模拟器环境下完成的,其他环境未测试,此文章中所提及的APP均指上述环境。移动端是需要配合若依前后端分…

C++:高度平衡二叉搜索树(AVLTree) [数据结构]

目录 一、AVL树 二、AVL树的理解 1.AVL树节点的定义 2.AVL树的插入 2.1更新平衡因子 3.AVL树的旋转 三、AVL的检查 四、完整代码实现 一、AVL树 AVL树是什么?我们对 map / multimap / set / multiset 进行了简单的介绍,可以发现,这几…

2D 游戏艺术、动画和光照

原文:https://unity.com/resources/2d-game-art-animation-lighting-for-artists-ebook 笔记 用Tilemap瓷砖大小为1单元,人物大小在0.5~2单元 PPU :单位像素 pixels per unit 2160 4K分辨率/ 正交相机size*2 完整屏幕显示像素点 有骨骼动…

4、C#基于.net framework的应用开发实战编程 - 测试(四、二) - 编程手把手系列文章...

四、 测试; 四.二、实际运行; 在应用调试完毕,Bug基本解决的时候就需要对应用进行实际运行来进行查看使用体验及分发的准备工作。 1、 运行设置; 在启动项目上右键属性,点击生成,将顶部的配置改…

栈与队列(C语言版)

文章目录 栈与队列1. 栈基本操作实现(基于链表)代码运行结果 应用场景 2. 队列基本操作实现代码运行结果 应用场景 栈与队列 1. 栈 栈是一种操作受限的线性结构。操作受限体现在,栈只能在一端添加和删除元素,符合后进先出 ( LIFO ) 的特性,…

【算法专场】哈希表

目录 前言 哈希表 1. 两数之和 - 力扣(LeetCode) 算法分析 算法代码 面试题 01.02. 判定是否互为字符重排 ​编辑算法分析 算法代码 217. 存在重复元素 算法分析 算法代码 219. 存在重复元素 II 算法分析 算法代码 解法二 算法代码 算法…

【设计模式】【行为型模式】迭代器模式(Iterator)

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…

mac 意外退出移动硬盘后再次插入移动硬盘不显示怎么办

第一步:sudo ps aux | grep fsck 打开mac控制台输入如下指令,我们看到会出现两个进程,看进程是root的这个 sudo ps aux|grep fsck 第二步:杀死进程 在第一步基础上我们知道不显示u盘的进程是:62319,我们…

如何下载AndroidStudio的依赖的 jar,arr文件到本地

一、通过jitpack.io 下载依赖库 若需要下载 com.github.xxxxx:yy-zzz:0.0.2 的 jar则 https://jitpack.io/com/github/xxxxx/yy-zzz/0.0.2/ 下会列出如下build.logyy-zzz-0.0.2.jaryy-zzz-0.0.2.pomyy-zzz-0.0.2.pom.md5yy-zzz-0.0.2.pom.sha1jar 的下载路径为https://jitpack…

CEF132编译指南 MacOS 篇 - 构建 CEF (六)

1. 引言 经过前面一系列的精心准备,我们已经完成了所有必要的环境配置和源码获取工作。本篇作为 CEF132 编译指南系列的第六篇,将详细介绍如何在 macOS 系统上构建 CEF132。通过配置正确的编译命令和参数,我们将完成 CEF 的构建工作&#xf…

Python大数据可视化:基于python的电影天堂数据可视化_django+hive

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 电影数据 看板展示 我的信息 摘要 电影天堂数据可视化是…

LLM之循环神经网络(RNN)

在人工智能的领域中,神经网络是推动技术发展的核心力量。今天,让我们深入探讨循环神经网络(RNN) 一、神经网络基础 (1)什么是神经网络 神经网络,又称人工神经网络,其设计灵感源于人…

Java:204 基于springboot零食销售商城的设计与实现

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统主要分为管理员和用户、商家。 用户可以使用网站首页的登录注册界面进行在线登录注册,并且注册登录后方可使用系统的各种功能以及购物…