The Conrad CircuitThe Conrad Circuit
隐私政策GithubTelegram

© 2025-2026 The Conrad Circuit

技术

比 LastPass 更安全? Bitwarden 自托管避坑指南

LastPass 数据泄露后,密码还是苟在我的弱鸡服务器里面吧

Yang He
Yang He
·July 4, 2025·5 min read

一、前言

Bitwarden 作为一个开源的密码管理器,有着丰富的社区生态,我们可以将它轻松部署在自己的云服务器、单板机上,确保自己的密码库绝对安全。本教程会提供 Bitwarden 自托管方案,同时给出数据库的备份方案

二、部署 Vaultwarden & Backup 服务

1. 安装 Docker Engine

  • 通过 SSH 连接到你的服务器,执行以下命令:
bash
1sudo apt update && sudo apt install curl -y
2curl -fsSL https://get.docker.com -o get-docker.sh
3sudo sh ./get-docker.sh
4sudo usermod -aG docker $USER

2. 部署 Vaultwarden 备份服务

2.1 获取 Google Drive API 密钥

我这里以 Google Drive 为例,你也可以使用阿里云盘等云服务,更多云盘的实现可以参考 rclone 官方文档。

首先需要在 Google Cloud Console 创建一个项目,并进入 API 与服务板块,点击启动 API 和服务:

搜索 Google Drive API 并添加,然后进入“凭证”界面,配置权限请求界面,用户类型记得选择“外部”,其余没有什么特别的,正常填写即可:

点击“客户端”,创建一个桌面应用类型的客户端,名称随意:

创建完成后,切记将 客户端 ID 和 客户端密钥 复制到安全地方,待会需要使用:

最后,在目标对象中将自己添加到测试用户中即可大功告成:

2.2 配置 Rclone 服务

在你的云服务器终端执行:

bash
1docker run --rm -it \
2  --mount type=volume,source=vaultwarden-rclone-data,target=/config/ \
3  ttionya/vaultwarden-backup:latest \
4  rclone config

进入 Rclone 交互式命令界面后,请根据自身需求进行选择,我的配置如下:

bash
1Option service_account_file.
2Service Account Credentials JSON file path.
3Leave blank normally.
4Needed only if you want use SA instead of interactive login.
5Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
6Enter a value. Press Enter to leave empty.
7service_account_file> 
8
9Edit advanced config?
10y) Yes
11n) No (default)
12y/n> n
13
14Use web browser to automatically authenticate rclone with remote?
15 * Say Y if the machine running rclone has a web browser you can use
16 * Say N if running rclone on a (remote) machine without web browser access
17If not sure try Y. If Y failed, try N.
18
19y) Yes (default)
20n) No
21y/n> n
22
23Option config_token.
24For this to work, you will need rclone available on a machine that has
25a web browser available.
26For more help and alternate methods see: https://rclone.org/remote_setup/
27Execute the following on the machine with the web browser (same rclone
28version recommended):
29        rclone authorize "drive" "eyJjbGllbnRfaWQiOiI2NTYxMjcxMDU1MS02OGZodGI4N2k3MDUwNDNoa2htNnQ1OWR0Y2tsaW1wdS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImNsaWVudF9zZWNyZXQiOiJHT0NTUFgtdHdwV2tSVHYxdi1GNFlwTDl4Z0FhdkgyMnNCUiIsInNjb3BlIjoiZHJpdmUifQ"
30Then paste the result.
31Enter a value.
32config_token>

然后使用你的 Windows 电脑(注意不是云服务器),打开终端,输入以下命令:

bash
1winget install Rclone.Rclone

然后在新的终端执行:

bash
1# 注意:这个命令请根据你的终端复制粘贴对应命令,不能使用我的
2rclone authorize "drive" "eyJjbGllbnRfaWQiOiI2NTYxMjcxMDU1MS02OGZodGI4N2k3MDUwNDNoa2htNnQ1OWR0Y2tsaW1wdS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImNsaWVudF9zZWNyZXQiOiJHT0NTUFgtdHdwV2tSVHYxdi1GNFlwTDl4Z0FhdkgyMnNCUiIsInNjb3BlIjoiZHJpdmUifQ"

进行正常的授权后,你的 Windows 终端会出现类似以下内容:

bash
1Paste the following into your remote machine --->
2eyJ0b2tlbiI6IntcImFjY2Vzc190b2tlblwiOlwieWEyOS5hMEFTM0g2TnpnS0wwMnM5N1NZTmJvVnl3bUMyU1JUQUlnOXZIeTFkMk1COWlqZi1aRWd5ei1DdGNramJBRVloTm90OWtVZXBGV3hTS1kxdmN4X2hzd2xqdHBQNDY0RTRTTmtxeEIyRkd4Y2VZVjJaay1XMC1DNHZVUHJ4eXZnLXE2MnNDWGZ5NEVNb1JFQXpJTlpmWHZ5cjFUSVBMaGFmNGgyek5JdlZyZ2FDZ1lLQVJJU0FSUVNGUUhHWDJNaXkzZW1rVGZHVGF4Vk5xVXdudFZjU3cwMTc1XCIsXCJ0b2tlbl90eXBlXCI6XCJCZWFyZXJcIixcInJlZnJlc2hfdG9rZW5cIjpcIjEvLzA2UWdUZDJ1NzlLczdDZ1lJQVJBQUdBWVNOd0YtTDlJclZPeDMxYXlXYmR6WVI0dTRxTjFvZFNtZDFKR0poR0JralZhakc1UTQwa3dUSzNGODNobmpqM19ZcV9zRWt2WUl1WDRcIixcImV4cGlyeVwiOlwiMjAyNS0wNi0yOVQwMToxOTowNy4zNjc3NTIyKzA4OjAwXCIsXCJleHBpcmVzX2luXCI6MzU5OX0ifQ
3<---End paste

