OpenWrt下使用docker安装icloudpd实现iPhone照片备份私有云盘nas

文章目录

  • 一、背景与需求
  • 二、部署方法
    • 2.1 我的环境
    • 2.2 准备工作
      • 2.2.1 检查docker环境是否运行正常
      • 2.2.2 查询宿主系统用户id和组id
      • 2.2.3 规划挂载目录
      • 2.2.4 编写启动参数
      • 2.2.5 解决OpenWrt下docker容器桥接模式容器内无法连接公网的问题
      • 2.2.6 解决OpenWrt重启后,docker无法启动的问题
    • 2.3 正式操作
      • 2.3.1 拉取镜像
      • 2.3.2 创建容器
      • 2.3.3 创建.mounted文件
      • 2.3.4 启动容器
      • 2.3.5 初始化容器
      • 2.3.6 拷贝与修改cookies文件名
      • 2.3.7 检查与验证
  • 三、结束语
  • FAQ

一、背景与需求

大概2018年前后折腾过黑群,玩nas做电脑资料的备份,当时也玩的不亦乐乎,但是一年多板子就坏掉了(点背),再加上黑裙的风扇声实在忍不了,2020年初又迷上了J4125工控机软路由方案,因为他小巧,性能强,完全静音无风扇,用到现在2年多了,期间也折腾了不少方案,hyper-v,esxi。最后还是选择了pve,不得不说属实稳,性能也直接拉满。

折腾党,nas还是必须要有的,但我并没有大量的电影资源需要存储,只是用来存储学习资源和电影、家庭全部照片,对内网传输nas的速度并没有极致跑满的要求;能够支持smb、webdav、FTP文件共享,结合ddns,可以随时在任何终端查看和下载,Transmission、Aria2等工具可以将各种所需资源远程直接下载到nas中,这些就足够了。

因为我和媳妇用的都是iPhone,日常给孩子拍照、录视频,实在占用手机存储空间实在太大了,并且只能在自己的手机上看,如果选择iCloud备份和共享,5G根本不够用,扩容的价格实在太高了,我就琢磨有没有办法能够把我和我媳妇的iPhone上照片自动传输到nas上,iPhone上可以删除照片释放空间,实现统一集中存储,通过第三方软件连接到nas,随时远程查看。

有人可能会说了,你这是脱裤子放屁,直接在iphone上安装个FE浏览器、ES浏览器、photosync之类的备份到nas不香吗?对不起,我全部实测过,自动备份都比较扯,苹果杀后台时,什么自动备份也不好使,必须要打开app。听说google photos 和群晖的 photos如果不杀后台时,能够实现无感备份,但google需要魔法,并且备份速度堪忧,群晖nas对我来说太臃肿,不想搭建。百度云盘、阿里云盘的相册备份应用层虽然做的比较好,但同样需要打开app才能自动备份,另外,公有云服务厂商,对视频、图片都是有审核的,虽然是AI审核,充分保密,但把我私人照片去过一遍他们服务器过滤一遍,存在他们的服务器上,时不时的给你丢掉几张,我可不想这样。

查了很多方案,测试了很多软件,都没有达到预期,终于在偶然的一个帖子评论下,看到了icloudpd同步方案,经过测试,效果很令我满意。

几乎完美的方案是:
通过icloudpd这个开源程序实现iPhone照片→iCloud→OpenWrt中的docker(icloudpd)→nas的无感、无缝、无痛、无损、带元数据信息的自动备份。

iCloud 能无感自动后台备份相册到iCloud云端,然后 icloudpd 支持很多环境变量配置参数,自动将源文件从云端同步到 nas !同时 iPhome 上还能保留低像素的缩略图,充分释放iPhone空间。

二、部署方法

