通过Docker安装Tiny RSS,mercury全文插件及mercury-parser-api;申请泛域名证书,安装nginx并配置ssl

最后更新:2021-04-26

我的VPS 为Ubuntu 2020 X64

一、SSH 到你的主机,安装 Docker 环境:
curl https://get.docker.com/ | sh
运行docker
systemctl start docker
安装 docker-compose命令

最新版本际安装方法在此
curl -L https://github.com/docker/compose/releases/download/1.27.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker容器日志文件很大,很容易导致主机磁盘空间满了。可以设置容器日志文件的大小。

新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:
{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}
max-size=500m,意味着一个容器日志大小上限是500M,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。
重启docker守护进程
systemctl daemon-reload
systemctl restart docker

二、安装Tiny Tiny RSS 容器镜像

     推荐安装此镜像: https://github.com/HenryQW/docker-ttrss-plugins
     集成了以下插件:
  1. Mercury: 全文内容提取插件, 需要配合自建 Mercury Parser API, 参见HenryQW/mercury-parser-api.
  2. Fever: Fever API 模拟插件.
  3. ttrss_opencc: 使用 OpenCC 为 ttrss 提供中文繁转简的插件. 插件设置中填写 OpenCC API 服务器地址. 

通过 docker-compose 部署

编辑配置文件vi docker-compose.yml,参考此处。下面是我的。
version: "3"
services:
  database.postgres:
    image: postgres:alpine
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=ttrss # please change the password
    volumes:
      - ~/postgres/data/:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
    restart: always

  service.rss:
    image: wangqiru/ttrss:latest
    container_name: ttrss
    ports:
      - 181:80
    environment:
      - SELF_URL_PATH=http://127.0.0.1:181/ # please change to your own domain
      - DB_HOST=database.postgres
      - DB_PORT=5432
      - DB_NAME=ttrss
      - DB_USER=postgres
      - DB_PASS=ttrss # please change the password
      - ENABLE_PLUGINS=auth_internal,fever # auth_internal is required. Plugins enabled here will be enabled for all users as system plugins
      - FEED_LOG_QUIET=true
    stdin_open: true
    tty: true
    restart: always
    command: sh -c 'sh /wait-for.sh $$DB_HOST:$$DB_PORT -- php /configure-db.php && exec s6-svscan /etc/s6/'
说明:docker-compose.yml 包含了 ttrss 与 postgres 镜像 1、运行以下命令后等待部署完成。
docker-compose up -d
2、默认通过 181 端口访问 ttrss,默认账户: admin 密码: password,请第一时间更改。
3、当使用域名加密访问时,docker-compose.yml文件里的SELF_URL_PATH为 http://127.0.0.1:181/, 但套了CloudfFlare CDN时需设为 https://127.0.0.1:181/,不知什么原因,多次尝试后知道的。
三、安装Mercury Parser API
docker run -p 3000:3000 -d --restart=always  wangqiru/mercury-parser-api
访问  http://你的的VPS的IP:3000。出现如下结果就安装OK.



至此tiny rss安装完成,登录ttrss进行设置,最主要的是以下几项。

(1)设置里启用API


(2)插件里启用 fever 及mercury_fulltext 插件



(3)feeds里设置前述3安装的Mercury Parser API网址


其他的可以根据自己情况设置。
完成上述准备工作后,就可以针对特定的订阅源启用全文输出了。方法是:在订阅源管理中,点击需要获取全文的订阅源,在弹出的 Edit Feed 对话框中,勾选 Plugins 选项卡中的 Get fulltext via Mercury Parser。

四、重度RSS用户,RSSHub不可不用: https://github.com/DIYgod/RSSHub
   RSSHub 是一个轻量、易于扩展的 RSS 生成器, 可以给任何奇奇怪怪的内容生成 RSS 订阅源 ,输入以下命令部署:
docker run -d --restart=always  --name rsshub -p 1200:1200 diygod/rsshub
访问  http://你的的VPS的IP:1200。出现如下结果就安装OK
使用时只需将公共路由列表中的API换成上面的IP或你的域名,如将https://rsshub.app/api/routes/bilibili 换成https://你的IP/api/routes/bilibili 即可使用。公共的也可用,但人太多了,效果不能保证。

