搭建自己的RSS服务

工具 2022-06-11 5982 字 217 浏览 点赞

起步

我上个月搭建了自己的 rss 服务,昨天不能正常登录。再细查,ip 不通了。也确认了不是 ip 被封,猜测最大可能是磁盘写满。在页面上 rebuild 机器,重新搭建一次。

这次把过程记录下来,要是一个月后又崩了,我也能快速地“大不了从头再来”。

准备

  1. 一台 2G RAM 的服务器,预装 centos 系统,磁盘 80G
  2. 两个子域名,以下假设为:

    • rsshub.a.com: rsshub 服务
    • ttrss.a.com: tiny tiny rss 服务
  3. 提前安装 docker

迁移 docker 目录

毕竟怀疑磁盘写满造成的故障,所以第一步是迁移 docker 目录,换到大磁盘去。详细步骤见:两种方式迁移 Docker 的默认安装(存储)目录

我选择第一种软连接的方式:

# 1. 找到 docker 所在目录
$ sudo docker info | grep "Docker Root Dir"

# 2. 复制到新目录
$ cp -a /var/lib/docker /new/dir/path/ 

# 3. 备份旧目录,要是觉得不重要直接删掉也行
$ mv -u /var/lib/docker /var/lib/docker.bak

# 4. 创建软连接
$ sudo ln -fs /new/dir/path/docker  /var/lib/docker

# 5. 重启 docker
$ systemctl restart docker

安装 rsshub

项目地址:https://github.com/DIYgod/RSSHub

用 docker 安装 rsshub:

$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub

# 安装之后确认是否可以正常使用
$ curl 127.0.0.1:1200

配置 nginx:

# conf.d/rsshub.conf
server {
    listen 80;
    server_name rsshub.a.com;  # 绑定子域名

    location / {
        proxy_pass http://127.0.0.1:1200;  # 反代到 rsshub 服务上
    }
}

certbot 安装证书

为了用上 https,需要借助 certbot 安装证书。

# 1. 安装 certbot 以及相关依赖
$ sudo yum install epel-release
$ sudo yum install certbot
$ yum install python3-certbot-nginx

# 2. 为 nginx 安装证书
$ sudo certbot --nginx

580x340

跟着提示走就好,安装成功后访问子域名 rsshub.a.com,看到如下界面就算成功。
580x340

(要是没生效 nginx -s reload 试试?)

安装 ttrss

项目地址:https://github.com/torne/Tiny-Tiny-RRS

ttrss 依赖较多,我们用 docker-compose 来安装。先安装命令:

$ sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

$ chmod +x /usr/local/bin/docker-compose

下载 ttrss 的 docker-compose.yaml:

$ curl -L https://raw.githubusercontent.com/HenryQW/Awesome-TTRSS/main/docker-compose.yml > docker-compose.yaml

接下来就是打开 yaml 文件按需修改:

  1. 修改 pg 密码与挂在目录:
database.postgres:
  image: postgres:13-alpine
  container_name: postgres
  environment:
    - POSTGRES_PASSWORD=[这里填写pg的密码] # feel free to change the password
  volumes:
    - [这里填写宿主机pg的挂在路径]:/var/lib/postgresql/data # persist postgres data
  networks:
    - database_only
  restart: always
  • 担心磁盘写满,我修改了 pg data 的挂载路径。
  • 密码一定要改,除非你只是在测试。
  1. 修改 ttrss 连接数据库密码,以及访问 ttrss 的 URL:
service.rss:
  image: wangqiru/ttrss:latest
  container_name: ttrss
  ports:
    - 181:80
  environment:
    - SELF_URL_PATH=[ttrss.a.com]
    - DB_PASS=[pg密码] # use the same password defined in `database.postgres`
    - PUID=1000
    - PGID=1000
  volumes:
    - feed-icons:/var/www/feed-icons/
  networks:
    - public_access
    - service_only
    - database_only
  stdin_open: true
  tty: true
  restart: always
  • [ttrss.a.com] 就是填写你访问 ttrss 服务时的子域名。
  • [pg密码] 跟 POSTGRES_PASSWORD 保持一致即可。

配置 nginx:

# conf.d/ttrss.conf
server {
    listen 80;
    server_name ttrss.a.com;  # 绑定子域名

    location / {
        proxy_pass http://127.0.0.1:181;  # 反代到 ttrss 服务上
    }
}

sudo certbot --nginx 给 ttrss.a.com 域名安装 https 证书,步骤跟 rsshub.a.com 一样,不赘述。

就绪之后可以访问 ttrss.a.com 了。初始账户密码:admin/password。登录进去后记得修改密码:右上角点击偏好设置 -> 点击用户 -> 点击 admin -> 新密码

跟着 Awesome TTRSS 文档,优化了一下 nginx 配置。

# conf.d/ttrss.conf
server {
  server_name ttrss.a.com;

  location / {
    proxy_redirect off;  ## +++++ 新增加部分
    proxy_pass http://127.0.0.1:181;

    ## +++++ 新增加部分
    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;
    ## +++++ 新增加部分
  }

  listen 443 ssl; # managed by Certbot
  gzip on;  ## +++++ 新增加部分
  ssl_certificate /etc/letsencrypt/live/ttrss.youguanxinqing.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/ttrss.youguanxinqing.com/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

安装 RSSHub Radar 插件

安装浏览器插件 RSSHub Radar,可以更方便订阅大佬博客的 rss。

配置 rsshub、ttrss 域名:
560x420

例如进入 鸟窝,点击插件就能看到订阅按钮:

回到 ttrss.a.com,应该能看到大佬们的文章了:

感谢



本文由 Guan 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论