I have been looking for a free online web service which can aggregate the updates from hundreds of websites I collected in my bookmark. I even built my own bookmark site for easily managing the collections. Click through hundreds of website to see the updates is a really pain to me and since lots of websites are not updating that often, but once they updated , I really want to check out their contents since that is usually interesting to me.
I found RSS aggregator service could help for my this problem. But all of this kind of online service are not free or not free enough for me to get what I need. I decided to look for a self-hosted RSS aggregator solution. That is how I started this post.
Introduction
If you want to check out all other solutions, you can check above sites to get more. For me, I have not check out too much, but following three are most interesting ones I tried a bit:
- Tiny Tiny RSS
- FreshRSS
- miniflux
- Stringer
miniflux
- Github page: https://github.com/miniflux/v2
- Official website: https://miniflux.app
- Documentation site: https://miniflux.app/docs/ (Man page)
- Installation : https://miniflux.app/docs/installation.html
Installation from Docker
Docker Registries:
- Docker Hub Registry:
docker.io/miniflux/miniflux
- GitHub Container Registry:
ghcr.io/miniflux/miniflux
Docker Architectures:
amd64
arm64
arm/v7
arm/v6
1 Log in to Play With Dcker website and create a new instance
URL: https://labs.play-with-docker.com/
2 In the new instance session command line, create a new file: basic.yml
You can find out this basic.yml file and other version’s yml file from this url:
https://github.com/miniflux/v2/tree/master/contrib/docker-compose
- vi basic.yml
3 In this new basic.yml file, paste into follow text:
version: '3.4'
services:
miniflux:
image: miniflux/miniflux:latest
ports:
- "80:8080"
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=test123
db:
image: postgres:15
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
volumes:
miniflux-db:
Notes: For Docker Playground website:
Copy: Ctrl+Insert
Paste: Ctrl+Shift+V
4 start dockers
[node1] (local) [email protected] ~
$ docker-compose -f basic.yml up -d
[+] Running 2/2
⠿ Container postgres Started 2.0s
⠿ Container miniflux Started 3.5s
[node1] (local) [email protected] ~
5 Open Port 80 to visit this website
6 Log in with default credential admin / test123
Installation from Portainer
1 Log into your portainer website
2 Create a new custom template with following texts
You can find out this basic.yml template file and other version's yml file from this url:
https://github.com/miniflux/v2/tree/master/contrib/docker-compose
version: '3.4'
services:
miniflux:
image: ${MINIFLUX_IMAGE:-miniflux/miniflux:latest}
container_name: miniflux
restart: always
ports:
- "8010:8080"
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=test123
- DEBUG=1
# Optional health check:
# healthcheck:
# test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
db:
image: postgres:15
container_name: postgres
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
volumes:
miniflux-db:
Note: you might want to change following two things in the texts:
- Ports: default port is 80, you might already used 80 for something else, I would suggest change it to others, such as , 8010.
- You might also need to change your VPS's firewall port to allow 8010
- Default password for user admin.
2 Deploy Template and check dockers running state
3 Visit your miniflux on port 8010
Integrate with your own domain and enable HTTPS
You can find out this traefik.yml file as template for your reverse proxy configuration to integrate your own domain and enable https to your URL:
https://github.com/miniflux/v2/tree/master/contrib/docker-compose
You might need to change following thre highlighted places in following textbox:
version: '3.4'
services:
traefik:
image: "traefik:v2.3"
container_name: traefik
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
- "--certificatesresolvers.myresolver.acme.email=[email protected]"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
depends_on:
- miniflux
ports:
- "443:443"
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
miniflux:
image: ${MINIFLUX_IMAGE:-miniflux/miniflux:latest}
container_name: miniflux
depends_on:
- db
expose:
- "8080"
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=test123
- BASE_URL=https://rss.51sec.org
labels:
- "traefik.enable=true"
- "traefik.http.routers.miniflux.rule=Host(`rss.51sec.org`)"
- "traefik.http.routers.miniflux.entrypoints=websecure"
- "traefik.http.routers.miniflux.tls.certresolver=myresolver"
db:
image: postgres:15
container_name: postgres
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
volumes:
miniflux-db:
Of course, rss.51sec.org will need to point to your this vps 's public ip address. This can be done by adding a new A record in your DNS administratration center, such as Cloudflare.
Videos
References
Relate blog posts for Docker:
- [5 Minutes Docker Series] Deploy A Free RSS Aggregator Website - miniflux
- [5 Minutes Docker Series] Deploy A Free File List App for Multiple Cloud Storages - Alist
- [5 Mins Docker Series] Minimalist Web Notepad - A Simple Online Notepad
- [5 Mins Docker Series] Koel - An Open Source Personel Music Streaming Software
- Deploy Aria2 Docker To Download Files to Cloud Drives (Google Drive, One Drive etc)
- Using Portainer to Deploy Guacamole As Web Based Remote Access Gateway (Updated)
- Run Pi-hole Docker in Ubuntu for Family Internet Safety and Ads Blocking
- Using Portainer to Deploy OpenWRT Docker
- Install n.eko (A Self Hosted Virtual Browser Docker) in Low Memory VPS (1GB)
- Using Docker+Portainer to Install Open Source Password Manager - BitWarden
- Deploy Docker, Docker-Compose, Portainer and NPM (Nginx Proxy Manager)
- Install NextCloud Docker and Integrate with Nginx and LetsEncrypt SSL Certificate
- Install Docker, Docker-Compose, Portainer & Nginx on CentOS 8 & Ubuntu 20.04
- Portainer Usage Tips and Tricks
- Docker Usage Tips and Tricks
More can be found from this category: https://blog.51sec.org/search/label/Docker or from Sietmap
Related blog posts for free domain, free vps