目标
本篇文章,我们旨在搭建一个小型的RSS服务,从零开始,构建一个可以供1-10人使用的RSS服务器。
需求
- 一台有Root权限的虚拟服务器
- 一个域名
- 懂得基础的linux命令行操作
- 基础的英文阅读能力
借助的项目
- awesome-ttrss
- rsshub
- nginx
本文以 CentOS_7 做演示
awesome-ttrss based on tiny tiny rss (ttrss),将多需要用到个docker镜像汇集在一个docker-compose里,并且配置好了基本的插件,相对于原版的ttrss来说易于部署
不是所有的网站都支持rss服务,而 rsshub 的目的就是主动抓取信息。 这样我们就可以方便地订阅不支持rss服务的网站啦!
由于需要TLS保障传输安全以及实现反代,我们一Nginx为例,你也可以使用其它web server。
安装所需环境
所需环境列表
- Docker
- Docker Compose
- Nginx
- Snap
- Certbot
我们使用certbot来获取、配置ssl证书。certbot依赖snap进行安装,所以安装了snap。如果你不想安装snap,也可以使用其它客户端,比如ACME。
因为安装步骤非常简单,并且有时候会发生变化,这里只记录粗略的安装步骤,具体安装方法请访问链接标注的官网。
安装Docker
首先我们需要安装docker。详细的安装方法请参阅官方说明。
yum install -y yum-utils
#配置仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#安装docker
yum install docker-ce docker-ce-cli containerd.io
#配置开机自启并启动docker
systemctl enable docker
systemctl start docker
安装Docker Compose
同理,安装docker compose,详细的安装方法请参阅官方说明。
#使用脚本下载。注意版本号,请从官网获取最新版本
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#设置权限
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#检验版本
docker-compose --version
安装Nginx
你可以参考 Nginx Cook book 这本书(从官网免费获取),或者查看官方文档。
vi /etc/yum.repos.d/nginx.repo
#添加/etc/yum.repos.d/nginx.repo,替换OSRELEASE为所需版本,本文为7
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
#安装、设置自启、启动Nginx
yum -y install nginx
systemctl enable nginx
systemctl start nginx
安装Snap
我们使用certbot来获取、配置ssl证书。certbot依赖snap进行安装。你也可以使用其它客户端,如ACME。同理,访问官网获取安装方法。
yum install -y epel-release
yum install -y snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
安装Certbot
Certbot是获取SSL的最简单的方式,几乎是全自动的,关于不同发行版的安装,请访问官网
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
搭建项目
以上,我们完成了所需环境的搭建,现在我们需要登录域名控制台,修改或添加DNS记录,指向你的服务器。
搭建awesome-ttrss
配置环境变量并拉取镜像
#建立文件夹并进入
mkdir ttrss
cd ttrss
#下载.yml文件
wget https://raw.githubusercontent.com/HenryQW/Awesome-TTRSS/master/docker-compose.yml
现在,对yml文件进行小的修改
- 第 7 行和第 23 行,修改 PostgreSQL 数据库的密码为相同值。
- 第 18 行,设置实际使用的url,比如 https://ttrss.vincehut.com/ 结尾要加上 /
更多的环境变量请参考官网。实际使用来说,基本无需修改其它内容。
#启动
docker-compose up -d
配置Nginx文件
在 /etc/nginx/conf.d 目录下新建一个以 .conf 结尾的文件比如 ttrss_vincehut_top.conf 我们用它来定义站点,配置nginx。
这是一个配置示例,相比官网的配置来说,删除了certbot会自动添加的部分。请更改 ttrss.vincehut.top 为你的域名
upstream ttrssdev {
server 127.0.0.1:181;
}
server {
listen 80;
server_name ttrss.vincehut.top;
}
server {
listen 443 ssl;
gzip on;
server_name ttrss.wulaa.top;
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;
}
}
配置SSL
certbot --nginx
有相应的英文提示,我们只需要选择域名,输入邮箱即可。
现在访问我们的域名(相应网址)就可以正常访问你的ttrss啦!
搭建rsshub
拉取镜像
#建立文件夹并进入
cd
mkdir rsshub
cd rsshub
#下载.yml文件
wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml
docker volume create redis-data
如需配置用户认证、黑白名单等,请查看官方的配置文档。
#启动镜像
docker-compose up -d
配置Nginx文件
同理,和之前做过的一样,在 /etc/nginx/conf.d 目录下新建一个以 .conf 结尾的文件比如 rsshub_vincehut_top.conf 我们用它来定义站点,配置nginx。
upstream rsshub {
server 127.0.0.1:1200;
}
server {
listen 80;
server_name rsshub.vincehut.top;
}
server {
listen 443 ssl;
gzip on;
server_name rsshub.vincehut.top;
access_log /var/log/nginx/rsshub_access.log combined;
error_log /var/log/nginx/rsshub_error.log;
location / {
proxy_redirect off;
proxy_pass http://rsshub;
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;
}
}
配置SSL
certbot --nginx
注意选择相应的域名。
The End
以上,ttrss和rsshub就搭建好啦!开始享用吧!你可以在后台设置抓取频率、主题、插件等等。