飞牛通过Docker部署Miniflux以及FreshRss

前言

  • 一切的缘起于FeedRss插件,前几天写出来之后,原本准备把一些优质的博客,单独订阅出来,全部加到插件后台,让插件自动订阅展示,但是我有点担心订阅过多的话,会导致服务器性能拉掉,所以想着尝试通过订阅公共订阅源,用于展示,中间用过几天博友圈的订阅,优质文章还真不少。但是毕竟不是自己喜欢的,这让我纠结了好久,还是决定自己搞。
  • 所以这时候就需要自建一个可以提供公共RSS服务的订阅程序,我们的老朋友就来了。搭建一个自己的rss订阅服务-FreshRSS,这篇文章是我两年前写的,目前已经有将近三万多的浏览量了,通过FreshRss的后台查看,是可以提供公共RSS,大概在账户管理的位置可以看到。那就进入下一步,怎么部署,首先我想起了前段时间申请到的serv00服务器,查看了FreshRss的安装要求,源代码部署是没有什么问题的,环境也都支持,开整。

Serv00部署FreshRSS

  • 下载FreshRss的源代码,这里我们通过FreshRSS ,下载到zip文件的源码。通过serv00的文件管理上传到对应域名的public_html下。

1FreshRSS-serv00部署.png

  • 由于我没搞明白怎么在文件管理里面解压文件,所以这步只能通过命令解压,cdpublic_html目录,使用unzip freshrss.zip解压文件。为什么如此复杂的解压,两方面,第一,我这里连不上Serv00的上传服务器,SSH都得挂代理,第二,挂上代理,直接上传解压的文件,会上传到一半出错。

2FreshRSS-serv00解压.png

  • 解压后,将解压出来文件全部挪到public_html下,就可以通过之前解析域名访问安装。

3FreshRSS-serv00安装.png
4FreshRSS-serv00配置环境.png
5FreshRSS-serv00数据库.png
6FreshRSS-serv00设置账号.png

  • 设置中文,环境默认都是支持的,数据库不知道怎么回事,一直连不上,索性就SQLite数据库了,配置登录账号密码。就完成了本次安装!

7FreshRSS-serv00服务界面.png
8FreshRSS-serv00服务器爆炸.png

  • 部署后的界面,整体运行起来感觉卡卡的。简单设置了一下,准备把我之前的配置文件导入,这简直是灾难的开始,没一会直接就和服务器失联了。看了下Serv00的后台,已经快要爆炸了,我大概导入了200多个订阅,一边看着刷新源,一边看着后台超负荷运行。果然免费的就是免费的,搭建个页面应该没啥问题,太复杂的服务还是算了,处理限制太多了。并且不知道是不是因为防火墙的问题,Serv00似乎无法订阅到国内的很多站点,就连我自己的站点都订阅不了,日志显示超时。所以这路不通了。

飞牛Docker部署Miniflux

  • 随后就在网上搜索关于好用的RSS服务,看到推荐的这个Miniflux,主要是被简洁的界面吸引了,看起来真的不错。于是便想到了体验一番,部署过程很简单,通过Docker-compse部署,这里我在本地的飞牛NAS上面部署的,因为阿里99那台机子上面挂了3个Docker服务,其他必备环境,目前CPU常年百分百,实在是没法用了。本次本地部署,通过Frp内网穿透出去。
  • 官方参考信息:https://miniflux.app/docs/docker.html
  • 参照官方给出的文件,我这里调整了端口,初识登录密码可以根据情况变更,其他懂的调整,不懂就不用改了。通过飞牛Docker左侧栏的compose新增项目即可。

9miniflux部署.png

services:
  miniflux:
    image: miniflux/miniflux:latest
    ports:
      - "19999:8080"
    depends_on:
      db:
        condition: service_healthy
    environment:
      - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
      - RUN_MIGRATIONS=1
      - CREATE_ADMIN=1
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=test123
  db:
    image: postgres:17-alpine
    environment:
      - POSTGRES_USER=miniflux
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=miniflux
    volumes:
      - miniflux-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "miniflux"]
      interval: 10s
      start_period: 30s
volumes:
  miniflux-db:

10miniflux主页面.png

  • 简单使用了一下,该有的功能都有,界面简洁。但是不幸是貌似不支持公共源链接,我也问了下AI,给我的结果也是类似,准确来说,这个主要是私人部署使用,配套的APP也需要通过API秘钥链接。所以这条路也不通!

飞牛Docker部署FreshRss

  • 耐心用完了,这几天也折腾到挺晚的,还是部署FreshRss吧,不过是本地部署。本地部署肯定少不了踩坑。也做一个分享。
  • 通过飞牛NAS拉取freshrss的镜像,如图所示:点击右边三角启动镜像配置。
