banner
LTN Studio

LTN Studio

Homelab, geek, movies and fun
github

群晖docker后台任务:api请求和通知

黑群的尽头是白群

群晖这种家用 NAS 因为是 24 小时开启,适合用来跑一些后台任务,例如api 监控币价、定期数据处理、通知。

之前折腾了下群晖的定时任务和邮件、telegram 通知,也是踩了不少坑。最终实现了这样的一个效果:

IMG_52B774277E2B-1

截屏 2022-09-24 23.28.34

群晖的定时任务#

群晖的定时任务只支持有限的类型,惟「用户定义的脚本」这个定时任务尤其鸡肋,原因也和群晖的定制 Linux 有关:

  • 「用户定义的脚本」定时任务,填写的脚本为 shell 直接解析的非交互式脚本,不能直接 su,进不了 docker,一些想动的文件、想搞的操作没有权限
  • 群晖的 Linux 后台没有想过提供 CLI 方式的工具给用户,例如直接就没有证书,导致不能做出 TSL 和 HTTPS 的通信(虽然有很麻烦的方法可以解决),所以想直接在群晖的 Linux 内裸调接口、执行脚本是非常困难的
  • 定时任务只能在异常退出的时候发出邮件通知,邮件通知的内容就是未重定向的 tty 输出。所以想要实现定时任务触发邮件通知,可以要将想发的内容 cat 出来再exit -1

截屏 2022-09-24 23.43.11

前面说了直接在群晖的 Linux 裸执行命令处处都束手束脚的,遂转向 docker 内实现。

docker pt. 1#

直接拉了一个 ubuntu 的官方 docker 下来,没想到这个 docker 镜像也太寒酸了,什么 CLI 工具都没有。之前很多人推荐的直接拉带 ssh 的 docker 镜像,但是那个镜像是 Ubuntu 14 并且是私人封装的,还是不太想用。

  • 首先要安装软件包就要先换成国内镜像源,结果 vim nano 之类的都没有,要安装他们又要先换镜像源,ubuntu 典中典。我反正是直接 echo 进去的
  • 装 ssh,配 ssh,装 python, …
  • 映射文件夹,让 docker 内脚本执行输出的文件能直接在群晖 Linux 下读取
  • 最后把编写的脚本放进去执行,又发现了一个典中典,我想用的 api 是不能直接访问的,需要科学上🕸…

docker pt. 2#

然后拉了一个cXXXh(手动和谐)镜像,添加7890端口映射,docker 全部改成桥接,把 ubuntu 容器的 http/s proxy 设成 cXXXh 容器的地址 + 7890,再去 ubuntu 容器继续调 api。此步带来的额外 buff 是可以直接让 NAS 变成旁路由。由于 cXXXh 容器是配置文件式的设置过程,又装了个 web 前台来用 GUI 调整和观察配置:

image-20220925001421178

资源情况:

image-20220925001449567

2G 的内存干点这些事情还是绰绰有余的。

脚本能跑之后,设置个 cron 定时运行,就可以实现一直监控 api、定时爬取数据、处理数据了,之后就可以考虑怎么通知了。

通知#

我采用的通知触发方式是非常原始的。ubuntu 容器内的定时脚本跑完后,会输出结果到挂载在群晖 Linux 下的一个目录内,如果达到触发条件,就会在输出文件添加特定字符。群晖的 DSM 设置添加一个「用户定义的脚本」定时任务,每次执行时直接grep -q输出文件看有没有特定字符,有就 exit -1,发邮件。

同时还玩了下 telegram 的 bot,可以直接从 ubuntu 容器内把通知发出去,参考

透過 Telegram Bot 發送 Synology 系統訊息

Telegram Bot API

关于旁路由#

虽然没有正经测试,但是 NAS 上的旁路由可以通过 uPnP 实现透明代理(主要看路由器),不想折腾也可以只配个代理服务器,性能应该是比手机端侧强的。家里不怎么挪动的设备如平板、主机之类的可以直接一次配好不要再动了。

另外本次操作违反了之前迈出白群第一步所相信的 all in one 也要数据和计算分离的理念,真的定时事务、运算事务还是应该交给一台专门的机器负责(下一步,N5105 万兆走起?),群晖应该尽量关闭端口老老实实做 NAS。虽然从看板上看群晖搞三个 docker 再跑定时任务也没啥负担:

image-20220925002120169

关于任务#

理论上可以直接在群晖的 Ubuntu docker(或者任意一个「不愿意透露姓名」的远端)上实现一个全功能的 telegram bot 而不暴露任何公网接口,对没有公网 IP 资源的人来说非常友好。

群晖后台的裸 Linux 是非常难用的,很多工具都找不到或者用不了,拜它的魔改和特殊 CPU 架构所赐。

P.S. 有公网 IP 资源的还折腾个啥,直接搞个看板定时刷新数据就行了。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。