Miniflux-轻量级RSS阅读器
2019年01月20日

概述

Miniflux使用Go语言编写,支持mysql/postgres数据库,多国语言的极简主义的web RSS阅读器.
特征:

  • 自托管
  • 可读性(针对可读性,灵敏度设计,兼容移动设备和平板电脑设备而进行了优化的CSS)
  • 轻便安装(一行docker命令,直接运行)
  • 删除Feedburner广告和分析跟踪器(1x1像素)
  • 在具有rel="noreferrer"属性的新选项卡中打开外部链接
  • 使用安全的HTTP标头(只允许外部图像和Youtube / Vimeo / Dailymotion视频)
  • 文章内容在显示之前被过滤
  • 多语言支持,包括简体中文
  • 支持RTL语言
  • 键盘快捷键
  • 仅显示摘要的Feed,可以下载完整文章
  • 书签
  • Feed的分类组(如文件夹或标签)
  • 将您最喜爱的文章发送到Pinboard,Instapaper,Shaarli或Wallabag
  • 机箱支持(视频和播客)
  • 通过REST API,可以定制化阅读器操作
  • 保留阅读项目的历史记录
  • 导入/导出OPML Feed
  • 主题样式
  • 多用户
  • 图像代理,以避免使用HTTPS混合内容警告

部署流程

  1. 安装docker-compose
apt install docker-compose
  1. 根据配置文件docker-compose.yaml创建容器,内容如下:
version: '2'

services:
  miniflux:
    image: miniflux/miniflux:latest
    restart: always
    container_name: miniflux_web
    depends_on:
      - db
    ports:
      - 5000:8080
    environment:
      - BASE_URL=https://rss.example.com
      - ARCHIVE_READ_DAYS=90
      - CLEANUP_FREQUENCY=24
      - RUN_MIGRATIONS=1
      - CREATE_ADMIN=1
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=password
      - PROXY_IMAGES=all
      - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
      - POLLING_FREQUENCY=15
  db:
    image: postgres:latest
    restart: always
    container_name: miniflux_db
    expose:
      - 5432
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=miniflux
      - POSTGRES_PASSWORD=secret
    user: 1000:1000

不要修改数据库密码
BASE_URL注意需要加上前缀,根据自己的网站配置,选择http或者https
user 变量规定以什么用户:用户组来启动容器,postgresql的存储文件也会是这个用户的权限.
相关的环境变量可以参考下方wiki里的介绍

  1. 初始化Miniflux,创建容器:
docker-compose up -d
  1. 打开浏览器测试
google-chrome http://192.168.1.2:5000

后续如果宿主系统重新启动,可以通过以下命令进行操作:

# 停止并删除容器(慎用)
docker-compose down

# 启动/重启动容易
docker-compose start/restart

# 停止容器
docker-compose stop

更新版本

  1. 下载新版本docker容器
docker pull miniflux/miniflux:latest
  1. 重新打开miniflux
cd /path/of/docker-compose.yml/
docker-compose down
docker-compose up -d
  1. 清理旧版本miniflux容器
# 容器版本根据实际情况确定
docker rmi miniflux/miniflux:2.0.14

迁移完如果存在问题,可以选择docker-compose up,不使用-d参数,查看log输出

其他

此前在知乎上见到一个miniflux的docker-compose部署文件,上面的yml文件完全借鉴于此,原yml文件如下:

version: '3'

services:

  miniflux:
    image: miniflux/miniflux:2.0.14
    restart: always
    depends_on:
      - db
    expose:
      - 8080
    networks:
      - traefik
    environment:
      - BASE_URL=rss.orange.lab.com
      - ARCHIVE_READ_DAYS=36500
      - CLEANUP_FREQUENCY=36500
      - RUN_MIGRATIONS=1
      - CREATE_ADMIN=1
      - ADMIN_USERNAME=soulteary
      - ADMIN_PASSWORD=soulteary
      - PROXY_IMAGES=all
      - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
    labels:
      - "traefik.enable=true"
      - "traefik.port=8080"
      - "traefik.frontend.rule=Host:rss.lab.com"
      - "traefik.frontend.entryPoints=http,https"

  db:
    image: postgres:10.1-alpine
    restart: always
    expose:
      - 5432
    networks:
      - traefik
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=miniflux
      - POSTGRES_PASSWORD=secret

networks:
  traefik:
    external: true

其中使用expose在容器间暴露端口,不影响宿主端口占用,后边单独使用traefik网络,猜测最后阅读器会通过traefik的反向代理得以访问.

常用链接

配置教程

docker容器

官方文档

官方文档docker

更新相关

配置变量