Lazy loaded image
技术分享
Vaultwarden 自建
字数 4176阅读时长 11 分钟
2024-12-17
2025-11-17

1.Vaultwarden 部署

官方 Compose 文件的基础上,添加时区配置、SMTP 配置,修改了运行端口,并借助 Watchower 开启了自动更新。
P.S.带有备份功能的 Compose 文件,见文末完整 Compose 文件。

开启管理页面

该页面允许服务器管理员查看并删除所有已注册的用户。它也允许邀请新用户,即使禁用了注册功能。
启用管理页面,需要设置ADMIN_TOKEN,然后可通过/admin页面来访问。注意ADMIN_TOKEN需要安全存放。

建议使用argon2

如何防止 docker-compose.yml 中的变量插值

当使用 Docker Compose 并通过 environment 指令配置 ADMIN_TOKEN 时,您需要使用两个美元符号 $$ 来转义已生成的 argon2 PHC 字符串中出现的所有五个美元符号 $ 以防止变量插值,例如:
这可以自动完成,例如通过添加 | sed 's#$#$$#g' 到上面的 argon2 命令行的末尾。

2.数据备份

a.Rclone 备份文件到 Cloudflare R2

安装

仅限于 Linux/macOS/BSD 系统安装,其他系统安装方式见官方文档

配置

默认配置文件目录:~/.config/rclone/rclone.config可直接新建编辑该文件。
生成密钥权限是对象级的要在配置中添加以下键对值。
notion image
另一种方式,通过命令行创建配置文件。
rclone config
notion image
创建新配置:n
notion image
命名输入自定义名称:r2-demo
接着会出现一堆可选择的存储服务(由 Claude 生成):
序号
名称
描述
1
1Fichier
法国的文件托管服务,提供文件存储和分享功能
2
Akamai NetStorage
Akamai 的企业级内容存储和分发服务
3
Alias
为已存在的远程存储创建别名,便于管理多个存储配置
4
Amazon S3
广泛支持的对象存储协议,包括 AWS、阿里云、Cloudflare 等多家厂商
5
Backblaze B2
低成本的云存储服务,类似 Amazon S3 但价格更便宜
6
Hasher
增强型校验服务,为其他远程存储提供更强的数据完整性验证
7
Box
企业级云内容管理和文件共享平台
8
Cache
为其他远程存储提供本地缓存功能,提升访问速度
9
Citrix Sharefile
Citrix 提供的企业级安全文件共享和协作服务
10
Combine
将多个远程存储组合成单个服务,提供统一访问接口
11
Compress
提供实时压缩功能的远程存储包装器
12
Dropbox
流行的云存储和文件同步服务,支持文件共享和协作
13
Crypt
为存储提供端到端加密功能,确保数据安全性
14
File Fabric
企业文件管理平台,整合多种存储服务
15
FTP
标准文件传输协议服务,用于文件上传和下载
16
Files.com
企业级文件传输和自动化平台
17
Gofile
免费文件分享和托管服务
18
Google Cloud Storage
谷歌的企业级对象存储服务,独立于 Google Drive
19
Google Drive
谷歌的个人云存储和协作平台
20
Google Photos
谷歌的照片存储和管理服务,提供智能相册功能
21
HTTP
基于 HTTP/HTTPS 协议的文件服务器访问
22
HDFS
Apache Hadoop 的分布式文件系统,用于大数据存储
23
HiDrive
德国公司 STRATO 提供的云存储服务
24
ImageKit.io
实时图像优化和处理服务
25
Memory
基于内存的临时对象存储系统,用于测试和缓存
26
Internet Archive
非营利性数字图书馆,提供公共域内容的存储和访问
27
Jottacloud
挪威的云存储服务,注重隐私保护
28
Koofr
欧洲云存储服务,可集成多个存储提供商
29
Linkbox
文件分享和临时存储服务
30
Local Disk
访问本地文件系统的接口
31
Mail.ru Cloud
俄罗斯的云存储服务
32
Mega
提供端到端加密的云存储服务
33
Azure Blob
微软的大规模对象存储服务
34
Azure Files
微软的企业级文件共享服务
35
OneDrive
微软的个人和企业云存储服务
36
OpenDrive
提供无限存储空间的云存储服务
37
Swift
OpenStack 的对象存储系统,多家服务商支持
38
Oracle Object Storage
Oracle 云平台的对象存储服务
39
Pcloud
提供终身订阅的云存储服务
40
PikPak
支持离线下载的云存储服务
41
Pixeldrain
简单的文件托管系统
42
Proton Drive
ProtonMail 提供的加密云存储服务
43
Put.io
云存储和媒体播放服务
44
QingCloud
青云提供的对象存储服务
45
Quatrix
Maytech 的安全文件传输服务
46
SMB
Windows 网络文件共享协议实现
47
SFTP
基于 SSH 的安全文件传输协议
48
Sia
去中心化的云存储网络,使用区块链技术
49
Storj
开源的去中心化云存储平台
50
Sugarsync
自动文件同步和备份服务
51
Chunker
将大文件分割成小块进行存储的服务包装器
52
uloz.to
捷克的文件分享服务
53
Union
将多个存储服务合并为单个文件系统视图
54
Uptobox
法国的文件托管服务
55
WebDAV
基于 Web 的分布式编写和版本控制协议
56
Yandex Disk
俄罗斯 Yandex 提供的云存储服务
57
Zoho
Zoho 企业套件中的云存储服务
58
Premiumize.me
多功能云存储和下载服务
59
Seafile
开源的文件同步和共享解决方案
这里输入4,接着会出现一堆 S3 服务提供商(由 Claude 生成):
序号
名称
描述
1
AWS S3
亚马逊最早的对象存储服务,设定了业界标准,提供超高可靠性(99.999999999%),全球分布式存储,支持智能分层存储
2
Alibaba OSS
阿里云对象存储,提供国内多地域部署,支持图片处理、视频转码,提供低成本存储类型如归档存储
3
ArvanCloud AOS
伊朗云服务提供商的对象存储服务,专注于中东地区,提供 CDN 集成
4
Ceph
开源分布式存储系统,支持对象存储、块存储和文件存储,高度可扩展,适合私有云部署
5
ChinaMobile EOS
中国移动提供的弹性对象存储,专注国内市场,提供多地域存储和 CDN 加速
6
Cloudflare R2
Cloudflare 的对象存储服务,无出口流量费用,自动全球分发,与 CDN 深度集成
7
DigitalOcean Spaces
数字海洋的对象存储服务,简单易用,自带 CDN,适合中小规模应用
8
Dreamhost
主机服务商提供的对象存储,与其他服务集成良好,价格实惠
9
Google Cloud Storage
谷歌云的企业级存储服务,提供多种存储类别,适合大数据和机器学习场景
10
Huawei OBS
华为云对象存储,提供多地域部署,支持数据加密、版本控制,集成华为云生态
11
IBM COS
IBM 云对象存储,企业级服务,提供跨区域复制和严格的访问控制
12
IDrive e2
价格实惠的对象存储服务,适合备份和归档使用
13
IONOS Cloud
欧洲云服务提供商的存储服务,注重数据隐私和欧盟合规
14
Lyve Cloud
希捷科技提供的企业级存储服务,无出口带宽费用,适合大规模数据存储
15
Leviia
加拿大的对象存储服务,注重数据主权和隐私保护
16
Liara
伊朗的云服务提供商,提供本地化的对象存储服务
17
Linode
老牌主机商的对象存储服务,全球部署,价格透明
18
Magalu
巴西零售商提供的云存储服务,专注南美市场
19
Minio
流行的开源对象存储系统,可私有部署,兼容 S3 协议,适合边缘计算场景
20
Netease NOS
网易云的对象存储,提供媒体处理能力,适合音视频存储
21
Petabox
专注于大规模数据存储的服务提供商
22
RackCorp
澳大利亚的存储服务提供商,提供多地域部署选项
23
Rclone S3
Rclone 自带的 S3 兼容服务器,用于测试和开发
24
Scaleway
欧洲云服务商的对象存储,提供多地域部署和竞争力价格
25
SeaweedFS
高性能分布式文件系统,支持 S3 协议,适合大规模部署
26
StackPath
边缘计算平台提供的对象存储,与 CDN 深度集成
27
Storj
去中心化存储网络,提供 S3 兼容接口,数据加密分布式存储
28
Synology C2
群晖科技的云存储服务,与 NAS 设备集成良好
29
Tencent COS
腾讯云对象存储,提供多地域部署,媒体处理和 CDN 加速
30
Wasabi
专注低成本对象存储,无出口带宽费用,适合备份归档
31
Qiniu Kodo
七牛云对象存储,提供强大的多媒体处理能力,国内多地域部署
32
Other
其他兼容 S3 协议的存储服务提供商,通过标准接口集成
这里输入6,选择 Cloudflare R2。
密钥选择手动输入,而不是从环境变量获取,输入false
notion image
输入自己的密钥,生成 R2 密钥
区域选择auto
notion image
endpoint 填写,也是在这一步中:生成 R2 密钥
notion image
接下来配置直接回车,按照默认项即可。高级配置,配置保存,退出q
完整配置:

