Selfhosting CommaFeed with Docker

A picture of the author, Jakob Maier
Jakob Maier
Oct 19, 2022

Why go to the trouble?

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.

Download CommaFeed

I will assume that you already have nginx, docker and docker-compose installed. If not, just follow these links, they will teach you.

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.

Containerize all the things!

I run all my webservices in Docker containers for convenience, so I recommend you do this as well:

The Dockerfile:

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" ]

The docker-compose.yml:

version: "3.7"

services:
  commafeed:
    build: .
    restart: always
    ports:
      - "127.0.0.1:8088:8082"
    volumes:
      - /home/commafeed:/home/commafeed

Setting restart: always tells docker to, you guessed it, always restart the service, even if it crashed or after you reboot.

Let's run this thing!

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:

Commafeed

↑ back to top

© 2022 Jakob Maier
edit this page