前言
博主是一个 RSS 重度使用者,早已不记得是何时开始,也许大概是 Google Reader 那个时代,至今已经十几年,保持着每天睡前阅读的习惯.自 Google Reader 关闭服务后,又转移至Feedly
,使用了几年觉得功能和网络都体验不佳.于是最终选择了自建RSS服务
.
Tiny Tiny RSS 是一款基于 PHP 的免费开源 RSS 聚合阅读器。 Awesome TTRSS 旨在提供一个 「一站式容器化」 的 Tiny Tiny RSS 解决方案,通过提供简易的部署方式以及一些额外插件,以提升用户体验。
部署
使用docker compose
部署,其中包含 4 个镜像:
配置 docker-compose.yml
- 建议在
root
目录下创建ttrss
文件夹,以存放docker-compsoe.yml
配置文件和postgres数据库目录
. - 下载 docker-compose.yml 至
ttrss
目录 - 更改 docker-compose.yml 中第7和23行两处的数据库密码
- 更改 docker-compose.yml 中第18行最终访问地址
- 修改 docker-compose.yml 中第9行的挂载目录,由
~/postgres
改为./postgres
,以挂载至ttrss
目录下.
docker-compose.yml 参考示例:
version: "3"
services:
database.postgres:
image: sameersbn/postgresql:latest
# container_name: postgres
environment:
- PG_PASSWORD=ttrss # please change the password
volumes:
- ~/postgres/data/:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
restart: always
service.rss:
image: wangqiru/ttrss:latest
# container_name: ttrss
ports:
- 181:80
environment:
- SELF_URL_PATH=http://localhost:181/ # please change to your own domain
- DB_HOST=database.postgres
- DB_PORT=5432
- DB_NAME=ttrss
- DB_USER=postgres
- DB_PASS=ttrss # please change the password
- ENABLE_PLUGINS=auth_internal,fever # auth_internal is required. Plugins enabled here will be enabled for all users as system plugins
stdin_open: true
tty: true
restart: always
command: sh -c 'sh /wait-for.sh $$DB_HOST:$$DB_PORT -- php /configure-db.php && exec s6-svscan /etc/s6/'
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
expose:
- 3000
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
expose:
- 3000
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
配置 HTTPS 协议
TTRSS 容器自身不负责使用 HTTPS 加密通信,我们需要使用 Nginx 来反向代理.
upstream ttrssdev {
server 127.0.0.1:181;
}
server {
listen 80;
server_name rss.ioiox.com;
return 301 https://rss.ioiox.com$request_uri;
}
server {
listen 443 ssl;
gzip on;
server_name rss.ioiox.com;
ssl_certificate /usr/local/nginx/conf/ssl/ioiox.com.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/ioiox.com.key;
# access_log /var/log/nginx/ttrssdev_access.log combined;
# error_log /var/log/nginx/ttrssdev_error.log;
location / {
proxy_redirect off;
proxy_pass http://ttrssdev;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
启动 docker compose
执行以下命令启动 docker compose
docker-compose up -d
修改配置
如果docker-compose.yml
配置错误,按照以下步骤修改配置再次启动.
docker-compose down
# 关闭 Docker 容器
# 修改 docker-compose.yml 配置文件
docker-compose up -d
# 再次启动 docker compose
更新
手动更新
通过以下命令进行手动更新:
docker-compose down
# 关闭 Docker 容器
docker pull wangqiru/ttrss:latest
docker pull wangqiru/mercury-parser-api:latest
docker pull wangqiru/opencc-api-server:latest
docker pull sameersbn/postgresql:latest
# 更新镜像
docker-compose up -d
# 重新启动 Docker 容器
自动更新
上文docker-compose.yml
中包含了Watchtower
,它会自动拉取并更新您所有的服务容器 (包括当前系统上运行的非 Awesome-TTRSS 服务的容器).该服务默认关闭
,启用前请确认它将不会影响您其他的服务容器.
service.mercury:
image: wangqiru/mercury-parser-api:latest
# container_name: mercury
expose:
- 3000
restart: always
# ⬇️ 这将使 Watchtower 跳过对 mercury-parser-api 的更新检测
labels:
- com.centurylinklabs.watchtower.enable=false
迁移
早前曾按照常规的的迁移方法备份docker-compose.yml
和postgres数据库目录
至新服务器,域名及反向代理也配置相同,最终报数据库错误
,没有成功
.所以还是推荐使用备份还原数据库
的方式来进行迁移最为妥当.为避免意外导致docker无法启动,还推荐使用crontab
定时导出数据库进行备份.
备份数据库
在原环境 docker 运行时,执行以下命令导出数据库到当前目录,拷贝导出的expoet.sql
到新服务器.
docker exec postgres pg_dumpall -c -U postgres > export.sql
恢复数据库
按照上文全新部署并启动 docker 后,执行以下命令导入数据库.
cat export.sql | docker exec -i postgres psql -U postgres
定时备份
推荐使用crontab
来配置定时备份任务.
crontab -e
# 添加以下任务,每天凌晨1点备份数据库到 ttrss 目录.
0 1 * * * cd /root/ttrss && docker exec postgres pg_dumpall -c -U postgres > export.sql
插件
Mercury 全文获取
Mercury 全文内容提取插件,需要搭配Mercury Parser API
服务器使用,上文docker-compose.yml
中已经包含了HenryQW/mercury-parser-api
服务器.我们仅需开启插件,并填写 API 地址即可使用.
开启插件
偏好设置 - 插件 - 在用户插件区域找到mercury_fulltext
勾选并启用.
填写 API 地址
信息源 - Mercury Fulltext settings - 如图填写保存即可
service.mercury:3000
设置信息源全文获取
编辑需要全文获取的信息源,插件中勾选Get fulltext via Mercury Parser
保存即可.
Fever API
偏好设置
勾选启用API - 保存设置
偏好设置 - Fever Emulation
自行创建客户端登陆的专用密码
使用 Reeder 4 登陆
- 添加账号类型为
Fever
- 地址为
https://你的rss域名.com/plugins/fever
- 用户名为你的登陆ID
- 密码为
Fever Emulation
中创建的专用密码
结语
常规安装,配置,备份,迁移及常用插件已经部署完毕.其他更多插件,主题,技术与帮助请参考官方文档或至 Github 提交 issues.
26 条评论
按教程部署上了,很快很优雅,比自己手动部署高效很多。
但遇到个问题,无法使用一些快捷键,例如:
“n 显示下一篇文章”
请问是否有什么方法能用上?
“/ 显示搜索对话框”,这个倒是能用。
里面应该有快捷键设置吧,我没试过,我主要是用APP reeder来阅读的.
请问ttrss可以过滤重复文章么
没有遇到过有重复文章的情况呢
不同网站的新闻 内容一样的很多
我在1c1g的轻量云上搭建了miniflux和ttrss,发现ttrss性能不太行,不过我没有具体去监测,从使用感受上说,ttrss的页面经常容易卡顿,有时候直接就不响应。miniflux很快,但是功能的确是少.所以最后还是回归inoreader pro了。
TTRSS架设好了一直没用,主要有很多从大陆出去无法访问的博客,所以暂时仍然采用Feedly~ 归根结蒂还是穷,要是买个HK或者境外的VPS做个梯子就搞定了
使用clash走个本地代理分流怎么样
可以,如果在本地,很好解决刚才说的问题。
我是放在国内,少数源确实很受影响.
推荐到我频道了,谢谢!
已关注频道.