Miniflux 是一个自建的 RSS 阅读器, RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。
安装配置数据库
miniflux 依赖 PostgreSQL 数据库, 所以需要先安装 PostgreSQL 数据库. 这里使用 helm chart 安装.
添加 helm chart
这里使用的是 bitnami 提供的 PostgreSQL chart.
1 2
   | helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update
   | 
 
安装 PostgreSQL
将 bitnami 里的 PostgreSQL chart 配置文件下载到本地, 修改配置后安装.
1 2
   | helm show values bitnami/postgresql > values.yaml helm install postgresql bitnami/postgresql -f values.yaml
   | 
 
配置数据库
我们需要给 Miniflux 创建一个数据库, 并为这个数据库创建一个用户, 授予这个用户对这个数据库的所有权限.
使用 helm 安装的 PostgresSQL 在执行命令前需要先执行 . /opt/bitnami/scripts/libpostgresql.sh && postgresql_enable_nss_wrapper 命令.
完成的命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | . /opt/bitnami/scripts/libpostgresql.sh && postgresql_enable_nss_wrapper
 
  $ createuser -P miniflux Enter password for new role: ****** Enter it again: ******
 
  $ createdb -O miniflux miniflux
 
  $ psql miniflux -c 'create extension hstore' CREATE EXTENSION
   | 
 
此处可以参考 Miniflux 官方文档.
安装 Miniflux
Miniflux 没有提供 helm chart, 这里使用配置文件安装.
deploy.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
   | apiVersion: apps/v1 kind: Deployment metadata:   name: miniflux   labels:     app: miniflux     version: v1 spec:   replicas: 1   selector:     matchLabels:       app: miniflux   template:     metadata:       labels:         app: miniflux         version: v1     spec:       containers:         - name: miniflux           image: "miniflux/miniflux:2.0.41"           env:             - name: "DATABASE_URL"               value: ""             - name: "RUN_MIGRATIONS"               value: "1"             - name: "TZ"               value: "Asia/Shanghai"           ports:             - name: http               containerPort: 8080               protocol: TCP       nodeSelector:         network: proxy                 terminationGracePeriodSeconds: 60 
   | 
 
service.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | apiVersion: v1 kind: Service metadata:   name: miniflux   labels:     app: miniflux spec:   type: ClusterIP   ports:   - port: 8080     targetPort: http     protocol: TCP     name: http-miniflux   selector:     app: miniflux
   | 
 
ingress.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | apiVersion: networking.k8s.io/v1 kind: Ingress metadata:   name: miniflux spec:   rules:   - host: MINIFLUX_HOST     http:       paths:       - path: /         pathType: Prefix         backend:           service:             name: miniflux             port:               number: 8080   tls:   - hosts:     - MINIFLUX_HOST     secretName: MINIFLUX_HOST_SECRET
   | 
 
RSSHub 同样没有提供 helm chart 但是提供了 docker 镜像, 这里使用配置文件安装.
deploy.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
   | apiVersion: apps/v1 kind: Deployment metadata:   labels:     app: rsshub     version: v1   name: rsshub spec:   replicas: 1   selector:     matchLabels:       app: rsshub   template:     metadata:       labels:         app: rsshub         version: v1     spec:       containers:       - name: rsshub         image: diygod/rsshub:chromium-bundled-2022-10-31         ports:         - containerPort: 1200         envFrom:         - configMapRef:             name: rsshub-config       nodeSelector:         network: proxy                 terminationGracePeriodSeconds: 60 
   | 
 
service.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | apiVersion: v1 kind: Service metadata:   labels:     app: rsshub   name: rsshub spec:   ports:   - name: http-rsshub     port: 1200     protocol: TCP     targetPort: 1200   selector:     app: rsshub
   | 
 
ingress.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | apiVersion: networking.k8s.io/v1 kind: Ingress metadata:   name: rsshub spec:   rules:   - host: RSSHUB_HOST     http:       paths:       - path: /         pathType: Prefix         backend:           service:             name: rsshub             port:               number: 1200   tls:   - hosts:     - RSSHUB_HOST     secretName: RSSHUB_HOST_SECRET
   | 
 
RSSHub 需要在抓取某些网站时需要配置一些环境变量, 这里使用 configmap 来配置.
configmap.yaml
1 2 3 4 5 6 7
   | apiVersion: v1 kind: ConfigMap metadata:   name: rsshub-config   namespace: default data:   XXX: XXXX
   | 
 
至此, RSSHub 和 Miniflux 都已经安装完成, 可以配置订阅源开始阅读了.