缘由

我的 RSS 阅读器使用的是 Awesome TTRSS,订阅数量为 2686,VPS 使用的是 甲骨文免费版。最初部署的时候已经是 2 年多前了,最近一直出现打开不了的情况,查看了数据库的日志,里面经常会出现占用过高被杀死进程的提示(Docker 里面限制了 PostgreSQL 最高占用为 90%,超过这个占用会被关闭)。

由于启用了 watchtower 功能,会自动把镜像升级为最新版本,VPS 已经不堪重负了,只能先降级试试了。

本来想直接 dd 新系统的,但是由于甲骨文迷一样的回收政策,没敢这么做。数据库版本也要从 13 降回去,为了不出问题,就只备份 opml 文件,不备份数据库数据了。

降级

  • 关闭相应的 docker 服务:docker-compose down

    • docker-compose down 会删除容器,网络,卷,镜像等资源
    • docker-compose stop 只会停止容器,这些资源仍然存在
  • 修改 docker-compose.yml 配置,将TTRSS和数据库版本固定为旧版本

    • wangqiru/ttrss:latest-2021-01-01
    • postgres:9.3-alpine
  • 删除旧版数据库文件

    • 我的位置是 /root/postgres/data
  • 重新运行:docker-compose up -d

Cloudflare Argo Tunnel(cloudflared) 来加速网站

  • 参考文章末尾的教程来部署

    • 按照 docker-compose 的功能来部署,失败了
  • 重新使用官方 deb 安装为服务来使用

    curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && 
    
    sudo dpkg -i cloudflared.deb && 
    
    sudo cloudflared service install eyJhIjoiYTA0NjJlZGMyY2QyMjhjNDM3OWQxY2YzOTE5MWMwMDIiLCJ0IjoiZTc1
  • cloudflared 配置

    • 网站本地端口为 8088
    • Public hostnames 中: Type 选择 httpURL 选择 127.0.0.1:8088
    • cloudflared配置
  • 访问 docker-compose 中配置的 SELF_URL_PATH 网址即可访问

资源占用对比

在 26 日重新部署低版本的程序后,占用显著降低。

资源占用对比


其他

docker-compose 配置

version: "3.7"
services:
  service.rss:
    image: wangqiru/ttrss:latest-2021-01-01
    container_name: ttrss
    ports:
      - 8088:80
    environment:
      - SELF_URL_PATH=https://xxxx.seekdoor.me # please change to your own domain
      - DB_PASS=ttrss # use the same password defined in `database.postgres`
      - PUID=1000
      - PGID=1000
#    deploy:
#      resources:
#        limits:
#          cpus: '0.80'
    volumes:
      - 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:9.3-alpine
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=ttrss # feel free to change the password
    volumes:
      - ~/postgres/data/:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
    networks:
      - database_only
    restart: always
    deploy:
      resources:
        limits:
          cpus: '0.90'

  # 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

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

参考教程

文章目录