b.Vaultwarden Backup 使用

使用 vaultwarden-backup 备份 Vaultwarden 的数据目录。

配置 Rclone

Rclone 的配置过程和前文一样,若已有配置文件,可直接把配置文件复制到挂载的目录。
docker run --rm -it \ --mount type=bind,source=./backup/config,target=/config/ \ -e RCLONE_REMOTE_NAME=VWBackup \ ttionya/vaultwarden-backup:latest \ rclone config
查看配置:
docker run --rm -it \ --mount type=bind,source=./backup/config,target=/config/ \ ttionya/vaultwarden-backup:latest \ rclone config show

备份

下面是完整的 Compose 文件,改写了他原有的 Compose 文件‘#’注释的为原有配置,只是换了一下名字。
👉🏽
需手动创建卷:
docker volume create vw-rclone-data

SMTP 配置测试

测试邮件发送功能:
✉️
docker run --rm -it \
-e MAIL_SMTP_VARIABLES='-S v15-compat -S smtp-use-starttls -S mta=smtps://<username>:<password>@<smtp.domain.com>:465 -S smtp-auth=login -S from=<email>' \
-e MAIL_TO='<email>' \
ttionya/vaultwarden-backup:latest mail

还原备份

  1. 同步文件到当前目录,当前目录指 Vaultwarden 数据目录挂载到宿主机的目录 rclone copy 配置名称:文件路径 .
  1. 还原文件
    1. docker run --rm -it \ --mount type=bind,source=./vw-data,target=/bitwarden/data/ \ --mount type=bind,source=$(pwd),target=/bitwarden/restore/ \ ttionya/vaultwarden-backup:latest restore \ --zip-file 备份文件名称
      使用改写了作者的 Compose,还原使用以下命令
      docker run --rm -it \ --mount type=volume,source=vw-data,target=/bitwarden/data/ \ --mount type=bind,source=$(pwd),target=/bitwarden/restore/ \ ttionya/vaultwarden-backup:latest restore \ --zip-file 备份文件名称
       

📎 参考文章

 
上一篇
黄山游记
下一篇
Prompt