Freshrss (Manual)
Originally Posted 4/27/24
Intro
I originally made a Freshrss post here, but since then I've had to reinstall Freshrss manually. I decided to do this as I kept having a weird issue with docker where Freshrss would just stop running? I'm not exactly sure why it started acting this way, but I figured it was time to move away from docker. I wanted to leave the original post up though, as I feel like it has a lot of good info that you might also need here (Like giving your computer a static IP address), as well as in case anyone else did want to try it with docker on their end.
Now, I will say, I don't think manually installing Freshrss is something I'd recommend the average person does. I already felt like setting it up via docker was a bit of a hassle for the general user, but this way takes it up a notch. The biggest hurdle in my eyes is setting up a reverse proxy like Nginx. You can read about my struggles with a reverse proxy here. In particular setting up https can be a real hassle.
Installation
Freshrss does offer installation instructions that seem pretty in depth to me. The issue though is it wants to use Apache, and I already use Nginx on my computer. I googled to see if anyone else had instructions on this, and came across this! That step by step guide worked for me and I had it working in pretty much no time.
Some things I do want to point out with the above installation instructions:
For one this is all for Ubuntu/ Linux because that's what my server computer is running. I'm not sure how these steps change if you were trying to do this on Windows for example.
Secondly, I do want to say I think the Nginx setup described in that second link seems simple and would avoid a lot of the headaches I ran into originally. I did not follow those steps though, as I already had Nginx installed, so I can't say for certainty it'd be easier. For me, I started with the "Install php and other dependencies" step.
Lastly, for the average person I think they could stop once they reach the "Pointing sub-domain/domain to droplet address" section. That point on is if you're trying to access Freshrss externally, and if you're interested in that then by all means follow the guide there. I did not do those steps because I already had that setup from other projects I had done. So again, I can't say for sure how good that part of the guide is.
Problems
There were a few issues I ran into during installation that I want to mention here in case they help anyone else.
First up: If you're going to follow the Nginx Freshrss install instructions I linked to, only follow what's on that page. That may seem obvious, but originally I tried using the config Freshrss suggeted on their page with the steps from the other instructions and it just didn't work. I switched back to only using the config seen on the Nginx Freshrss install instructions, and it worked perfectly.
Second: My home network originally had issues with reaching my server if I put the fully qualified domain name in instead of the computers IP address. So if I was on one of my home computers, and typed in "freshrss.website.ddns.net" for example, it would error out. But if I was away from home, it would work great. My guess is that it was getting confused as the packets would leave from my home internet, to be redirected right back, and the computer wasn't sure what to do with it. This normally wasn't a problem as I could type in the compuers IP address followed by the port, and be fine (for example, 192.168.1.53:8080). This was not going to work with a manual installation of Freshrss, as it doesn't go to a port by itself it seems. That's where something like Nginx would come in, and when it sees network traffic matching the name you gave it in "server name", it would direct that traffic to Freshrss' p folder. But.... I have multiple programs running on my server computer, so could not just have it something basic like "Localhost" because the computer wouldn't know which program I was looking for. So instead I assigned it to look for "freshrss.website.ddns.net".
That would work great, except as I mentioned previously when I typed that in on other computers at my house, it would give errors. On top of that, since it doesn't have a port, I couldn't just type in the IP address either. Fortunately for me, I have a raspberry pihole setup which handles DNS on my home network. I was able to add in custom entries to point "freshrss.website.ddns.net" to my server pcs' static IP address, and voila I was set. What is happening now when I'm on my home network is the computer asks where to send traffic for "freshrss.website.ddns.net", the Pihole says "oh, that goes to the server PC". Then on the server PC nginx sees it and goes "ah, that's for freshrss", and sends it there. All of this might seem pretty obvious now, but I had tried each of these things individually before and failed, so it took me a while to want to try them again.
The other thing that tripped me up was that local network traffic goes over ports 80 for http and 443 for https. This is... obvious if you know about networking because those are the ports network traffic usually flows over. However, I have my ports forwarded to 30100 for http and 30200 for https. This is because I ran into firewall issues (I think) on my Ubuntu computer, and by default it can not access ports lower than a certain number (80 and 443 were both set below that). So on my router I port forwarded the ports to 30100 and 30200 so I could give the correct permissions on the server computer. This means in my Nginx configuration, I have it set to listen in on 30100 and 30200, which works great from outside of my home network, but not my internal home network, since the router isn't forwarding ports for local traffic. So, I had to add in ports 80 and 443 for it to listen in on so my local DNS traffic would actually be redirect by Nginx to the correct program. The way this issue presented itself is when I set the DNS, but before I fixed Nginx, I was getting the Nginx welcome screen it shows when it's not configured. Which was weird because I had set it (I thought) to not show that. But yeah, setting it to also listen on ports 80 and 443 fixed the issue.
My configuration
I wanted to put this in here just in case it helps anyone else see what's going on. I've changed the server name to have the basic "freshrss.website.ddns.net", but you could put "localhost" or whatever you'd want to have to type in to reach your Freshrss instance. I would not suggest "localhost" unless you were only going to access it from the computer that's running Freshrss. If you want to access it from other devices, you'll need to at a minimum setup DNS like I described above. If you choose to do that, you could put in any sort of name (i'd suggest something like freshrss.home or something similar). Then you'd set a DNS entry that "freshrss.home" points to the static IP of the computer running Freshrss. If you need a refresher about static IP addresses, I write about them here.
Some things to point out about the configuration above. I'm listening on a lot more ports than regular, due to the issue I explained in the problem section with ports 80 and 443. For most people, you might only have to listen on 80 and 443. Also I've changed my actual domain name to website.ddns.net in this example. Other than that, the config is unchanged from the one provided on the Freshrss Nginx setup site I referenced above.
Wrap Up
Hopefully this can help anyone else interested in installing Freshrss and issues they're having. My take away was that this was easier than I expected, however I think that's mostly because I already had DDNS, DNS, and Nginx configured from previous projects. This could be a lot for a new person to take on. Though let me know your thoughts! Feel free to send an email to steventanzimedia@gmail.com