3

docker compose 部署配置 Awesome TTRSS 教程

 2 years ago
source link: https://www.ioiox.com/archives/81.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

docker compose 部署配置 Awesome TTRSS 教程

博主是一个 RSS 重度使用者,早已不记得是何时开始,也许大概是 Google Reader 那个时代,至今已经十几年,保持着每天睡前阅读的习惯.自 Google Reader 关闭服务后,又转移至Feedly,使用了几年觉得功能和网络都体验不佳.于是最终选择了自建RSS服务.

现如今是一个互联网信息爆炸的时代,网络上的各类信息,文章,资源,媒体其真实度,质量参差不齐.知识获取渠道充斥着各种软文,广告,鸡汤等无用的垃圾信息.使用RSS来管理和订阅适合自己的内容,并利用碎片时间来学习储备知识.依旧是目前最高效的解决方案.

Tiny Tiny RSS 是一款基于 PHP 的免费开源 RSS 聚合阅读器。 Awesome TTRSS 旨在提供一个 「一站式容器化」 的 Tiny Tiny RSS 解决方案,通过提供简易的部署方式以及一些额外插件,以提升用户体验。

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

使用docker compose部署,其中包含 4 个镜像:

docker-compose 安装教程可参考: CentOS 7 安装 docker compose 教程

配置 docker-compose.yml

  • 建议在root目录下创建ttrss文件夹,以存放docker-compsoe.yml配置文件和postgres数据库目录.
  • 下载 docker-compose.ymlttrss目录
  • 更改 docker-compose.yml 中第7和23行两处的数据库密码
  • 更改 docker-compose.yml 中第18行最终访问地址
  • 修改 docker-compose.yml 中第9行的挂载目录,由~/postgres改为./postgres,以挂载至ttrss目录下.
注意第18行此处的地址一定必须为最终你希望使用的协议,域名及端口.例如设置为 https://rss.ioiox.com 那么使用 http 协议是无法访问的,必须配置 Nginx 反向代理强制使用 https 协议.反之如果设置为 http://rss.ioiox.com 即使配置过 Nginx 反向代理也无法使用 https 访问.

docker-compose.yml 参考示例:

version: "3"
services:
  database.postgres:
    image: sameersbn/postgresql:latest
#    container_name: postgres
    environment:
      - PG_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://localhost: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
    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/'

  service.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting page
    image: wangqiru/mercury-parser-api:latest
#    container_name: mercury
    expose:
      - 3000
    restart: always

  service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
    image: wangqiru/opencc-api-server:latest
#    container_name: opencc
    environment:
      - NODE_ENV=production
    expose:
      - 3000
    restart: always

  # utility.watchtower:
  ##   container_name: watchtower
  #   image: containrrr/watchtower:latest
  #   volumes:
  #     - /var/run/docker.sock:/var/run/docker.sock
  #   environment:
  #     - WATCHTOWER_CLEANUP=true
  #     - WATCHTOWER_POLL_INTERVAL=86400
  #   restart: always

配置 HTTPS 协议

TTRSS 容器自身不负责使用 HTTPS 加密通信,我们需要使用 Nginx 来反向代理.

参照以下 Nginx 样本配置,并修改所有 rss.ioiox.com 为你的域名,以及证书路径.
upstream ttrssdev {
    server 127.0.0.1:181;
}

server {
    listen 80;
    server_name  rss.ioiox.com;
    return 301 https://rss.ioiox.com$request_uri;
}

server {
    listen 443 ssl;
    gzip on;
    server_name  rss.ioiox.com;

    ssl_certificate /usr/local/nginx/conf/ssl/ioiox.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/ioiox.com.key;

    # 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;
    }
}

启动 docker compose

执行以下命令启动 docker compose

docker-compose up -d
默认管理员账户和密码为 admin password 请尽快修改.

如果docker-compose.yml配置错误,按照以下步骤修改配置再次启动.

docker-compose down
# 关闭 Docker 容器
# 修改 docker-compose.yml 配置文件
docker-compose up -d
# 再次启动 docker compose

通过以下命令进行手动更新:

docker-compose down
# 关闭 Docker 容器
docker pull wangqiru/ttrss:latest
docker pull wangqiru/mercury-parser-api:latest
docker pull wangqiru/opencc-api-server:latest
docker pull sameersbn/postgresql:latest
# 更新镜像
docker-compose up -d
# 重新启动 Docker 容器

上文docker-compose.yml中包含了Watchtower,它会自动拉取并更新您所有的服务容器 (包括当前系统上运行的非 Awesome-TTRSS 服务的容器).该服务默认关闭,启用前请确认它将不会影响您其他的服务容器.

也可以设置 watchtower 忽略您的其他容器:
service.mercury:
  image: wangqiru/mercury-parser-api:latest
#  container_name: mercury
  expose:
    - 3000
  restart: always
    # ⬇️ 这将使 Watchtower 跳过对 mercury-parser-api 的更新检测
  labels:
      - com.centurylinklabs.watchtower.enable=false

早前曾按照常规的的迁移方法备份docker-compose.ymlpostgres数据库目录至新服务器,域名及反向代理也配置相同,最终报数据库错误,没有成功.所以还是推荐使用备份还原数据库的方式来进行迁移最为妥当.为避免意外导致docker无法启动,还推荐使用crontab定时导出数据库进行备份.

备份数据库

在原环境 docker 运行时,执行以下命令导出数据库到当前目录,拷贝导出的expoet.sql到新服务器.

docker exec postgres pg_dumpall -c -U postgres > export.sql

恢复数据库

按照上文全新部署并启动 docker 后,执行以下命令导入数据库.

cat export.sql | docker exec -i postgres psql -U postgres

推荐使用crontab来配置定时备份任务.

crontab -e
# 添加以下任务,每天凌晨1点备份数据库到 ttrss 目录.
0 1 * * * cd /root/ttrss && docker exec postgres pg_dumpall -c -U postgres > export.sql

Mercury 全文获取

Mercury 全文内容提取插件,需要搭配Mercury Parser API服务器使用,上文docker-compose.yml中已经包含了HenryQW/mercury-parser-api服务器.我们仅需开启插件,并填写 API 地址即可使用.

偏好设置 - 插件 - 在用户插件区域找到mercury_fulltext勾选并启用.

填写 API 地址

信息源 - Mercury Fulltext settings - 如图填写保存即可

service.mercury:3000

设置信息源全文获取

编辑需要全文获取的信息源,插件中勾选Get fulltext via Mercury Parser保存即可.

设置完成后,当前已获取的RSS订阅无论已读还是未读均无法获取全文,当服务器下次获取新的订阅时才会获取全文.

Fever API

提供 Fever API 支持, iOS 及 macOS 用户推荐使用优秀的 RSS 客户端 Reeder 4 来阅读订阅.

偏好设置
勾选启用API - 保存设置

偏好设置 - Fever Emulation
自行创建客户端登陆的专用密码

使用 Reeder 4 登陆

  • 添加账号类型为Fever
  • 地址为 https://你的rss域名.com/plugins/fever
  • 用户名为你的登陆ID
  • 密码为Fever Emulation中创建的专用密码

常规安装,配置,备份,迁移及常用插件已经部署完毕.其他更多插件,主题,技术与帮助请参考官方文档或至 Github 提交 issues.


本站提供免费和付费的技术支持.你可以通过留言,邮件,TG群的方式来技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK