The first question you might have is why self-host a RSS reader when there are free options like Feedly around. Well, I must say I found Feedly to be a terrible user experience. I really disliked Feedly only allowing me to scroll for a little bit until it reports no new Articles.
The second thing is Feedly only allows users on it's free plan to create three categories, which is quite limitting. So my choice fell on CommaFeed, a open source RSS reader that can be self-hosted. Since I already have a server, this was a very appealing option for me.
Setting up CommaFeed is extremely simple, you simply download the precompiled java app.
mkdir commafeed && cd commafeed # download the compiled application wget https://github.com/Athou/commafeed/releases/download/2.6.0/commafeed.jar wget https://raw.githubusercontent.com/Athou/commafeed/2.6.0/config.yml.example -O config.yml # edit config to allow signups vi config.yml
Do not forget to edit the
config.yml to allow users to sign up, it is disabled by default.
I run all my webservices in Docker containers for convenience, so I recommend you do this as well:
FROM openjdk:8 WORKDIR /srv/app COPY config.yml commafeed.jar ./ EXPOSE 8082 CMD [ "java", "-Djava.net.preferIPv4Stack=true", "-jar", "commafeed.jar", "server", "config.yml" ]
version: "3.7" services: commafeed: build: . restart: always ports: - "127.0.0.1:8088:8082" volumes: - /home/commafeed:/home/commafeed
restart: always tells docker to, you guessed it, always restart the service, even if it crashed or after you reboot.
Great, now let's build and run the service:
docker-compose build && docker-compose up -d
If you now run
docker ps -a you will see that the container is running. For me this looks like this:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a69399904ad8 commafeed_commafeed "java -Djava.net.pre…" 3 minutes ago Up 3 minutes 127.0.0.1:8088->8088/tcp commafeed_commafeed_1
You can now enjoy your self-hosted RSS reader: