惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
博客园 - Franky
V
V2EX
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 叶小钗
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
D
Docker
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
找回数字生活主导权,在云上部署Vaultwarden - 少数派
2024-05-20 · via 少数派

Hi,少数派社区的读者们,我是zysrefuse,这是我来少数派写的教程系列文章的第一篇,给大家带来一个开源密码管理器Vaultwarden的部署教程。

同学也许会问Vaultwarden是什么,我直接引用一下官方的定义

Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.Basically full implementation of Bitwarden API is provided.

用 Rust 编写的 Bitwarden 服务器 API 的替代实现,上游 Bitwarden 客户端兼容,非常适合运行官方资源密集型服务的自托管部署。基本上提供了 Bitwarden API 的完整实现。

出发点

自托管在自己的服务器或设备上运行、管理软件或服务越来越流行,一方面,开源社区代有才人出,不断奉献出功能和品质上不逊于收费产品的项目;另一方面,容器(docker)、虚拟化(KVM)等技术不断发展,将用户从繁琐的服务器运维操作中解放出来。加上云服务器厂商大价格战加剧,云服务越来越便宜。

bitwarden.com上家庭版每年的价格是40美元,但是阿里云99计划到2026年3月31日每年都是99元。.top域名新注价格1年12元,3年76元,续费价格 每年32元,阿里云Digicert 单域名证书一年68(可选) 每年最高199元价格上有优势。

⚠️但是服务器在国内需要进行IPC备案和公安备案⚠️ 时间成本上可能付出更多。

从购买到部署

第一步 购买云服务器及域名

前往阿里云

购买服务器,选择ECS 经济型e实例

购买域名,建议选择.top域名

购买ssl证书(可选)

  • 在阿里云控制台搜索 数字证书管理服务 侧边栏>ssl证书管理>免费证书>立刻购买
  • 产品-个人测试证书 证书类型-默认证书(3个月有效期) 如果想要一年有效期 证书类型-升级证书

第二步 IPC备案和公安备案

⚠️ 在中华人民共和国境内提供互联网信息服务,应当依法履行备案手续,所以我们需要进行备案 ⚠️

具体参考阿里云的ICP备案 指南,当IPC备案完成后就可以开始域名与DNS的配置

第三步 配置域名与DNS

进入云服务器 ECS 获取公网IP地址

进入云解析DNS >新手引导

进入数字证书管理服务 >SSL 证书管理 > 创建证书。证书签发后下载Nginx的格式的证书解压得到域名.pem和和域名.key(可选)

第四步 配置云服务器

操作系统: Ubuntu 22.04 64位

硬件配置:2核(vCPU) 2GiB 3 Mbps带宽 40GiBESSD Entry云盘

创建完 ECS实例后,通过Workbench远程连接以 root 用户身份登录(或用其他用户登录后运行 sudo su 切换为 root 身份),然后开始安装

安装docker

附上 Docker 官方部署文档(如果需要更详细的安装流程,请参考官方文档)

由于运营商网络原因,会导致您拉取Docker Hub镜像变慢,甚至下载失败。阿里云提供了官方的镜像加速器,从而加速官方镜像的下载。官方镜像加速参考文档

安装Vaultwarden

#将容器的页面复制到host,方便编辑
docker run -d --name vaultwarden  -v  /www/vw-data/:/data/   --restart unless-stopped  vaultwarden/server:latest 
docker cp  vaultwarden:/web-vault/ /www/vw-vault/
docker container stop vaultwarden
docker container rm vaultwarden
#需要在文本编辑器里面修改添加上你的主域名,这个代码允许任何人注册
docker run -d --name vaultwarden  -v  /www/vw-data/:/data/ -v /www/web-vault/:/web-vault/   --env DOMAIN="https://你的主域名"    --restart unless-stopped -p 80 vaultwarden/server:latest
#如果想要禁止其他人注册可以先删除再更改环境变量,重新创建容器
docker container stop vaultwarden
docker container rm vaultwarden
docker run -d --name vaultwarden  -v  /www/vw-data/:/data/ -v /www/web-vault/:/web-vault/   --env DOMAIN="https://你的主域名"   -v  SIGNUPS_ALLOWED=false   --restart unless-stopped -p 80 vaultwarden/server:latest
#查看容器ip地址
docker inspect vaultwarden | grep IPAddress

