起步
我上个月搭建了自己的 rss 服务,昨天不能正常登录。再细查,ip 不通了。也确认了不是 ip 被封,猜测最大可能是磁盘写满。在页面上 rebuild 机器,重新搭建一次。
这次把过程记录下来,要是一个月后又崩了,我也能快速地“大不了从头再来”。
准备
- 一台 2G RAM 的服务器,预装 centos 系统,磁盘 80G
两个子域名,以下假设为:
- rsshub.a.com: rsshub 服务
- ttrss.a.com: tiny tiny rss 服务
- 提前安装 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
跟着提示走就好,安装成功后访问子域名 rsshub.a.com,看到如下界面就算成功。
(要是没生效 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 文件按需修改:
修改 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 的挂载路径。
- 密码一定要改,除非你只是在测试。
修改 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 域名:
例如进入 鸟窝,点击插件就能看到订阅按钮:
回到 ttrss.a.com,应该能看到大佬们的文章了:
感谢
- CentOS 7 下 安装 Let's Encrypt 的通配符证书
- docker-compose安装与卸载
- RSS服务ttrss搭建-ttrss%E6%90%AD%E5%BB%BA/)
- Awesome TTRSS
- 两种方法迁移 Docker 的默认安装(存储)目录
还不快抢沙发