将中间那一长串字符串粘贴到你的云服务器终端中,后续所有选项默认即可。现在,终于完成了所有配置中最难的部分。通过以下命令测试是否配置成功:

bash
1# 注意:命令末尾的 vaultwarden: 请根据自己配置的 Remote Name 进行修改,例如如果你的配置名为 test,则将命令末尾修改为 test:
2docker run --rm -it --mount type=volume,source=vaultwarden-rclone-data,target=/config/ ttionya/vaultwarden-backup:latest rclone lsd vaultwarden:

如果配置无误,则会返回你的 Google Drive 根目录下的所有文件

2.3 安装 Vaultwarden

你可以选择自行编写 docker-compose.yml 也可以使用我的,你可以在你的云服务器终端执行:

bash
1git clone https://gist.github.com/3bc836e9ca1059e321ca4b75924602a0.git vaultwarden && cd vaultwarden
2docker compose up -d

如果没有出错的话,即可访问你的云服务器的 8200 端口进入 Web 界面,访问 admin 目录即可进入管理页面。Bitwarden 要求服务端使用 TLS 加密连接,所以你需要配置证书。关于证书配置,建议直接将 DNS 托管到 Cloudflare,这样你就不需要手动配置了。同时你也不需要配置 Fail2Ban 来提升安全性了

这种方式的加密并不会加密源服务器到 Cloudflare 的数据,建议还是使用 Canddy 进行反向代理

至此,你已经完成了部署。当然,还有很多自定义选项可以配置,如果感兴趣,请继续和我一起探索

三、后记

3.1 Vaultwarden 安全设置

  1. 如果你是仅自己使用或者小面积人群使用,建议禁用注册,限制为仅邀请
  2. 使用 Argon2 对 ADMIN_TOKEN 进行哈希处理,避免明文存储密码
bash
1# 将 Password 替换为你的密码,并将输出填写在管理页面对应位置即可
2echo -n "Password" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4

3.2 备份配置

具体配置细节请参考我的配置文件:

yaml
1
2services:
3  vaultwarden:
4    image: vaultwarden/server:latest
5    restart: always
6    ports:
7      - 8200:80
8    volumes:
9      - vaultwarden-data:/data/
10
11  backup:
12    image: ttionya/vaultwarden-backup:latest
13    restart: always
14    environment:
15      RCLONE_REMOTE_NAME: 'vaultwarden'  # Rclone 远程存储配置名称
16      RCLONE_REMOTE_DIR: '/vaultwarden/'  # 远程存储目录路径
17      ZIP_ENABLE: 'TRUE'  # 启用 ZIP 压缩功能
18      # ZIP_PASSWORD: 'your_password'  # ZIP 文件加密密码
19      ZIP_TYPE: '7z'  # 压缩文件格式,支持 zip 和 7z
20      # BACKUP_FILE_SUFFIX: '%Y%m%d'  # 备份文件名后缀格式
21      BACKUP_KEEP_DAYS: 0  # 本地备份保留天数,0 表示不自动删除
22      MAIL_SMTP_ENABLE: 'true'  # 启用邮件通知功能
23
24      # SMTP邮件服务器配置参数
25      # MAIL_SMTP_VARIABLES: '-S smtp-use-starttls -S smtp=smtp://your_address:port -S smtp-auth=login -S smtp-auth-user=your_user -S smtp-auth-password=your_password -S from=your_sender'
26
27      # MAIL_TO: '[email protected]'  # 接收备份通知的邮箱地址
28      # MAIL_WHEN_SUCCESS: 'false'  # 备份成功时是否发送邮件通知
29      # MAIL_WHEN_FAILURE: 'TRUE'  # 备份失败时是否发送邮件通知
30    volumes:
31      - vaultwarden-data:/bitwarden/data/
32      - vaultwarden-rclone-data:/config/
33
34volumes:
35  vaultwarden-data:
36    name: vaultwarden-data
37  vaultwarden-rclone-data:
38    external: true
39    name: vaultwarden-rclone-data

建议一开始就配置好自动备份,因为谁也不知道你的服务器会在什么时候突然宕机导致数据丢失,特别是像我这种在家搭建服务器的环境,宕机更容易发生,并且使用 Google Drive 的免费套餐就可以获得很好的备份体验

RSS

Explore more posts

Get updates via RSS, or browse related posts on the site.

Subscribe with RSSContinue reading

Comments

0
0/5000

Related Posts

榨干 ARM 小主机性能: PVE ARM 搭建指南
技术

榨干 ARM 小主机性能: PVE ARM 搭建指南

得益于佛西大佬的项目,让 PVE ARM 的搭建如此简单

告别 Keil:在 VSCode 或 CLion 中搭建高效的 STM32 开发环境
技术

告别 Keil:在 VSCode 或 CLion 中搭建高效的 STM32 开发环境

好马配好鞍,好的开发者当然要配好的开发工具啦

绕过 IOMMU 分组:配置 PVE ARM 无线网卡直通
技术

绕过 IOMMU 分组:配置 PVE ARM 无线网卡直通

PVE 在 X86 架构下实现 PCIe 设备直通轻而易举,在 ARM 架构下几经波折