给 OpenWrt 配置 WebDAV 和 Syncthing
旧酒换新装,好玩(
前几年,我在因为机缘巧合下,入手了一台 Google Pixel 一代,因为后来换了手机,这台手机就一直吃灰,直到我发现这台手机是可以免费无限量的以原图备份照片到 Google Photo 之后…
通过参考少数派的这篇文章:Google 相册取消无限容量备份,你还有这些优质选择 - 少数派
咱在这台手机上整了个 Syncthing,用来同步照片到这台手机上
这台手机也就整天插着电源,就近安置在插座旁边 只是个毫无感情的备份机器罢了
但采用 Syncthing 用来同步照片也有问题,比如 iOS 设备,就没办法很方便的用 Syncthing 来同步
于是,我就用了一种曲线救国的方案:用一台 VPS 来作为备份照片的临时中转
用 VPS 局限性还是挺大的,比如上传带宽就 1M()
于是乎,我就把目光投向了我的软路由(软路由:瑟瑟发抖)
我采用的方法是在软路由上同时安装 Syncthing 和 WebDAV,默认情况下,OpenWrt 所安装的 Syncthing 似乎无法正确的用 procd 来启动,所以我简单的小(chong)改(xie)了一个启动项来实现开机自启动
Syncthing
其实对于 Syncthing 没什么好说的,OpenWrt 的官方源里面就已经包含这个软件包了
因此只需要
1 | opkg update |
然后运行 Syncthing 一次,来生成配置
然后编辑配置文件
1 | nano ~/.config/syncthing/config.xml |
通过搜索关键词 <gui
,修改其中的 IP 为软路由的局域网IP(不怕被公网攻击的话可以试试 0.0.0.0
),端口可以按需要设置其他的,或者保持不变
然后再运行一次,访问软路由的 IP 和端口,例如 http://192.168.1.1:8384
如果能正常加载,就说明正常了,可以按照自己的需求修改其他功能了
如果此时以 root 用户来运行,则配置文件在
1 /root/.config/syncthing
持久化的运行/开机自启
通过 opkg 安装的 Syncthing 似乎不能持久化运行,通过 procd 启动总是无法正常启动
root@OpenWrt:~# /etc/init.d/syncthing status
active with no instances
用谷歌搜了一圈也找不出个所以然来,索性就自己写一个 procd 配置出来,正巧前段时间学习了 procd 的写法,学以致用了属于是(
此处贴一个我的配置:syncthing
在我的配置中,默认会认为二进制文件在
1 | /usr/bin/syncthing |
配置目录在
1 | /root/.config/syncthing |
如果需要修改二进制,请修改第八行
如果需要修改配置文件,请修改第十三行
顺带一提,Linux 下的换行和 Windows 不太一样,因此可能需要用 dos2unix
来转换下
1 | dos2unix syncthing |
修改完毕后,将其复制到 /etc/init.d/
下就可以
打开软路由的管理界面
在 系统
- 启动项
下,将 syncthing
设置为 已启用
,然后启动
如果访问其 GUI 能正常进入,那么就说明正常了
WebDAV
插句题外话,其实本文最初是用的 Syncthing+Samba 方案的
但后来发现 Samba 在 OpenWrt 的体验算不上多好,外加上有外网访问需求,因此就用 WebDAV 来代替 Samba 了
相关网站:GitHub - hacdias/webdav: Simple Go WebDAV server.
从这个项目的 releases 里下载编译好的二进制,按需求下载
建议先创建一个文件夹,以免解压出过多文件(
1 | mkdir webdav |
例如我软路由的架构是 64 位的,那么就下载 linux-amd64-webdav.tar.gz
下载后解压
1 | tar -zxvf linux-amd64-webdav.tar.gz |
然后创建一个配置文件
1 | nano conf.yml |
具体配置建议参考项目 README
里的 Usage
因为对于我来说,需求并不算很多,因此我只写了一小部分的配置
1 | address: 0.0.0.0 #监听地址,不想外网访问请设置为软路由 IP |
当然,如果不想要注释,可以查看这个文件 example.conf.yml
写完之后,测试一下
1 | ./webdav -c conf.yml |
如果没有报错,通过 WebDAV 也可以正常看到文件的话,说明运行正常了,可以做持久化运行了
持久化的运行/开机自启
直接放文件了 webdav
默认认为二进制文件在
1 | /root/webdav/webdav |
配置文件在
1 | /root/webdav/conf.yml |
如果需要修改二进制文件的位置,请修改第八行
如果需要修改配置文件的位置,请修改第十三行位于 -c
后的部分
之后的操作跟上面 Syncthing 的持久化就大差不差了,就不赘述了
后记
插个题外话,在上篇文章中我说到要整 WebP,这篇文章中就直接实现了
这篇文章中的所有图片均采用了 WebP 格式
压缩率那叫一个高啊(笑
效果显著.webp
有时间再写篇文章讲讲实现方法,先把坑挖了(