使用 Ubuntu + Docker + Vaultwarden + Tailscale 自建密码管理器
使用 Ubuntu + Docker + Vaultwarden + Tailscale 自建密码管理器

先决条件
-
一台运行
Ubuntu系统的服务器。可以是云提供商的VPS、家庭网络中的树莓派、或者Windows电脑上的虚拟机等等 -
一个
Tailscale账户。如果还没有Tailscale账户,可以通过此链接迅速创建一个,这里不再赘述
安装 Tailscale
通过一键安装命令在服务器上安装 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
将 Tailscale 启动
sudo tailscale up --advertise-exit-node --ssh --operator=<Username> --authkey=<Authkeys>
-
<Username>替换成你在机器上的用户名 -
<Authkeys>替换成你的 验证密钥,需要在Admin console的Settings-Personal Settings-Keys-Auth keys中 点击Generate auth key...创建
开启端口转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
安装 Docker
在新主机上首次安装 Docker 引擎之前,需要设置 Docker 存储库。可以参考官方手册
设置 Docker 的 apt 存储库
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc# Add the repository to Apt sources:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
安装 Docker 包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
部署 vaultwarden 映像
创建数据目录
mkdir /home/$USER/vw-data
启动 vaultwarden 镜像
sudo docker run -d --name vaultwarden -v /home/$USER/vw-data/:/data/ -p 127.0.0.1:8080:80 --restart unless-stopped vaultwarden/server:latest
-
将容器内的
80端口绑定到服务器的8080端口,下一步将会用到这个端口 -
使用
--restart unless-stopped选项以确保服务器在遇到问题时继续运行 -
将主机上的
/home/$USER/vw-data/目录挂载到容器内的/data/目录,用于存储应用程序数据
使用 Tailscale 通过 HTTPS 将 vaultwarden 提供给 Tailnet
tailscale serve --bg --set-path /vault 127.0.0.1:8080
这样,便能从你的 Tailnet 上的设备使用浏览器访问 https://<machinename>.<tailnet-name>.ts.net/vault/,但需要将URL中的 <machinename> 和 <tailnet-name> 替换为您自己的机器名称和 Tailnet 名称
参考连接:
-
Manage passwords over your tailnet with vaultwarden
-
GitHub - dani-garcia/vaultwarden: Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
相关文章:
使用 Ubuntu + Docker + Vaultwarden + Tailscale 自建密码管理器
使用 Ubuntu Docker Vaultwarden Tailscale 自建密码管理器 先决条件 一台运行 Ubuntu 系统的服务器。可以是云提供商的 VPS、家庭网络中的树莓派、或者 Windows 电脑上的虚拟机等等 一个 Tailscale 账户。如果还没有 Tailscale 账户,可以通过此链接迅速创建一个…...
YOLOv7添加注意力机制和各种改进模块
YOLOv7添加注意力机制和各种改进模块代码免费下载:完整代码 添加的部分模块代码: ########CBAM class ChannelAttentionModule(nn.Module):def __init__(self, c1, reduction16):super(ChannelAttentionModule, self).__init__()mid_channel c1 // red…...
【OpenGL第一个程序】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、OpenGL第一个程序 前言 本文介绍了OpenGL入门的第一个程序,有详细的注释,便于大家理解其中的逻辑。 一、OpenGL第一个程序 #inclu…...
GPT-4O神器来袭!自动生成Figma设计稿,移动端开发瞬间加速!
2024年5月29日- 近日,一款基于GPT-4O技术的创新工具成功实现根据产品需求文档(PRD)自动生成Figma设计稿的功能,为移动端应用开发者带来革命性的便捷。据悉,该功能主要针对移动端应用进行优化,并支持使用高质…...
清华大学提出IFT对齐算法,打破SFT与RLHF局限性
监督微调(Supervised Fine-Tuning, SFT)和基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)是预训练后提升语言模型能力的两大基础流程,其目标是使模型更贴近人类的偏好和需求。 考虑到监督…...
TS(TypeScript)中Array数组无法调出使用includes方法,显示红色警告
解决方法 打开tsconfig.json文件,添加"lib": ["es7", "dom"]即可。 如下图所示。...
基于Kafka的日志采集
目录 前言 架构图 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 启动 二、部署filebeat 部署filebeat 添加配置文件 启动 三、部署kibana 部署kibana 修…...
某烟草企业数字化转型物流信息化咨询项目规划方案(117页PPT)
方案介绍: 烟草企业数字化转型物流信息化咨询项目规划方案将为企业带来多方面的价值,包括提升物流运营效率、降低物流成本、优化供应链管理、增强企业竞争力和促进可持续发展等。这些价值的实现将有助于企业在激烈的市场竞争中保持领先地位并实现可持续…...
失落的方舟 命运方舟台服封号严重 游戏封IP怎么办
步入《失落的方舟》(Lost Ark),这款由Smilegate精心打造的宏大规模在线角色扮演游戏(MMORPG),您将启程前往阿克拉西亚这片饱经沧桑的奇幻大陆,展开一场穿越时空的壮阔探索。在这里,一…...
2.10 mysql设置远程访问权限
2.10 mysql设置远程访问权限 目录1. 管理员运行mysql命令窗口2. 使用 root 用户重新登录 MySQL3. 修改用户权限4. 修改mysql安装目录下的my.ini 目录 说明: Mysql8.0 设置远程访问权限 一、Mysql8.0 设置远程访问权限 1. 管理员运行mysql命令窗口 2. 使用 root 用…...
C# 证件照替换底色与设置背景图---PaddleSegSharp
PaddleSegSharp 是一个基于百度飞桨PaddleSeg项目的人像分割模块而开发的.NET的工具类库。 PaddleSegSharp 中PaddleSeg.dll文件是基于开源项目最新发布版本PaddleSeg PaddleSeg的版本修改而成的C动态库,基于opencv的x64编译而成的。 PaddleSeg是基于飞桨PaddlePa…...
HCIA-HarmonyOS Device Developer 课程大纲
一:OpenHarmony 介绍 - ( 3 课时) - OpenHarmony 简介;OpenHarmony 设计理念;OpenHarmony 设计理念概述; - OpenHarmony 试图解决的问题;应用生态割裂问题;用户数据割裂问题&#…...
洗地机哪个牌子最好用?十大名牌洗地机排行榜
作为一种新兴的智能家居产品,洗地机的市场规模已经突破了百亿大关。如此庞大的市场自然吸引了大量资本的涌入,许多品牌纷纷推出自己的洗地机产品,试图在这个竞争激烈的市场中占据一席之地。然而,面对如此多的品牌和型号࿰…...
Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)
一、Git上获取xlua 最新的xlua包,下载地址链接:https://github.com/Tencent/xLua 二、Unity添加xlua 解压xlua压缩包后,将xlua里的Assets里的文件直接复制进Unity的Assets文件夹下。 成功导入后,unity工具栏会出现xlua选项。 …...
Qt 基于FFmpeg的视频转换器 - 转GIF动图
Qt 基于FFmpeg的视频转换器 - 转GIF动图 引言一、设计思路二、核心源码三、参考链接 引言 gif格式的动图可以通过连续播放一系列图像或视频片段来展示动态效果,使信息更加生动形象,可以很方便的嵌入到网页或者ppt中。上图展示了视频的前几帧转为gif动图的…...
HTML新春烟花盛宴
目录 写在前面 烟花盛宴 完整代码 修改文字...
第十四届蓝桥杯c++研究生组
A 混乘数字 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展:求二进制的每位数字 (注意:进制转换、1的个数、位运算&#…...
KDD 2024|基于隐空间因果推断的微服务系统根因定位
简介:本文介绍了由清华大学、南开大学、eBay、微软、中国科学院计算机网络信息中心等单位共同合作的论文《基于隐空间因果推断的受限可观测性场景的微服务系统根因定位》。该论文已被KDD 2024会议录用。 论文标题:Microservice Root Cause Analysis Wit…...
白鹭群优化算法,原理详解,MATLAB代码免费获取
白鹭群优化算法(Egret Swarm Optimization Algorithm,ESOA)是一种受自然启发的群智能优化算法。该算法从白鹭和白鹭的捕食行为出发,由三个主要部分组成:坐等策略、主动策略和判别条件。将ESOA算法与粒子群算法(PSO)、遗传算法(GA)…...
【源码】2024完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城
后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 前端UNIAPP 后端PHP 一键部署版本 获取方式: 微:uucodes...
基于LSTM的CasRel模型变体实现与性能对比分析
基于LSTM的CasRel模型变体实现与性能对比分析 最近在关系抽取这个领域,大家的目光似乎都被Transformer架构给吸引走了。确实,像BERT、RoBERTa这些基于自注意力机制的模型,在各类NLP任务上表现都相当亮眼。但这就让我产生了一个疑问ÿ…...
实战应用:用快马平台将dc=y103pc=参数转化为电商筛选功能
今天想和大家分享一个在电商项目中特别实用的功能开发经验——如何把URL参数(比如dcy103&pchigh这种格式)转化成用户友好的商品筛选面板。这个需求在实际业务中特别常见,比如用户分享一个筛选好的商品列表链接,其他人打开时能…...
利用MathType公式与GLM-OCR结合实现理科试卷自动批改
利用MathType公式与GLM-OCR结合实现理科试卷自动批改 1. 引言 批改理科试卷,尤其是数学、物理这类包含大量公式和符号的试卷,对老师来说一直是个耗时费力的活儿。一张试卷,既要看文字答案对不对,又要检查复杂的公式推导有没有写…...
Claude Code 愚人节彩蛋:终端里的虚拟宠物伴侣
Claude Code 愚人节彩蛋:终端里的虚拟宠物伴侣 在 AI 编程助手的深处,藏着一个等待孵化的秘密——18 种 ASCII 精灵、5 级稀有度、完整的 RPG 属性系统。这可能是你见过的最可爱的命令行宠物。 意外的发现 在逆向分析 Claude Code 源码的过程中…...
UE5新手避坑:用C++实现关卡切换和字符串处理,别再复制粘贴了
UE5 C实战避坑指南:关卡切换与字符串处理的高效实践 刚接触UE5 C开发的程序员们,是否经常遇到关卡切换不生效、字符串比较结果诡异、GetAllActorsOfClass导致性能骤降等问题?本文将深入剖析这些典型陷阱,带你从底层机制理解正确做…...
车内人体健康检测:赋能智能座舱健康,构建联网化驾乘健康生态
随着人工智能与物联网技术的快速迭代,汽车正从传统交通工具加速演进为集安全、健康、舒适于一体的智慧移动空间。其中,车内智能人体健康检测作为智能座舱健康体系的核心支撑,依托车内联网健康监测技术,打破传统座舱的功能边界&…...
Serilog:从结构化日志认知到 .NET 工程落地
MySQL 中的 count 三兄弟:效率大比拼! 一、快速结论(先看结论再看分析) 方式 作用 效率 一句话总结 count(*) 统计所有行数 最高 我是专业的!我为统计而生 count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄弟…...
LFM2.5-1.2B-Thinking-GGUF部署教程:Ubuntu/CentOS/Debian三平台通用安装步骤
LFM2.5-1.2B-Thinking-GGUF部署教程:Ubuntu/CentOS/Debian三平台通用安装步骤 1. 平台简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,特别适合在资源有限的环境中快速部署。该镜像内置了GGUF模型文件和llama.cpp运行时ÿ…...
Android Studio中文界面汉化终极指南:5分钟打造舒适开发环境
Android Studio中文界面汉化终极指南:5分钟打造舒适开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为An…...
手把手教你用Qwen2.5-Omni-7B:一个模型搞定文本、图片、音频和视频(附Python代码示例)
实战Qwen2.5-Omni-7B:全模态AI开发指南 第一次听说一个模型能同时处理文本、图片、音频和视频时,我的反应和大多数开发者一样——既兴奋又怀疑。直到亲手用Python调用了Qwen2.5-Omni-7B的API,看着它准确描述视频内容、回答图片问题、甚至生成…...
