Aaron Li's Blog

In solitude, where we are least alone.

一名萌新程序员


Press on avatar to see the blogs.

TTRSS + RSSHUB 个人RSS服务

最近的聚合类新闻客户端越来越难用了。 又不喜欢一堆手机客户端,搞一个聚合的RSS势在必行。
不过RSS已经过气多年,支持的软件/网站少之又少,所以决定自己搞一个。
看了一些安利的文章,决定使用docker来部署Tiny Tiny RSS作为RSS服务器,RSSHub作为RSSfeed的生成器。

1. 安装docker/docker-compose

docker就是造福人类的神器啊,不需要从头开始一点点配置,直接一步到位。
ubuntu使用如下指令安装docker:

sudo apt install docker.io

如果是用群晖,docker只需要在应用中心中启用就可以了,但是群晖没办法(或者是我没找到)docker-compose,这里还是以ubuntu为主。

docker-compose最好不要使用apt来安装,在ubuntu16.04上安装的是1.8版,而TTRSS和RSSHub的docker-compose.yml都需要更高的版本支持。这里直接从官网的安装教程中截取一段

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

github比较慢的同学可以用代理下载

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -x http://your.proxy:port/

安装好测试一下

docker-compose --version

注:若官网更新请以官网为准

2. 部署TTRSS

TTRSS全名Tiny Tiny RSS,是一款基于 PHP 语言的开源 RSS 阅读器,提供了网页阅读和通过插件对很多RSS客户端的支持。

Henry Wang 提供了一站式部署的Awesome TTRSS容器,经过简单修改既可以直接使用。

通过 docker-compose 部署 <=官方教程

直接下载 docker-compose.yml

wget https://raw.githubusercontent.com/HenryQW/Awesome-TTRSS/master/docker-compose.yml

按照其注释修改其中的密码和SELF_URL_PATH=http://your.domain/
若需要代理则增加环境变量HTTP_PROXY=http://your.proxy:port/

注意RaspberryPi不支持OpenCC

docker-compose up -d

等待部署完成即可,若需修改变量则需

docker-compose down
docker-compose up -d

注意

docker-compose restart

并不会对修改做出响应,详见https://docs.docker.com/compose/reference/restart/

通过http://your.domain/即可访问TTRSS,注意更改用户名密码。

其他插件的启用详见https://ttrss.henry.wang/zh/#插件

3. 部署RSSHUB

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,发起人为DIYgod,目前在Github有300+Contributors。(万物皆可 RSS)

RSSHub 部署 <=官方教程

和TTRSS类似直接下载 docker-compose.yml

wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml
docker volume create redis-data
docker-compose up -d

这里不需要修改什么,如果需要代理则参见代理配置

4. Caddy反向代理

具体的Caddy反向代理和Cloudflare CDN加速可以参考之前写的蜗牛星际+Frp+Caddy+Cloudflare折腾记

这里给出具体的Caddyfile

example.com {
    tls {
        dns cloudflare
    }
    gzip
    timeouts none
    root /var/www/html
    basicauth / accountname password
    proxy /RSSHub 127.0.0.1:1200 {
        without /RSSHub
    }
    proxy /TTRSS 127.0.0.1:181 {
        transparent
    }
}

或想和主站分开,做独立的subdomain

example.com {
    tls {
        dns cloudflare
    }
    gzip
    timeouts none
    root /var/www/html
}

rsshub.example.com {
    tls {
        dns cloudflare
    }
    gzip
    basicauth / accountname password
    proxy / 127.0.0.1:1200
}

ttrss.example.com {
    tls {
        dns cloudflare
    }
    gzip

    proxy / 127.0.0.1:181 {
        transparent
    }
}

5. 遇到的一些问题

在配置过程中遇到了奇奇怪怪的(弱智)问题

5.1 docker-compose 启动失败

在配置好RSSHub的时候发现TTRSS怎么都up不了,要么就是Killed,要么就是docker service stop了(error exit)

root@xxx:~/ttrss# docker-compose up -d
Creating network "ttrss_default" with the default driver
Creating mercury  ...
Creating postgres ...
Creating opencc   ...
Creating ttrss    ...
Killed

因为一直是SSH登陆没发现什么原因,打开console一看原来是内存不够了,这时候我们需要增加swap(毕竟内存要花钱买)。参考:Vultr VPS内存不足怎么办?增加SWAP交换分区可以解决

注意这里是root权限

cd /var
dd if=/dev/zero of=swapfile bs=1024 count=524288 #512M, 按需调整
mkswap /var/swapfile
chmod 0600 /var/swapfile
/sbin/swapon swapfile

/etc/fstab中增加如下一行

/var/swapfile swap swap defaults 0 0

重启即可

执行free -m

root@xxx:~/ttrss# free -m
              total        used        free      shared  buff/cache   available
Mem:            480         225          18          11         236         190
Swap:           511         244         267

swap已经建立好了

5.2 TTRSS SELF_URL_PATH incorrect

配置好TTRSS的时候,登陆发现提示错误

Please set SELF_URL_PATH to the correct value detected for your server: http://127.0.0.1:181/

我明明设置了正确的域名,却让我将SELF_URL_PATH设置成本地地址
结果修改后登陆页面是有了,一登陆就会跳转到 http://127.0.0.1:181/

结果发现Caddyfile中忘记设置transparent

ttrss.example.com {
    tls {
        dns cloudflare
    }
    gzip

    proxy / 127.0.0.1:181 {
        transparent
    }
}

5.3 RSSHub wrong path

配置好RSSHub后,什么地址都会报错

Error: wrong path
    at module.exports (/app/lib/middleware/parameter.js:14:15)
    at process._tickCallback (internal/process/next_tick.js:68:7)

在github的issue里面找到的都是一些不按照教程使用错误,仔细检查发现并没有

结果也是Caddyfile的坑,忘记了加without RSSHub这一条,结果后端解析的地址都是错的
比如
example.com/RSSHub/36kr/newsflashes
解析成了
127.0.0.1:1200/RSSHub/36kr/newsflashes

example.com {
    tls {
        dns cloudflare
    }
    gzip
    timeouts none
    root /var/www/html
    basicauth / accountname password
    proxy /RSSHub 127.0.0.1:1200 {
        without /RSSHub
    }
}

Reference

Awesome TTRSS
RSSHub
如何搭建属于自己的 RSS 服务,高效精准获取信息
(另一篇)Tiny Tiny RSS 教程
蜗牛星际+Frp+Caddy+Cloudflare折腾记
Vultr VPS内存不足怎么办?增加SWAP交换分区可以解决

最近的文章

老电脑焕发第二春,Thinkpad X201i复活记(续)

老电脑系列第二篇,给Thinkpad X201i刷BIOS白名单,更换无线网卡。

继续阅读
更早的文章

老电脑焕发第二春,Thinkpad X201i复活记

老电脑系列第一篇,介绍Thinkpad X201i拆机,清灰,更换风扇、硬盘、电池、以及增加内存的过程。

继续阅读
Top