自建 RSS

1 RSSHub

  • docker 部署,参考docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=30 diygod/rsshub
    • 注意 cache_expire 为 30s,则 30s 以后 RSS 客户端再去请求就会从源站拉取内容

    • CACHE_EXPIRE 和 CACHE_CONTENT_EXPIRE 的区别解释,来源 tg 群

      1
      2
      3
      注意第一個是 (文章列表+文章) 的緩存,就算你不斷 F5 ,只要是在這個時間內都不會請求源站
      比如說第一次請求到甲站的文章列表有ABC三篇文章, 這時緩存裡記著甲站有ABC及ABC的內容, 只要沒過期你怎樣F5就不會再請求甲站, 都只是緩存返回甲站有ABC
      過期後(5分鐘)再一次請求甲站, 發現甲站的文章列表有BCD, 由於CACHE_CONTENT_EXPIRE(1小時)沒過期, 緩存裡有ABC文章自身的內容, 就不會重複請求BC文章, 只會請求D文

2 miniflux

  • Docker Compose 部署,参考1参考2

  • 注意 POLLING_FREQUENCY 为刷新频率 1min,这里大于 RSSHub 的 cache_expire 保证每分钟都会触发 RSSHub 的重新查询,即不使用缓存

  • ADMIN_USERNAME 和 ADMIN_PASSWORD 设置用户密码

  • ports 改成了一个高位端口 18080

  • BASE_URL 设置的域名

  • 保存成 docker-compose.yml,然后 docker-compose up -d

    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
    services:
    miniflux:
    image: miniflux/miniflux:latest
    ports:
    - "18080:8080"
    depends_on:
    db:
    condition: service_healthy
    environment:
    - POLLING_FREQUENCY=1
    - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
    - RUN_MIGRATIONS=1
    - CREATE_ADMIN=1
    - ADMIN_USERNAME=用户名
    - ADMIN_PASSWORD=密码
    - BASE_URL=https://你的域名
    db:
    image: postgres:15
    environment:
    - POSTGRES_USER=miniflux
    - POSTGRES_PASSWORD=secret
    volumes:
    - miniflux-db:/var/lib/postgresql/data
    healthcheck:
    test: ["CMD", "pg_isready", "-U", "miniflux"]
    interval: 10s
    start_period: 30s
    volumes:
    miniflux-db:
  • postgres docker 创建例子,docker run --name my-postgres -e 'POSTGRES_USER=xxxxx' -e 'POSTGRES_PASSWORD=xxxxx' -e POSTGRES_DB=xxxx -d -p 5432:5432 postgres

3 nginx

  • acme.sh 申请证书并安装

  • apt 装 nginx 该配置文件,只是简单的将 http 转成 https

    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
    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    include /etc/nginx/modules-enabled/*.conf;

    events {
    worker_connections 1024;
    }

    http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    gzip on;
    server {
    listen 443 ssl http2;
    server_name 你的域名;
    ssl_certificate ; #证书位置
    ssl_certificate_key ; #私钥位置

    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    location / {
    proxy_pass http://127.0.0.1:18080; # 对应 miniflux 的端口
    proxy_redirect off;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    }
    }
    }

4 发送通知

5 配置和使用

  • miniflux 取消自动将条目标记为已读

  • firefox tracking protection 对 rss 阅读器网站要关闭,否则 twitter 不显示图片

  • 添加订阅时,以 twitter 为例 http://本地ip:1200/twitter/user/用户名/showEmojiForRetweetAndReply=1,本地 ip 不能是 127.0.0.1,那样会指向 miniflux docker 内部

  • 更新 docker,以 rsshub 为例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    docker pull diygod/rsshub
    docker image ls
    docker ps
    docker stop old_container_id
    docker rm old_container_id
    docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=30 diygod/rsshub
    docker ps
    # 删掉旧的 image
    docker image prune
  • 更新 docker-compose,即 miniflux,参考

1
2
3
docker-compose pull
docker-compose up --detach
docker image prune

6 抓取 Twitter

6.1 模拟浏览器获取通知