目标

在qnap nas上搭建ttrss、rsshub,并通过fluent reader连接到所搭建的服务,实现多端同步。过程中踩了很多坑,所以这篇文章将列出所有遇到的坑,完整详细地讲解如何搭建一个可以正常使用的rss系统。

nas搭建教程

awesome ttrss (文档

简介

一个一站式rss客户端解决方案,可以多端同步浏览记录。其中的fever插件允许应用程序接入。

创建数据库文件夹

ttrss需要数据库来保存文件。在File station中Container共享文件夹中右键创建文件夹,右键新建的文件夹选择属性,记下文件路径。

注意:显示的文件路径不全,需要在前面补上/share,在后面补上/文件夹名称,最终路径应该像这样:/share/.../文件夹名称

使用docker安装

qnap提供container station,可以运行docker容器。首先在app center里安装container station(这里已经装好):

container station

打开之后选择创建(create),右上角选择create application:
创建

弹出一个窗口,随便取个名字,然后把下面的代码粘贴到YAML一栏(这段代码在官方文档里有):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
version: "3"

services:
service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
ports:
- 181:80
environment:
- SELF_URL_PATH=http://ip:181/ # please change to your own domain
- DB_PASS=ttrss # use the same password defined in `database.postgres`
- PUID=1000
- PGID=1000
- ALLOW_PORTS=1200
volumes:
- feed-icons:/var/www/feed-icons/
networks:
- public_access
- service_only
- database_only
stdin_open: true
tty: true
restart: always

service.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting page
image: wangqiru/mercury-parser-api:latest
container_name: mercury
networks:
- public_access
- service_only
restart: always

service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
image: wangqiru/opencc-api-server:latest
container_name: opencc
environment:
- NODE_ENV=production
networks:
- service_only
restart: always

database.postgres:
image: postgres:13-alpine
container_name: postgres
environment:
- POSTGRES_PASSWORD=ttrss # feel free to change the password
volumes:
- 数据库路径:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
networks:
- database_only
restart: always

# utility.watchtower:
# container_name: watchtower
# image: containrrr/watchtower:latest
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
# environment:
# - WATCHTOWER_CLEANUP=true
# - WATCHTOWER_POLL_INTERVAL=86400
# restart: always

volumes:
feed-icons:

networks:
public_access: # Provide the access for ttrss UI
service_only: # Provide the communication network between services only
internal: true
database_only: # Provide the communication between ttrss and database only
internal: true

粘贴后,修改ip、数据库路径。ip即nas的ip地址,数据库路径即在第一步中创建的文件夹路径。

注意:其中allow_ports为除80,443端口外ttrss可以访问的端口号,这里设置为1200是为了rsshub能够正常订阅。

设置完成后,点确定就可以创建ttrss了。等待一段时间,装好后访问http://ip:181/就可以访问到ttrss界面了。

设置ttrss

打开ttrss后,默认账号admin,密码password。在右上角偏好设置-用户里可以改。

启用fever插件

为了让客户端可以访问ttrss,必须借助fever插件。
偏好设置-偏好设置-Fever Emulation里设个密码:
fever

连接fever(以开源的fluent reader为例,支持windows,ios,android等平台)

打开设置,选择服务,fever api。在“端点”中填入http://ip:181/plugins/fever/。用户名为ttrss用户名,密码是fever插件中设置的密码,不是ttrss的密码!

到此,ttrss设置完毕,可以正常订阅、阅读rss内容了。下面配置rsshub。

rsshub(文档

什么是 rsshub

一个可以为不提供rss站点生成rss的项目。

docker搭建

因为这次不需要多个容器(ttrss需要有数据库和本体),所以不需要输入代码,所有操作都可以在图形界面进行,首先安装rsshub容器(从左到右按照图示操作):
安装rsshub

版本选latest,到最后选择advanced settings>>,选择network一栏,把network mode调成bridge,选择use static IP,把ip address改成不同于nas的(一般改最后一位即可)。

注意:请根据实际网络情况配置该项。

为什么要这么做?

实际测试无法自己访问自己,所以将容器独立出来,为它在局域网内分配一个单独ip,即可正常访问。

接下来建立容器,等待一段时间后访问ip:1200,若出现welcome to rsshub即建立成功。

到此,所有配置全部完成,应该可以正常使用了。