# 🐋 Awesome TTRSS

Docker Pulls Docker Stars Docker Automated build Docker Build Status FOSSA Status

# 关于

Tiny Tiny RSS 是一款基于 PHP 的免费开源 RSS 聚合阅读器。🐋 Awesome TTRSS 旨在提供一个 「一站式容器化」 的 Tiny Tiny RSS 解决方案,通过提供简易的部署方式以及一些额外插件,以提升用户体验。

# 鸣谢

赞助者

# 部署

推荐使用一台 VPS 来部署您的 Awesome TTRSS 实例,DigitalOcean 提供高性价比的 VPS 仅需 $5/月。除此之外,通过 Awesome TTRSS 的 💰OpenCollective 页面 进行赞助,即可获得定制支持,全托管服务,全托管 VPS 等私人服务。

Awesome TTRSS 支持多架构 x86 ✓arm32v7 ✓arm64v8 ✓(暂不包括 OpenCC API)。

# 通过 Docker 部署

docker run -it --name ttrss --restart=always \
-e SELF_URL_PATH = [ TTRSS 实例地址 ]  \
-e DB_HOST = [ 数据库地址 ]  \
-e DB_PORT= [ 数据库端口 ]  \
-e DB_NAME = [ 数据库名称 ]  \
-e DB_USER = [ 数据库用户名 ]  \
-e DB_PASS = [ 数据库密码 ]  \
-p [ 容器对外映射端口 ]:80  \
-d wangqiru/ttrss

# 通过 docker-compose 部署

docker-compose.yml 包含了 4 个镜像:

  1. TTRSS
  2. PostgreSQL
  3. Mercury Parser API
  4. OpenCC API arm32v7 ✗arm64v8 ✗

# 步骤

  1. 下载 docker-compose.yml 至任意目录。
  2. 更改 docker-compose.yml 中的设置,请务必更改 postgres 用户密码。
  3. 通过终端在同目录下运行 docker-compose up -d 后等待部署完成。
  4. 默认通过 181 端口访问 TTRSS,默认账户:admin 密码:password,请第一时间更改。
  5. wangqiru/mercury-parser-apiwangqiru/opencc-api-server 为支持高级功能而加入的可选服务类容器,删除不会影响 TTRSS 基础功能。

# 支持的环境变量列表

  • SELF_URL_PATH: TTRSS 实例地址。🔴 请注意,该变量值必须与你在浏览器中用于访问 TTRSS 的 URL 保持完全一致,否则 TTRSS 将无法启动。
  • DB_HOST: 数据库地址
  • DB_PORT: 数据库端口
  • DB_NAME: 数据库名字
  • DB_USER: 数据库用户名
  • DB_PASS: 数据库密码
  • ENABLE_PLUGINS: 全局启用的插件名称,其中 auth_internal 为必须启用的登录插件
  • SESSION_COOKIE_LIFETIME: 使用网页版登陆时 cookie 过期时间,单位为小时,默认为 24 小时
  • HTTP_PROXY: ip:port, TTRSS 实例的全局代理,为源地址添加单独代理请使用 Options per Feed
  • SINGLE_USER_MODE: true 为开启单用户模式,同时关闭用户认证,无需登录即可使用。请仅在安全环境下开启
  • LOG_DESTINATION: 日志路径,sql 日志存入数据库,可在 偏好设置 --> 系统 中查看,syslog 日志存入系统日志,空值为使用 PHP 日志。默认为 sql
  • FEED_LOG_QUIET: true 禁用订阅源更新所产生的日志打印

# 配置 HTTPS

TTRSS 容器自身不负责使用 HTTPS 加密通信。参见下方的样例自行配置 Nginx 反向代理。使用 Let's Encrypt 可以获取免费 SSL 证书。

upstream ttrssdev {
    server 127.0.0.1:181;
}

server {
    listen 80;
    server_name  ttrssdev.henry.wang;
    return 301 https://ttrssdev.henry.wang$request_uri;
}

server {
    listen 443 ssl;
    gzip on;
    server_name  ttrssdev.henry.wang;

    ssl_certificate /etc/letsencrypt/live/ttrssdev.henry.wang/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ttrssdev.henry.wang/privkey.pem;

    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;
    }
}

如果你想启用子目录,https://mydomain.com/ttrss,请参考如下配置:

    location /ttrss/ {
        rewrite /ttrss/(.*) $1 break
        proxy_redirect https://$http_host https://$http_host/ttrss
        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;
    }

🔴 请注意, 你需要更新 SELF_URL_PATH 环境变量。

# 更新

Awesome TTRSS 会自动监控 TTRSS 官方更新并与之同步,这意味着更新会比较频繁。

TTRSS 官方不再释出 tagwangqiru/ttrss:latest 会与 官方 master branch 同步。

# 手动更新

通过以下命令进行手动更新:

    docker pull wangqiru/ttrss:latest
    # docker pull wangqiru/mercury-parser-api:latest
    # docker pull wangqiru/opencc-api-server:latest
    docker-compose up -d # 如果您没有使用 docker-compose,我确信您知道该怎么做。

# 自动更新

[样例 docker-compose](#通过-docker-compose-部署) 中包含了 Watchtower,它会自动拉取并更新您所有的服务容器 (包括当前系统上运行的非 Awesome TTRSS 服务的容器)。该服务默认关闭,启用前请确认它将不会影响您其他的服务容器。

您也可以设置 watchtower 忽略您的其他容器:

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

# 迁移

为了更好地优化 Awesome TTRSS,有时候可能会推出一些破坏性更新。

# Postgres 数据库迁移

从 sameersbn/postgresql 迁移至 postgres:alpine。

容器镜像 sameersbn/postgresql postgres:alpine
Postgres 版本 10.2 latest (文档更新时为 12.1 )
大小 176MB 72.8MB

sameersbn/postgresql 已经完成了它的使命,pg_trgm 扩展已经不再需要通过它来开启,迁移至 postgres:alpine 可以让 Awesome TTRSS 获得 Postgres 的最新更新,以及节约超过 100MB 的部署空间。

开始迁移:

  1. 停止所有服务容器:
    docker-compose stop
    
  2. 复制 Postgres 数据卷 ~/postgres/data/(或者你在 docker-compose 中指定的目录)至其他任何地方作为备份,这非常重要!
  3. 执行如下命令来导出所有数据:
    docker exec postgres pg_dumpall -c -U 数据库用户名 > export.sql
    
  4. 根据最新 docker-compose.yml 中的database.postgres 部份来更新你的 docker-compose 文件(注意 DB_NAME 不可更改),并启动:
    docker-compose up -d
    
  5. 执行如下命令来导入所有数据:
    cat export.sql | docker exec -i postgres psql -U 数据库用户名
    
  6. 测试所有服务是否正常工作,现在你可以移除步骤二中的备份了。

旧版 docker-compose 文件已经被 归档为 docker-compose.legacy.yml

# 插件

# Mercury 全文获取

全文内容提取插件,配合单独的 Mercury Parser API 服务器使用。[样例 docker-compose](#通过-docker-compose-部署) 中已经包含了 HenryQW/mercury-parser-api 服务器。

# 设置步骤

  1. 在设置中启用 mercury-fulltext 插件 启用 Mercury
  2. 在设置中填入 Mercury Parser API 地址 填入 Mercury Parser API 地址

使用 Awesome-TTRSS 部署的 OpenCC 可填写service.mercury:3000

# 全文提取按钮

# Fever API

提供 Fever API 支持。

# 设置步骤

  1. 在设置中启用 API。 启用 API
  2. 在插件设置中设置 Fever 密码。 设置 Fever 密码
  3. 在支持 Fever 的阅读器用,使用 https://[您的地址]/plugins/fever 作为服务器地址。使用您的账号和步骤 2 中的密码登录。
  4. 由于该插件使用未加盐的 MD5 加密密码进行通信,强烈建议 开启 HTTPS

# OpenCC 繁简转换 arm32v7 ✗arm64v8 ✗

使用 OpenCC 为 TTRSS 提供中文繁转简的插件,需要配合单独的 OpenCC API 服务器使用。[样例 docker-compose](#通过-docker-compose-部署) 中已经包含了 HenryQW/OpenCC.henry.wang 服务器。

# 设置步骤

  1. 在设置中启用 opencc 插件 启用 opencc
  2. 在设置中填入 OpenCC API 地址 填入 OpenCC API 地址

使用 Awesome-TTRSS 部署的 OpenCC 可填写service.opencc:3000

# 转换按钮

# FeedReader API

提供 FeedReader API 支持。

系统插件,将 api_feedreader 添加到 ENABLE_PLUGINS 环境变量中以启用。

使用指南见 FeedReader API

# News+ API

为 Android App News+ 和 iOS App Fiery Feeds 提供更快的同步速度。

系统插件,将 api_newsplus 添加到 ENABLE_PLUGINS 环境变量中以启用。

使用指南见 News+ API

# Feediron

提供文章 DOM 操控能力的插件。

使用指南见 Feediron

# Options per Feed

提供单独为源地址配置代理、user-agent 以及 SSL 证书验证的能力。

使用指南见 Options per Feed

# Remove iframe sandbox

注意

该插件与 Fever API 不能同时作为全局插件启用。如果您同时需要两者:

  1. 在环境变量 ENABLE_PLUGINS 中移除 fever 并添加 remove_iframe_sandbox 作为全局插件启用。
  2. 在登陆 TTRSS 后,通过设置将 Fever API 作为本地插件启用。

移除 iframe 上的 sandbox 属性,以支持 feed 中直接播放嵌入视频。

使用指南见 Remove iframe sandbox

# 主题

# Feedly

Feedly

# RSSHub

RssHub

# 使用建议

# 支持与帮助

# 捐赠

PayPal 微信赞赏 OpenCollective
paypal 💰OpenCollective page

# 许可

MIT

FOSSA Status

上次更新: 2020/5/8 上午5:06:31