实现AMH面板vaultwarden数据迁移与备份的最佳实践?

AMH-7.1面板软件vaultwarden-1.32如何导入数据
今天欣喜的发现amh面板支持了docker!!!!历史性的突破!!!
这下彻底放弃其他面板了哈哈哈哈
不过目前amh支持的vaultwarden-1.32应用中,如何导入在其他面板部署和备份的vaultwarden数据?
另外amh上数据的备份也是个问题
我以前采用了这个项目备份:
https://github.com/ttionya/vaultwarden-backup/blob/master/README_zh.md
ampod上线后,希望可以直接通过amdata和am3应用实现s3的快速备份

现在看起来:
导入数据:直接替换/home/usrdata/vaultwarden/data/这个文件下的内容?
备份数据:执行脚本,安装rclone,手动通过任务计划和手动进程进行备份?

补充:测试了下我之前备份项目的命令

docker run -it \
  --mount type=bind,source="/home/usrdata/vaultwarden/",target=/data/ \
  --mount type=bind,target=/home/usrdata/vaultwarden/ \
  -e DATA_DIR="/data" \
  ttionya/vaultwarden-backup:latest restore \
  --zip-file backup.202409121811.7z
  --password 123

成功拉取并运行了镜像,但有个问题,这个镜像需要交互……
amh amhpod-1.0 romantic_jepsen restart 我尝试通过这个命令交互,但是不行……


2024.10.03更新疑难杂症
问题:
还是原来的机器,卸载后重装
然后就打不开页面了,包括 【https://面板IP或域名:面板端口/vaultwarden-随机目录】及【Lngx反代】方式
AMHPOD查看容器内正常运行
后台curl :

root@taor5years2024:~# curl http://127.0.0.100:5270
curl: (7) Failed to connect to 127.0.0.100 port 5270 after 3063 ms: Couldn't connect to server

直接访问则是 nginx 502 Bad Gateway
已经以下尝试:
重启AMH NGINX 、重启服务器、更换面板域名……

解决办法:
排查了N个小时,把AMHPOD Nginx vaultwarden 卸载重装N多次,终于找到原因了
答案是防火墙,不用去看宿主机的Iptables,直接点AMH面板的网络-防火墙查看
搜端口 5270
此时应该出现4个被你搜到的记录
而此问题出现时,有6个记录,其中:

-A NETAVARK-DN-1D8721804F16F -d 127.0.0.100/32 -p tcp -m tcp --dport 5270 -j DNAT --to-destination 10.88.0.11:80
-A NETAVARK-DN-1D8721804F16F -d 127.0.0.100/32 -p tcp -m tcp --dport 5270 -j DNAT --to-destination 10.88.0.7:80

有三条 DNAT 规则,分别指向 10.88.0.11:80、10.88.0.7:80 和 10.88.0.4:80
有两个规则是之前创建的,不知道为什么卸载了居然还在残留
先卸载vaultwarden,然后把剩下防火墙中 5270 的配置全部删掉
万事大吉!

阅读 2k
avatarAI BotBETA

在AMH面板中管理Vaultwarden(即Bitwarden的自托管版本)的数据迁移与备份,你可以遵循以下最佳实践:

数据迁移

对于从其他面板迁移到AMH面板的Vaultwarden数据,最直接的方法是迁移数据库和文件存储。由于Vaultwarden主要依赖于SQLite数据库(对于小型安装)或PostgreSQL/MySQL(对于大型安装)以及文件存储来保存数据,因此迁移过程大致可以分为两步:

  1. 数据库迁移

    • 首先,导出当前Vaultwarden实例的数据库。
    • 接着,在AMH面板的Vaultwarden容器中,创建相应的数据库(如果尚未创建)。
    • 然后,将导出的数据库文件导入到新创建的数据库中。
    • 修改Vaultwarden的配置文件(如.env或配置文件中的数据库设置部分),以指向新的数据库连接信息。
  2. 文件迁移

    • 将原Vaultwarden实例的data目录(包含附件和加密密钥)复制到AMH面板的Vaultwarden容器的相应位置(通常是/home/usrdata/vaultwarden/data/)。
    • 确保Vaultwarden服务有足够的权限访问这些文件。

