运维 | 降级TTRSS和数据库版本
缘由
我的 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选择- http,- URL选择- 127.0.0.1:8088
 
 
- 网站本地端口为 
- 访问 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参考教程
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。