A Rabbit Hole
My homelab started as a way for me have a place to store media for my friends and family. A simple Plex server. Hosting it was quite simple, as Plex essentially handles all of it for you. The only difficult part of the process is port-forwarding so that your Plex Server is exposed to the outside internet (which I don’t recommend by the way!).
That is how I got started with my homelab, with a Plex instance running. From there, things started to ramp up quite rapidly. My cousins were feeling nostalgic so I spun up a Minecraft server as well. By this time I realized how dangerous it was to expose your home network to the world so I setup a simple VPN with a nginx reverse proxy for my hosted apps.
I then discovered r/selfhosted and things sort of went off the rails. I was looking to host my own version of essentially every service that I used on a daily basis. I ran a PiHole instance, an RSS Reader, Music Library, and also ran about 6-7 other services to make the retrieval/management of media painless. Here’s how I went about hosting my personal favorite RSS reader, FreshRSS.
Your Own RSS Feed
There are many options when it comes to choosing a self-hosted feed reader. Some that I found were TTRSS (Tiny Tiny RSS), Miniflux, and FreshRSS. I personally like using FreshRSS but I’ve heard great things about Miniflux and if you want to go the minimal route that’s what I’d go with.
The people over at linuxserver.io maintain many Docker images for a lot of applications and I use their Sonarr and Radarr images as well. You can find the image for FreshRSS on their docker hub and follow the instructions as they are quite self explanatory. Just in case you are too lazy here is what you need to paste in your terminal (make sure you have the Docker daemon running!)
docker create \ --name=freshrss \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 80:80 \ -v /path/to/data:/config \ --restart unless-stopped \ linuxserver/freshrss
The PUID and PGID are the UserID and GroupID of the user who is running the application. For most people you can just leave it at the defaults. This is usually for permissions when it comes to mounting volumes on the host.
The only thing you need to change is a /path/to/data:/config to a directory where FreshRSS will store it’s data. For example, I have create an apps folder in my user directory and I’ll create a freshrss directory. So that line for me would look something like this.
-v /home/sam/apps/freshrss:/config \
You can also set the port to be whatever you’d like. Just in case you have other services running you can change it to say something like port 3000.
-p 3000:80 \
After you’ve filled in those variables you can start the container and voila!
Creating a systemd service
In case you want to able to control your FreshRSS instance with systemd you can copy the config below to /etc/systemd/system.
[Unit] Description=FreshRSS Docker container Requires=docker.service After=docker.service [Service] Restart=always RestartSec=30 ExecStart=/usr/bin/docker run --rm \ --name=freshrss \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -p 3000:80 \ -v /path/to/data:/config \ linuxserver/freshrss ExecStop=/usr/bin/docker stop freshrss [Install] WantedBy=multi-user.target
Then you can run the following command to enable the service.
systemctl enable docker-freshrss.service --now
And there you have it! Now you have self hosted your very own RSS feed reader. There are endless possibilities from here. You can host your own wiki, your own S3 compatible object storage, cloud drive and so much more.
Having the ability to host your own instance of many of the popular services you own is a great experience and gives you a feeling of freedom from being bound down by all these SaaS providers. Plus, most of the software is open source so you can tinker around and change it if you feel like it. Although I must warn you that this IS a rabbit hole and you may end up turning this hobby to a a lifestyle and becoming a homelabber yourself. Your wallet will not thank you.