前言

​ 我的Bitwarden(更准确地说,是开源实现Vaultwarden)服务一直稳定地运行在一台云服务器上。然而,所有的好时光都有尽头,这台服务器的租约即将到期。为了避免服务中断和数据丢失,将其平稳地迁移到新的服务器上就成了一个必须完成的任务。

​ 得益于Docker的容器化部署和Vaultwarden良好的设计,整个迁移过程其实非常简单,核心就是数据备份与恢复。下面记录下我的迁移步骤,希望能给有同样需求的朋友提供一个参考。

迁移步骤

第一步:在旧服务器上完成最终备份

迁移的第一步,也是最重要的一步,就是确保我们拥有最新、最完整的数据备份。

  1. 进入旧服务器:通过SSH连接到即将过期的旧服务器。

  2. 停止容器:首先停止正在运行的Bitwarden容器,这是为了保证数据的一致性,避免在备份过程中仍有数据写入。

    # 进入docker-compose.yml所在的目录
    cd /path/to/your/bitwarden
    # 停止并移除容器
    docker-compose down
  3. 打包数据目录:我们之前通过Docker的卷(volume)挂载,将所有的数据都保存在宿主机的 ./data目录下。现在我们需要将这个目录完整地打包。

    # 假设你的docker-compose.yml在 /opt/vaultwarden 目录下
    tar -czvf vaultwarden-backup.tar.gz -C /opt/vaultwarden data/
  4. 下载备份文件:使用scprsync或者SFTP工具,将打包好的vaultwarden-backup.tar.gz备份文件下载到你的本地电脑,这是我们的“救命稻草”。

    scp your_username@old_server_ip:/opt/vaultwarden/vaultwarden-backup.tar.gz ./

第二步:在新服务器上部署新环境

现在,我们可以在新的服务器上开始准备工作了。

  1. 准备新服务器:确保新服务器已经安装好DockerDocker Compose

  2. 上传备份文件:将刚才下载到本地的vaultwarden-backup.tar.gz文件上传到新服务器的目标目录,例如 /opt/vaultwarden

    scp ./vaultwarden-backup.tar.gz your_username@new_server_ip:/opt/vaultwarden/
  3. 创建docker-compose.yml文件:在新服务器的目标目录下,创建你的docker-compose配置文件。你可以直接使用你原来的那一份,但务必检查以下几个关键点:

    • 端口:确认8081:803012:3012端口在新服务器上是空闲的,如果有冲突,需要修改成其他端口。
    • 域名:将DOMAIN环境变量修改为你为新服务器准备的新域名(如果你换了域名的话)。如果域名不变,只是IP变了,那么这里不需要修改,但需要确保你的域名DNS解析已经指向了新的服务器IP。
    • ADMIN_TOKEN:建议重新生成一个更复杂的ADMIN_TOKEN以确保安全。可以使用命令 openssl rand -base64 48来生成一个强大的令牌。

    我在新服务器上使用的 docker-compose.yml内容如下(与旧配置基本一致):

    version: '3'

    services:
    vaultwarden:
    image: vaultwarden/server:latest
    container_name: bitwarden
    restart: always
    ports:
    - "8081:80" # 确保端口可用
    - "3012:3012" # WebSocket 端口
    volumes:
    - ./data:/data # 挂载恢复的数据
    environment:
    - DOMAIN=https://me.excom.com # 使用原域名
    - ADMIN_TOKEN=你的新生成的安全令牌
    - SIGNUPS_ALLOWED=false
  4. 解压恢复数据:在新服务器上,解压我们上传的备份文件,这会生成 data目录。

    cd /opt/vaultwarden
    tar -xzvf vaultwarden-backup.tar.gz

    解压后,你应该能看到一个名为 data的文件夹,里面包含了所有的数据库和附件。

第三步:启动并验证服务

万事俱备,只欠东风。

  1. 启动容器:在新服务器上,使用Docker Compose启动我们的Bitwarden服务。

    docker-compose up -d
  2. 查看日志:检查容器日志,确保没有报错信息,一切启动正常。

    docker-compose logs -f
  3. 验证服务

    • 打开浏览器,访问你的Bitwarden域名(例如 https://me.excom.com)。
    • 尝试用你的主密码登录,应该能正常进入并看到所有的密码条目。
    • 在各个客户端(浏览器扩展、手机App)上,退出账号再重新登录,或者更新服务器URL为新服务器的地址,测试同步功能是否正常工作。
  4. 访问管理面板:在浏览器中访问 https://你的域名/admin,输入你设置的 ADMIN_TOKEN,进入管理面板检查一切是否正常。

注意事项

  • DNS生效时间:如果你迁移后更换了域名或者服务器IP,需要留意DNS记录的TTL和全球生效时间,这期间部分用户可能无法连接。
  • SSL证书:Vaultwarden通常搭配Nginx Proxy Manager或Caddy等反向代理来自动管理SSL证书。确保你的反向代理也正确配置并指向新的容器。
  • 定时备份:经历此次迁移后,强烈建议设置一个定期自动备份的脚本(例如每天将data目录打包并备份到另一个安全的地方),以防未来再次出现类似情况。

总结

​ 整个迁移过程可以概括为:停旧服务 -> 备份数据 -> 传数据 -> 配新环境 -> 启新服务。只要步骤清晰,操作仔细,迁移Bitwarden(Vaultwarden)服务是一项非常简单且安全的任务。Docker容器化部署的优势在此体现得淋漓尽致。

​ 现在,我终于可以放心地让旧服务器过期了,所有的密码数据都已安全地在新家“安顿”了下来。