最新版ttrss屏蔽了非40/443端口的feed,需要在environment:中增加一项

- ALLOW_PORTS=rsshub的端口号

前言

最近老是感觉刷社交媒体或者新闻的时候被大数据牵着鼻子走,不知不觉进入了互联网的信息茧房。所以打算利用手头一台NAS自建一个RSS阅读器。

NAS需要安装docker,安装好docker后自带docker-compose

前置步骤

  1. 启动群晖NAS的SSH,设置好端口号。
  2. 使用远端工具MobaXterm(或者其他同类型软件)连接NAS
  3. root账户

    • 先输入账号密码进入系统

      sudo -i
  4. 在docker文件夹下新建两个文件夹

    • /docker/ttrss/feed-icons 放feed icons的地方
    • /docker/postgres/data 数据库,放我们数据的地方
    mkdir /docker/ttrss/feed-icons/
    mkdir /docker/postgres/data/

编辑compose文件

本文适用docker-compose来安装ttrss,好处就是可以一次性同时部署好几个服务,便于维护

下载docker-compose.yml。或者直接复制我设置好的docker-compose文件。

  • SELF_URL_PATH,改成你自己的域名,内外网都可以
  • 几处volumes,改成你自己的本地地址

我在最后执行的时候发现postgres一直无限重启,查阅日志显示initdb: error: directory "/var/lib/postgresql/data" exists but is not empty。
查阅资料后也没搞懂原理,但是查到一个方法是,将/volume1/docker/postgres/data/不要挂载到/var/lib/postgresql/data/,而是在这个位置下再新建一个任意名字的文件夹。并在元素里增加PGDATA='/var/lib/postgresql/data/pgdata'。这样就把默认位置改变,postgres也可以启动了。

version: "3"
services:
  service.rss:
    image: wangqiru/ttrss:latest
    container_name: ttrss
    ports:
      - 181:80
    environment:
      - SELF_URL_PATH=http://192.168.50.12:181/ # please change to your own domain
      - DB_PASS=ttrss # use the same password defined in `database.postgres`
      - DB_HOST=database.postgres
      - DB_PORT=5432
      - DB_NAME=ttrss
      - DB_USER=postgres
      - ENABLE_PLUGINS=auth_internal,fever
      - PUID=1000
      - PGID=1000
    volumes:
      - /volume1/docker/ttrss/feed-icons:/var/www/feed-icons/
    networks:
      - public_access
      - service_only
      - database_only
    stdin_open: true
    tty: true
    restart: always

  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
    networks:
      - public_access
      - service_only
    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
    networks:
      - service_only
    restart: always

  database.postgres:
    image: postgres:13-alpine
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=ttrss # feel free to change the password
      - PGDATA='/var/lib/postgresql/data/pgdata'
    volumes:
      - /volume1/docker/postgres/data/:/var/lib/postgresql/data/pgdata/ # persist postgres data to ~/postgres/data/ on the host
    networks:
      - database_only
    restart: always

 volumes:
  feed-icons:
 networks:
  public_access: # Provide the access for ttrss UI
  service_only: # Provide the communication network between services only
    internal: true
  database_only: # Provide the communication between ttrss and database only
    internal: true

执行命令

docker-compose up -d    // docker就会将各个容器下载安装,等文件全部执行完成后,可以去docker查看容器是否运行。

结语

至此 ttrss 就算部署完毕了,至于 ttrss 怎么设置和使用可以参考 Awesome TTRSS 官网

碰到的主要问题就是 postgres 容器文件夹挂载。如果在部署中有其他问题也可以参考上面的官网或者查看日志搜索相关问题。

感谢

https://zhuanlan.zhihu.com/p/394729474
https://ttrss.henry.wang/zh/