跳转至

TTRSS

Tiny Tiny RSS,即TTRSS

Docker搭建

準備

# 按需修改工作目录:
work=~/docker/tinytinyrss && mkdir -p $work && cd $work
# 按需修改端口,开启防火墙:
sudo ufw allow 3894/tcp comment 'tinytinyrss' && sudo ufw reload

# 提前拉取镜像:
docker pull wangqiru/ttrss:latest && 
    docker pull wangqiru/mercury-parser-api:latest && 
    docker pull wangqiru/opencc-api-server:latest && 
    docker pull postgres:13-alpine

compose文件

nano $work/docker-compose.yml

version: "3"
    services:
      service.rss:
        image: wangqiru/ttrss:latest
        container_name: ttrss
        ports:
          - 3894:80 # 按需修改
        environment:
          - SELF_URL_PATH=https://rss.lyricn.com/ # 按需修改
          - DB_PASS=EWufQHO4werW8F2 # 按需修改。与下面的密码对应
        volumes:
          - ./feed-icons:/var/www/feed-icons/
        networks:
          - public_access
          - service_only
          - database_only
        stdin_open: true
        tty: true
        restart: always

      service.mercury:
        image: wangqiru/mercury-parser-api:latest
        container_name: mercury
        networks:
          - public_access
          - service_only
        restart: always

      service.opencc:
        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=EWufQHO4werW8F2 # 按需修改。与上面的密码对应
        volumes:
          - ./db/:/var/lib/postgresql/data
        networks:
          - database_only
        restart: always

    networks:
      public_access: 
      service_only: 
        internal: true
      database_only: 
        internal: true

運行

上綫服務:cd $work && docker-compose up -d

查看日志:docker-compose logs -f

給予文件權限:sudo chmod 777 $work/feed-icons

重啓:docker-compose restart or docker-compose down && docker-compose up -d

初始化

默認賬號密碼:admin password

啓用外部API(偏好設置):爲了讓外部終端如手機使用。

啓用Fever API :Fever API可保证多客户端的实时进度同步。你可以用bitwarden生成一个新的密码并填入Set Password前面的空格中,记得点击Set Password保存。这个密码主要是在手机客户端通过 Fever API订阅时需要用。Fever API的密码与帐号密码是相互独立的。

插件

Mercucy/opencc :开启Mercucy是为了可以获取全文;开启opencc是为了中文的简繁体转换。记得点启用选择生效。

af_youtube_embed:这个插件的作用是在 Youtube RSS提要中嵌入视频(并将Youtube iframe 列入白名单)。

remove_iframe_sandbox:使定於源可以内嵌視頻

快捷鍵

  • a+q:将展开的文章折叠
  • f+q:将某个分类的文章全部标记为已读(好用)
  • n:打开下一篇文章(好用)
  • END和HOME:END用于不断地刷新未加载文章,而HOME是回到最新的文章。在电脑端上看一个消息比较多的频道时,可以先用END全部刷新完一波,然后用HOME定位至最新文章并快速往下浏览(通过是配合PAGE DOWN键)。
  • PAGE UP和PAGE DOWN:向上翻页、向下翻页。文章比较多时很实用。

客戶端

IOS客户端Unread

Unread的用法如下:

地址:https://rss.domain.com/plugins/fever/(这里要注意没有.local!) 帐户:admin 密码:启用Fever时输入的那个密码。不是登陆密码。

備份

通过duplicati定期备份整个$work目录(包含www和db)。

參考

Nginx 配置

#前部分
upstream ttrss {
    server 127.0.0.1:3894;
}
#前部分
server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  ssl_certificate /usr/local/nginx/conf/ssl/rss.lyricn.com.crt;
  ssl_certificate_key /usr/local/nginx/conf/ssl/rss.lyricn.com.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name rss.wzfou. net ;
  access_log /data/wwwlogs/rss.wzfou.net_nginx.log combined ;
  index index.html index.htm index.php;
  root /data/wwwroot/rss.lyricn.com ;
  if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

#后半部分
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://rss.lyricn.com/ttrss,请参考如下配置:

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

參考