数据备份

对于AMH面板上的Vaultwarden数据备份,你可以采用多种策略,但使用脚本和自动化工具是推荐的方式:

  1. 使用vaultwarden-backup脚本

    • 你可以继续使用你提到的vaultwarden-backup脚本。这个脚本能够备份Vaultwarden的数据库和文件存储到多个位置,包括S3兼容的存储服务。
    • 在AMH面板中,你可以创建一个自定义的Cron任务来定期执行这个脚本。
  2. 集成Rclone和S3备份

    • 安装Rclone并配置好S3连接。
    • 编写一个脚本来执行Rclone命令,将Vaultwarden的data目录和数据库文件(如果直接备份数据库文件的话)上传到S3。
    • 同样地,在AMH面板中设置一个Cron任务来定期执行这个脚本。
  3. 利用AMH面板的内置备份功能(如果可用):

    • 检查AMH面板是否提供了直接备份Docker容器或指定目录的功能。
    • 如果可用,配置AMH面板以定期备份Vaultwarden的data目录和数据库存储位置。

注意事项

  • 在进行任何迁移或备份操作之前,请确保你已经完全备份了当前的数据,以防万一操作失败导致数据丢失。
  • 修改配置文件或执行迁移脚本时,请确保Vaultwarden服务已经停止,以避免数据不一致。
  • 考虑到安全性,确保你的备份存储位置是安全的,并且只有授权用户才能访问。

通过上述步骤,你应该能够成功地在AMH面板中迁移和备份Vaultwarden数据。

2 个回答

amh上集成的应用是都用了随机目录访问,用nginx或apache都兼容,这样是比较安全些,如果应用出现安全问题时可以避免暴露利用。

vaultwarden需要直接用域名访问的话,用lngx反向代理同样可以的,
后端源站地址填写:http://127.0.0.100:5270
与勾选:WS连接反代 选项就可以了,不用额外加规则了。

备份的话,默认面板上的备份软件就能备份,默认有备份/home/usrdata/
要单独备份的话,可以只备份/home/usrdata/vaultwarden/data/目录。

备份时,选择不备份网站、不备份数据库,勾选额外备份,填写,
add:/home/usrdata/vaultwarden/data/
与勾选:纯数据模式
这样就可以最小体积备份到各类云端了。

其它需要交互的情况,ampod新版本再看做优化,方便命令使用。

更新:
通过运行这个命令完成迁移:

docker run -it \
  --mount type=bind,source="/home/usrdata/vaultwarden/data/",target=/data/ \
  --mount type=bind,source="/home/usrdata/vaultwarden/",target=/bitwarden/restore/ \
  -e DATA_DIR="/data" \
  ttionya/vaultwarden-backup:latest restore \
  --zip-file backup.202409121811.7z
  --password 123
  --force-restore

source和target注意别反了,前者是本地目录,target是容器内目录
上面的bind是目标文件data,下面的bind是本地备份文件目录

但是,反代方面又遇到了些问题……默认情况下,使用的这个nginx反代:

location ~ ^/vaultwarden-3123123/ {
    rewrite ^/vaultwarden-3123123(/.*)$ $1 break;
    proxy_pass http://127.0.0.100:5270;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
虽然知道大大已经提供了https://面板IP或域名:面板端口/vaultwarden-随机目录方式,但是强迫症记不住后面的目录,想直接使用域名反代……

这个规则我直接配置到了规则管理,然后通过lngx进行反代,不知道会不会有安全性问题,目前网页版和浏览器插件都是通的,但奇怪的是手机版bitwarden却连不上

最后,总结下目前amhpod需要完善的功能:

  • 交互执行
  • 本地映射文件备份
  • 在备份或者文件同步中增加rclone
  • lngx本地反代问题
    之后继续迁移其他项目,看看还缺什么……
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