引言
docker-compose.yml
docker-compose.yml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| version: "2.1"
services: duplicati: image: lscr.io/linuxserver/duplicati:latest container_name: duplicati environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./duplicati/config:/config - ./duplicati/backups:/backups - /:/source # 注意: 这里为了方便直接将 宿主机根目录 映射出来, 这样选择备份来源时, 就可以选择到所有文件 ports: - 8200:8200 restart: unless-stopped privileged: true user: root
|
1
| docker logs -f duplicati
|

第一次访问 duplicati 后台会提醒设置密码, 部署在外网一定要设置

按 Yes 后自动跳转到这里设置密码
发现 这个 docker 镜像 默认是 允许远程访问, 而 Windows 下客户端默认未勾选

最后, 一定要滑动到最下方确定保存, 然后重新使用密码登录即可使用

添加 全局 设置 邮件通知 选项

我这里使用 阿里云企业邮箱(自定义域名邮箱)
smtp://smtp.qiye.aliyun.com:465
1 2 3 4 5 6 7 8 9 10
| --send-mail-any-operation=true --send-mail-body=%RESULT% --send-mail-level=all --send-mail-subject=Duplicati %OPERATIONNAME% report for %backup-name% --send-mail-from=noreply@moeci.com --send-mail-to=i@moeci.com --send-http-result-output-format=Duplicati --send-mail-url=smtp://smtp.qiye.aliyun.com:465/?starttls=when-available --send-mail-username=noreply@moeci.com --send-mail-password=替换为你的邮箱密码
|

添加一个测试备份任务
宿主机
保存位置
注意: 经过测试, 一定先在 OneDrive 上创建相应文件夹,否则 测试连接 会失败
源数据
注意: 这里要选在 /source 下,因为宿主机根目录 映射到了容器内 /source 下

补充:
注意: 发现 无法访问 /source/root/
测试备份

删除源文件, 利用备份文件恢复

补充:
注意: 发现恢复文件时, 会因为目标恢复位置没有写入权限, 导致恢复失败
> 无权限, 恢复失败

> 给与权限

> 虽然还有警告, 但恢复已经成功

补充: 可以同时恢复文件的读写权限, 未测试

Q&A
MailKit.Net.Smtp.SmtpProtocolException: The SMTP server has unexpectedly disconnected.

改为 587 还是不行

TODO: 邮件发送失败, 但阿里云邮箱已收到异地登录提醒
Error reported while accessing file:
1
| 2022-07-02 15:10:07 +08 - [Warning-Duplicati.Library.Main.Operation.Backup.FileEnumerationProcess-FileAccessError]: Error reported while accessing file: /source/www/wwwroot/nextcloud.moeci.com/nextcloud/nextcloud/
|

尝试给与权限

看来应该是解决了

TODO: 注意: 目测还是漏了些文件, 还是暂时没扫描到?

补充
Nginx 配置
nginx.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server { listen 80; listen 443 ssl http2; server_name duplicati.moeci.com;
# proxy to 8200 location ~ / { proxy_pass http://localhost:8200; 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; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; # cache add_header Cache-Control no-cache; expires 12h; # websocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; add_header Front-End-Https on; } }
|
注意:经过测试,以上配置会导致 400, 改为下方即可,
TODO: 不知道是具体哪条影响到了
nginx.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server { listen 80; listen 443 ssl http2; server_name duplicati.moeci.com;
# proxy to 8200 location ~ / { proxy_pass http://localhost:8200; # 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; # proxy_set_header REMOTE-HOST $remote_addr; # add_header X-Cache $upstream_cache_status; # # cache # add_header Cache-Control no-cache; # expires 12h; # # websocket support # proxy_http_version 1.1; # proxy_set_header Upgrade $http_upgrade; # proxy_set_header Connection "upgrade"; # add_header Front-End-Https on; } }
|
参考
感谢帮助!
linuxserver/docker-duplicati
Docker系列 搭建自动备份服务duplicati - Bensz