网上几乎所有的教程都是在群晖NAS上部署docker的icloudpd容器来实现备份到群晖。所以理论上如果你没有群晖,只要你有docker环境,都是可以部署和使用的,只是不能完全照搬群晖上部署的教程,需要你真正的理解这篇文章中docker使用方法,做一些微调,都是可以的。
下面我讲的方法就是在openwrt的docker环境下部署icloudpd,将数据存储在openwrt挂载的4T机械硬盘上。其中遇到的几个坑,我已经淌过来了,只要按照我说的方法,你一定可以部署成功。

2.1 我的环境

硬件:1台J4125工控机+1根16G内存+1块16G ssd+1块480G ssd+1块4T hdd
虚拟化平台:pve-manager/6.3-2/22f57405
在这里插入图片描述

OpenWrt:使用lean大雕源码,自编译带docker-ce插件的x86固件,固件版本:R22.3.13 内核版本:5.15.31
在这里插入图片描述
OpenWrt-Lean大源码:https://github.com/coolsnowwolf/lede
icloudpd源码:https://github.com/boredazfcuk/docker-icloudpd

2.2 准备工作

2.2.1 检查docker环境是否运行正常

使用命令:docker version
正确的回显如下:

root@OpenWrt:~# docker version
Client:
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.17.8
 Git commit:        e91ed57
 Built:             Sun Apr 10 10:43:41 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.8
  Git commit:       459d0df
  Built:            Sat Mar 26 01:36:39 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        52b36a2dd837e8462de8e01458bf02cf9eea47dd
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

2.2.2 查询宿主系统用户id和组id

命令:id 用户名
openwrt下查询出来root用户名和组id如下:

root@OpenWrt:~# id root
uid=0(root) gid=0(root) groups=0(root)

2.2.3 规划挂载目录

icloudpd程序需要挂载2个目录,1个用于存储配置文件(cookies),1个用储存储下载的照片。
openwrt下,推荐把配置文件存入/root目录下即可,重启不丢失,我的配置文件目录设置为/root/icloudpddjz_config,照片的下载目录我设置到成了通过usb到J4125工控机的4T机械盘上,4T机械盘的挂载目录是/mnt/sdb1,我设置的下载目录就是/mnt/sdb1/back_photos/jiangzhuangdeiphone。
此步骤只是规划挂载路径,你自己心中有数就行了,规划的路径用于后面配置icloudpd容器的启动参数。
为了你更好的理解上面两个挂载路径,贴一张我的lsblk截图:

root@OpenWrt:# lsblk
NAME     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda        8:0    0 10.2G  0 disk 
├─sda1     8:1    0   16M  0 part /boot
│                                 /boot
├─sda2     8:2    0  160M  0 part /rom
├─sda3     8:3    0    2G  0 part /overlay
├─sda4     8:4    0    8G  0 part /opt
└─sda128 259:0    0  239K  0 part 
sdb        8:16   0  3.6T  0 disk 
└─sdb1     8:17   0  3.6T  0 part /mnt/sdb1

2.2.4 编写启动参数

icloudpd作者在github上已经对每项启动参数做了细致的备注和描述,你可以根据自己的需求,设置所需要的启动参数,作者是国外的大神,如果你看不懂英文,google浏览器自带翻译,你可以直接鼠标右键翻译此网页。
推荐使用notepad++这种纯文本工具编写好,格式不会有误,看着也清楚,我的启动参数如下:

docker create \		#不要改
--name icloudpddjz \		#可以改,只是容器的名字,部署多个容器时,必须要改,不能一致
--hostname icloudpd_boredazfcuk \		#不用改
--network bridge \		#openwrt环境下,用bridge桥接即可
--restart=always \		#不用改
--env user=root \		#openwrt环境下,默认只有root用户,作者建议与宿主系统用户名一致,避免权限问题
--env user_id=0 \		#openwrt环境下,root用户的id是0
--env group=root \		#openwrt环境下,root用户的用户组也是root
--env group_id=0 \		#openwrt环境下,root组id也是0
--env apple_id="xxxxxxx@icloud.com" \		#填写你的iCloud账号
--env authentication_type=2FA \		#身份验证类型,如果你启用了两步验证,则为2FA,否则为Web
--env 
  • 16
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值