说明:记得在防火墙将相关端口全部放行,如:
sudo ufw enable 
sudo ufw allow 22
检查防火墙状态
sudo ufw status
    至此tiny rss已经安装完成,完全可以满足日常使用了。但还有两点不足,一是访问的时候要加上端口,二是网站没有加密,你看的什么内容,老大哥都知道。所以接下来,通过安装nginx,配置反向代理;申请Let's Encrypt证书,在nginx里配置SSL,实现网站全部加密访问。

五、通过安装acme.ch从 let's encrypt 生成免费证书(推荐)
  
  首先安装acme.ch。参考此处
  通过acme.ch方式申请证书。首先安装acme.ch( 安装目录:~/.acme.sh/)
curl  https://get.acme.sh | sh
创建 一个 bash 的 alias, 方便使用:
alias acme.sh=~/.acme.sh/acme.sh
以下使用DNS API方式申请泛域名证书(这种方式的好处是, 不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证,并可自动更新证书)。现在主流的域名提供商都支持DNS API,如cloudflare等。若自己的域名提供商不支持的话,也可以将自己域名提供商的DNS修改为cloudflare提供的免费DNS,就可以使用clouddflare提供的API了

获取Cloudflare API 令牌,在cloudflare域名管理首页(右下角)获取 API 密钥-"Get your API token"-"API Tokens"-"API Keys"-"Global API Key"-"view"

设置 Cloudflare API 令牌,将下面的key换成你的,email换成cloudflare的登录email
export CF_Key="xyffe1f9edb9d7e41cc8b336a8373e25a810z"
export CF_Email="xyz@gmail.com"
验证 DNS 并申请证书
acme.sh --issue --dns dns_cf -d mydomain.com -d *.mydomain.com -k ec-256
证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方
mkdir -p /root/cert
acme.sh --installcert -d mydomain.com --key-file /root/cert/private.key --fullchain-file /root/cert/cert.crt --ecc
自动更新acme
acme.sh --upgrade --auto-upgrade
设置权限
chmod -R 755 /root/cert
六、安装并配置nginx
 
    1、安装nginx并加入开机启动:
apt install nginx -y
systemctl  start  nginx 
systemctl enable nginx
    2、配置nginx

       编辑配置文件vi /etc/nginx/nginx.conf

       为确保二级子域名可用,首先在域名提供商或cloudflare网站添加A记录
user www-data;

worker_processes 1;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {
 
    worker_connections  2048;
}
http {
 
    server_tokens off;
    include       mime.types;
    default_type  application/octet-stream;
    access_log off;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;
    keepalive_timeout  65;
    gzip  on;
    client_max_body_size 10m;
    client_body_buffer_size 128k;

 server {
        listen       80 default_server;
        server_name  mydomain.com;
        root         /usr/share/nginx/html;

        location / {
                   return 301 https://$server_name$request_uri;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}
server
 {
        listen   443 ssl;
        server_name  mydomain.com;
     
        ssl_certificate      /root/cert/cert.crt;
        ssl_certificate_key  /root/cert/private.key;
     
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers on;
        location / {   
     
          proxy_pass http://127.0.0.1:181;
           }
 }
 
 server
 {
        listen   443 ssl;
        server_name  www.mydomain.com;
     
        ssl_certificate      /root/cert/cert.crt;
        ssl_certificate_key  /root/cert/private.key;
     
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers on;
        location / {   
     
          proxy_pass http://127.0.0.1:3000;
           }
 }
server
 {
        listen   443 ssl;
        server_name  bbs.mydomain.com;
     
        ssl_certificate      /root/cert/cert.crt;
        ssl_certificate_key  /root/cert/private.key;
     
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers on;
        location / {   
     
          proxy_pass http://127.0.0.1:1200;
           }
 }
 
}
运行以下命令测试配置文件是否正确:
/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
重启nginx加载新的配置文件:
/usr/sbin/nginx -s reload
浏览器输入https://mydomain.com应该可以正常访问了

评论

Popular Posts

在VPS上轻松搭建L2TP/IPSec图文教程(通吃各种架构的VPS,包括KVM,OpenVZ等)

群晖NAS安装配置openwrt软路由

在VPS上安装V2Ray并配置成TLS翻墙(VMESS+TLS或VMESS+TLS+WS)