docker run -d --restart unless-stopped --log-opt max-size=10m \
  -p 8080:80 \
  -e TZ=Europe/Paris \
  -e 'CRON_MIN=1,31' \
  -v freshrss_data:/var/www/FreshRSS/data \
  -v freshrss_extensions:/var/www/FreshRSS/extensions \
  --name freshrss \
  freshrss/freshrss
  • 上方代码是官方给出的最新部署代码,嫌麻烦的话,可以直接SSH部署。
  • 使用飞牛的话,记着官方给出需要配置的参数

    • 在端口 8080 上公开(这个可以自定义端口)
    • 使用服务器时区(默认为UTC) (也可以配置Asia/Shanghai,这样时间会准一些)
    • 使用自动 cron 作业刷新源 (自动刷新,这个得配置,在环境配置处)
    • 将 FreshRSS 数据保存在 Docker 卷中,并将可选扩展保存在freshrss_datafreshrss_extensions (新建对应文件夹,映射后面的两个FreshRss内部文件夹)

11飞牛部署FreshRss.png

  • 部署完毕后,如无报错,可以通过内网IP+端口访问。

12飞牛部署FreshRss安装.png
13飞牛部署FreshRss缺失权限.png

  • 检查环境,发现相关文件路径没有权限。这里需要开启SSH或者通过终端处理。
  • 根据路径报错,是/var/www/FreshRSS/data报错,那就配置路径权限,这里参考群晖使用 docker 搭建 FreshRSS 踩坑
docker exec freshrss chown www-data:www-data -R /var/www/FreshRSS/data
docker exec freshrss chmod g+rx /var/www/FreshRSS/data

14飞牛部署FreshRss调整路径权限.png

  • 调整完毕,提示有权限,进入下一步。

15飞牛部署FreshRss数据库.png
16飞牛部署FreshRss设置密码.png

  • 数据库依旧选择SQLite,设置账号密码。通过Frp反代出去。

17飞牛部署FreshRss反代域名不对.png

  • 反代出去后,发现FreshRss的主域名不对,还是显示的内网地址,后台是无法设置,根据官方指导我们需要对docker内的配置参数进行调整。

18飞牛部署FreshRss修改参数.png

  • 这里参考官方指导文件将 Caddy 用作带有子域的反向代理,我们需要调整config.php文件里面的'base_url' => 'https://subdomain.example.com/',将内网地址调整为自己的域名。
  • 可以通过docker bash ***** 链接调整,我这里通过飞牛Docker的终端连接:文件路径在cd data/config.php,这里如果没有文本编辑器的话,就安装一个。修改对应参数,注意格式。
    19飞牛部署FreshRss修改完毕.png
  • 调整完毕后,重启一下容器,再看就显示正常了。这样就可以配置参数了。

FeedRss调整

  • 这里需要提醒一下,FreshRss的公共RSS源获取,是通过界面右上角-设置图标-账户-主验证 token
    下方的链接获取的,直接复制https://xx.xxx.xxx/i/?a=rss&user=adminadmin&token=&hours=199 填写到FeedRss里面是无法订阅的,我们需要删除掉后缀https://xx.xxx.xxx/i/?a=rss ,仅保留此部分。你可以通过浏览器测试一下,是可以正常显示订阅的。

20FeedRss显示异常.png

  • 订阅测试期间,先测试了几个老哥的订阅,其中订阅到雅余老哥博客的时候,由于最新的文章里面开头是图片,在FreshRss的公共链接里面也有对应的显示,导致页面显示异常。这里对FeedRss插件进行了调整。

    • 增加了对图片链接的过滤,仅保留文字部分。
    • 文字展示限制到了100个字。
    • 订阅下方新增了作者选项。

21FeedRss调整效果.png

  • 调整过后,整个界面看起来美观多了。最新代码也已经更新到相关的项目页面了RssFeed,欢迎下载测试体验。

  • 对这几天折腾做了一个总结,这一章算是翻篇了,后面会精选一些博客添加到飞牛NAS上面的FreshRss里面,做一个订阅展示。完结撒花!

已有 45 条评论

    1. 很详细,对于我们新人来讲,已经是手把手的教了。

      1. 肯定是手把手教程,要不然白写了

    2. 我在飞牛的Docker上第一次拉取镜像没问题,之后有新版本更新总是会失败,更换了仓库源也不行,不知道啥问题

      1. https://docker.1ms.run这个不错,就是限制流量。添加到厂库那个地方启用就行了。

        1. 我来加一个,下次再有更新试试看

    3. 不错。
      Serv00 搞那个包活代码没有?

      1. 活代码??直接部署就行了,就是服务器限制太多了。

        1. 保活
          让服务器一直运行着,之前n8n 就是虽然自动执行。还是2.3天就自动关闭了。

          1. 我看有用青龙自动执行的。

    4. 你在内网服务器部署的fresh啊

      1. 部署了一个,给插件用

    5. 折腾到最后,估计就把博客也搬到nas上去了。

      1. 暂时不考虑,毕竟没UPS,网络也没热备。

    6. 看了好多友友的rss源订阅 大多都是基于FreshRss后改的哎

      1. 甚至有一些还是基于我的文章,哈哈哈。

    7. 教程很详细,不错的项目

    8. Serv00 的 ip 太脏了,对于很多套了CF的网站来说,用 Serv00 IP 去访问很容易遇到5秒盾,另外还有个网络超时问题,用来挂个闲置站或者上油管倒是凑合。

      1. 是的,目前也只能后面两种选择了。

发表评论