添加IPC备案号。

docker cp vaultwarden:/web-vault/index.html  ./
#编辑index.html文件
vim ./index.html
<html class="theme_light">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=1010">
    <meta name="theme-color" content="#175DDC">
    <title page-title>Bitwarden Web Vault</title>
    <link rel="apple-touch-icon" sizes="180x180" href="images/icons/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="images/icons/favicon-16x16.png">
    <link rel="mask-icon" href="images/icons/safari-pinned-tab.svg" color="#175DDC">
    <link rel="manifest" href="manifest.json">
    <script src="theme_head.8e5494e39b48bad5e654.js"></script>
    <link href="app/main.8e5494e39b48bad5e654.css" rel="stylesheet">
</head>

<body class="layout_frontend">
    <app-root>
        <div class="mt-5 d-flex justify-content-center">
            <div><img class="mb-4 logo logo-themed" alt="Bitwarden">
                <p class="text-center"><i class="fa fa-spinner fa-spin fa-2x text-muted" title="Loading" aria-hidden="true"></i></p>
            </div>
        </div>
    </app-root>
    <script src="app/polyfills.8e5494e39b48bad5e654.js"></script>
    <script src="app/vendor.8e5494e39b48bad5e654.js"></script>
    <script src="app/main.8e5494e39b48bad5e654.js"></script><a href="https://beian.miit.gov.cn" target="_blank">
        <center>ipc备案号</center>
    </a></script>
</body>
</html>
docker cp ./index.html vaultwarden:/web-vault/
docker container restart vaultwarden

安装caddy

Caddy是第一个也是唯一一个_默认_自动使用HTTPS的Web服务器。

安装并且配置caddy使用反向代理和SSL。

 
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
 
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
 
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
 
sudo apt update
 
sudo apt install caddy
 
nano /etc/caddy/Caddyfile 

 如果购买了阿里云的证书

进入ECS 云助手先将Nginx的格式的证书上传到到ECS实例,请默认上传到/www目录。

#删除/etc/caddy/Caddyfile的内容 
#将以下代码需要在文本编辑器里面修改添加上你的主域名后添加到Caddyfile
 
xxxxx.top {
tls /www/xxxxx.top.pem  /www/xxxxx.top.key
reverse_proxy   容器的IPAddress:80
}
www.xxxxx.top {
        redir https://xxxxx.top{uri}        
}

修改Nginx的格式的证书的所有权给caddy

cd /www
chown caddy *.key
chown caddy *.pem

如果没有购买了阿里云的证书

#删除/etc/caddy/Caddyfile的内容 
#将以下代码需要在文本编辑器里面修改添加上你的主域名和邮箱后,添加到Caddyfile
 
xxxxx.top {
        tls youremail
        reverse_proxy  容器的IPAddress:80
}

www.xxxxx.top {
        redir https://xxxxx.top{uri}        
}

重启caddy

systemctl restart caddy.service

配置防火墙

进入安全组配置>安全组>入方向>快速添加

放行HTTP (80),HTTPS (443)端口

Vault初体验

浏览器输入你的域名

此时需要我们提供邮箱和一个密码来生成账号。点击 创建账户,密码不建议太简单。

创建完账户密码后,开始使用浏览器插件和手机app

下载链接

安卓,苹果用户现需要一些特殊设置请参照文章末尾另一篇有相关文章,本文不多赘述

安全性提升

因为服务器在公网上,需要进一步进行设置

  1. 点击右上角下箭头-账户设置-安全-两步登陆-FIDO2 WebAuthn或者验证器 App ,防止有人暴力破解你的Vault的主密码。
  2. 禁止其他人注册账户
  3. 进入安全组配置 关闭ssh(22)端口,或者参考20 个 OpenSSH 最佳安全实践 保护ssh
  4. 定期升级服务器系统
  5. 定期导出你的密码库或者备份目录 /www/vw-data/

后记

安卓,苹果等平台请参考另一篇有相关文章 受够了密码数据泄漏事件?用 Bitwarden 做自己的安全负责人

到此本教程就该结束了,本人笨嘴拙腮写不出情文并茂的句子,不足的地方还望见谅。