Tiny Tiny RSS:部署中的普遍问题与注意事项总结

Cover image

最近一直在折腾 Tiny Tiny RSS,包括升级、添加样式和持久化。由于我是直接使用了 Awesome TTRSS 项目提供的 docker-compose.yml 部署的 Docker 版本 Tiny Tiny RSS,所以一些经验还是具有普遍性、值得分享的。这里我总结一下我在部署 Tiny Tiny RSS 过程中遇到的一些「普遍问题」和「注意事项」。

关于如何在自己的服务器上面部署 Tiny Tiny RSS:

RSS 订阅

另外,订阅我博客 RSS 的同学(来自 Feedly 的数据)已经达到了惊人的 10 个!谢谢各位的关注,没有用 RSS 订阅的同学可以点击下方徽章直接在 Feedly 中订阅。🙇‍♂️

如何直接更新最新版本的 Tiny Tiny RSS

首先明确一下,更新 Awesome TTRSS 至最新版时,实际上更新了全部组件,包括 Tiny Tiny RSS 本体、主题、插件等等。比如这次更新(2020 年 2 月更新)就将 Feedly 主题 最新的更新中加入的 feedly-cozy.cssfeedly-sepia.css 等等主题全部加入了。

更新之后加入的最新的 Feedly 主题

我推荐大家手动执行更新。更新 Tiny Tiny RSS 本体:

docker pull wangqiru/ttrss:latest

更新 Mercury 和 OpenCC 服务:

docker pull wangqiru/mercury-parser-api:latest
docker pull wangqiru/opencc-api-server:latest

之后,重启 Tiny Tiny RSS 服务即可:

docker-compose up -d

Awesome TTRSS 项目中提供了 Watch Tower 项目,但是我并不推荐大家通过这一工具进行自动更新,因为 Watch Tower 会将你的全部 Docker 容器更新,可能会导致其他环境的不兼容。

如何在编辑 docker-compose 文件之后重启 Tiny Tiny RSS

无论是重新配置了何种环境,是重新映射的 Volume 还是添加了 docker-compose.yml 设置,我都推荐直接用这一命令重启 Tiny Tiny RSS 服务:

docker-compose up -d

如果你先运行停止 Docker 容器(docker-compose downdocker-compose rm)的命令,我都遇到过数据库丢失的情况,因此只要没有特殊需要,我们都可以只使用上面的命令重启 Tiny Tiny RSS 服务。

如何正确的配置 Fever Emulation API

通常,为了适配第三方 RSS 阅读器比如 Reeder,我们需要使用 Fever Emulation API 进行「登录」。首先我们必须开启 Tiny Tiny RSS 外部 API 访问的权限。在 Preference » General » Enable API 处开启:

设置允许通过外部 API 访问 Tiny Tiny RSS

Fever Emulation 的 API 包含有三个部分:

  • 你的 Fever API 地址(通常是你的服务器域名 + /plugins/fever/
  • 你的登录用户名
  • 你的 Fever API 密码

在 Preferences » Personal data / Authentication » Personal data » Full name 处设置的用户名就是你 Fever API 的用户名

找到你的用户名

在 Preferences » Fever Emulation 处你可以找到:

  1. Fever API 地址
  2. 设置 Fever API 密码的地方

获取 Fever API 地址并设置 Fever Emulation 密码

要知道,设置 Fever API 的密码时点击 Set Password 并不会提示「成功」,不过你可以从 XHR 请求中看到 Password saved 的 response,所以其实你的密码已经保存啦。用这里设置的 API 地址、用户名和密码,我们就能成功登录 Reeder 等 RSS 阅读器了。

如何设置分栏视图

「分栏视图」就是类似笔记应用的一个侧边栏显示订阅文章列表,另一侧显示文章内容的视图。你可以:

  1. 在 Preferences » Preferences » Articles 中关闭 Combined mode 的设置:

    关闭 Combined mode

  2. 回到主界面,在右上角的汉堡键 » Toggle widescreen mode 处点击打开宽屏模式:

    打开宽屏模式

这样 Tiny Tiny RSS 就会以分栏视图显示文章列表和文章内容了。

Tiny Tiny RSS 分栏视图

另外,我的基于 Feedly 修改的主题配置文件:GitHub - Gist

如何正确设置 Mercury 全文抓取和 OpenCC 繁简转换 API

如果你使用了 Awesome TTRSS 中包含的 Mercury 全文抓取和 OpenCC 繁简转换 API,那么你应该在 docker ps 的输出中看到这两个服务的身影:

docker ps 的输出

如果你这两个服务的配置和原配置一致:

service.mercury:
  image: wangqiru/mercury-parser-api:latest
  container_name: mercury
  expose:
    - 3000
  restart: always

service.opencc:
  image: wangqiru/opencc-api-server:latest
  container_name: opencc
  environment:
    NODE_ENV: production
  expose:
    - 3000
  restart: always

那么,你只需要在 Tiny Tiny RSS 的 Preferences 中开启这两个插件,并将 API 地址依次设置为如下即可。(Docker 会自动探索相应的服务 API 地址。)

Mercury OpenCC
service.mercury:3000 service.opencc:3000

Mercury 全文抓取和 OpenCC 繁简转换 API 设置

注意,你需要在每一个订阅源中明确指定使用 Mercury 或 OpenCC 服务(右键编辑),才可以真正保证服务的准确运行。

编辑订阅源,开启 Mercury 或 OpenCC 服务

如何调试、查看 Tiny Tiny RSS 与其他容器服务的 log

Docker 容器的 log 查看非常简单。如果我们想用 docker-compose 查看整个 Awesome TTRSS 的 log:

# 查看 docker-compose 的 log 后 5 条
docker-compose logs --tail 5

查看 docker-compose 启动的全部服务的 log

我们可以用下面的命令查看单个服务的 log:

# 查看 Mercury 服务后 5 条
docker logs mercury --tail 5

查看 Mercury 全文抓取的 log

另外,我们也可以用下面的命令查看实时更新的 log:

# 查看实时更新的 Mercury 服务(显示 10 条)
docker logs mercury --tail 10 -f

查看实时更新的 Mercury 服务

如何持久化 Tiny Tiny RSS 图标

升级更新了 Tiny Tiny RSS 服务之后,每次订阅源的图标都会丢失。我们可以通过将 Tiny Tiny RSS 的图标文件夹挂载到 Docker 容器之外来「持久化」图标存储。

docker-compose.yml 中,将 Tiny Tiny RSS 的 Docker 容器配置 service.rss 中添加如下的配置:

volumes:
  - ~/awesome-ttrss/feed-icons/:/var/www/feed-icons/ # mount feed icons to local machine

这样即可将 Docker 容器里面 /var/www/feed-icons/ 文件夹里面的内容挂载到外面服务器上的 ~/awesome-ttrss/feed-icons/ 文件夹。

另外,我们还需要给 ~/awesome-ttrss/feed-icons/ 文件赋予合适的权限:

sudo chmod -R 777 feed-icons

这样,Tiny Tiny RSS 下载的 favicon 就全部挂载到本机,更新 Docker 容器也不会对这些内容造成任何影响了。

将订阅源的 icon 挂载到容器外部

感谢阅读。🙇‍♂️

◀ Substats:快速统计你在各个平台的关注者!Remote Jupyter Lab:如何用 Jupyter Lab 将远程服务器资源最大化利用 ▶