diff options
| author | Christian Cleberg <[email protected]> | 2025-11-11 22:49:13 -0600 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2025-11-11 22:49:13 -0600 |
| commit | 51a7a02f0c96d49b68fbcc155414c218207fa270 (patch) | |
| tree | 845af8aad0e8769352efc02fcd1044eed9cc1ec1 /content/blog/2022-06-07-self-hosting-freshrss.org | |
| parent | 7d3e80ebf1dc770eac0e21890b74f18ba2d15a6b (diff) | |
| download | cleberg.net-51a7a02f0c96d49b68fbcc155414c218207fa270.tar.gz cleberg.net-51a7a02f0c96d49b68fbcc155414c218207fa270.tar.bz2 cleberg.net-51a7a02f0c96d49b68fbcc155414c218207fa270.zip | |
fix grammar in 2022 posts
Diffstat (limited to 'content/blog/2022-06-07-self-hosting-freshrss.org')
| -rw-r--r-- | content/blog/2022-06-07-self-hosting-freshrss.org | 152 |
1 files changed, 71 insertions, 81 deletions
diff --git a/content/blog/2022-06-07-self-hosting-freshrss.org b/content/blog/2022-06-07-self-hosting-freshrss.org index 4b54cd9..b356f44 100644 --- a/content/blog/2022-06-07-self-hosting-freshrss.org +++ b/content/blog/2022-06-07-self-hosting-freshrss.org @@ -3,47 +3,43 @@ #+description: Stepwise instructions for installing FreshRSS using Docker and configuring Nginx as a reverse proxy to enable secure and synchronized RSS feed access. #+slug: self-hosting-freshrss -* Why RSS? +* Why Use Really Simple Syndication (RSS)? -After noticing that I have collected 50+ blogs as bookmarks, I decided -to migrate back to using RSS feeds to stay up-to-date with my favorite -websites. Using RSS allows me to read all of these posts in a single app -(on both mobile & desktop) and allows me to be notified when new posts -are available. +After noticing that I have collected 50+ blogs as bookmarks, I decided to +migrate back to using RSS feeds to stay up-to-date with my favorite websites. +Using RSS allows me to read all of these posts in a single app (on both mobile & +desktop) and allows me to be notified when new posts are available. -However, I ran into one issue: syncing subscriptions and read/unread -posts across devices. Since I want to be able to easily read on both -mobile and desktop, I decided to look for a self-hosted RSS solution. +However, I ran into one issue: syncing subscriptions and read/unread posts +across devices. Since I want to be able to easily read on both mobile and +desktop, I decided to look for a self-hosted RSS solution. -Thus, I found [[https://www.freshrss.org/][FreshRSS]] and was able to -successfully install it on my server in about 30 minutes. +Thus, I found [[https://www.freshrss.org/][FreshRSS]] and was able to successfully install it on my server in +about 30 minutes. * Documentation -While it's certainly not robust, the -[[https://freshrss.github.io/FreshRSS/][FreshRSS documentation]] is -helpful for figuring out basic information about the service. +While it's certainly not robust, the [[https://freshrss.github.io/FreshRSS/][FreshRSS documentation]] is helpful for +figuring out basic information about the service. -However, I wanted to install this service as a Docker container and -stumbled across the -[[https://github.com/FreshRSS/FreshRSS/tree/edge/Docker][Docker README]] -within the GitHub repository. +However, I wanted to install this service as a Docker container and stumbled +across the [[https://github.com/FreshRSS/FreshRSS/tree/edge/Docker][Docker README]] within the GitHub repository. -This README was the documentation I actually needed. However, as you'll -see below, I still had to manually edit one file (=config.php=) to -access the API externally via my RSS apps. +This README was the documentation I actually needed. However, as you'll see +below, I still had to manually edit one file (=config.php=) to access the API +externally via my RSS apps. * Installation ** DNS -The first step, as required by any external web service, was assigning a -domain name to use. I chose to use a subdomain, like =rss.example.com=. +The first step, as required by any external web service, was assigning a domain +name to use. I chose to use a subdomain, like =rss.example.com=. To assign this, I created an =A= record in my DNS settings with the IPv4 -address of the server and an =AAAA= record with the IPv6 address of the -server. Note: assigning an IPv6 (=AAAA=) record is optional, but I like -to enable IPV6 for my services. +(Internet Protocol version 4) address of the server and an =AAAA= record with +the IPv6 (Internet Protocol version 6) address of the server. Note: assigning an +IPv6 (=AAAA=) record is optional, but I like to enable IPV6 for my services. #+begin_src config rss.example.com A xxx.xxx.xxx.xxx @@ -52,11 +48,10 @@ rss.example.com AAAA xxxx:xxxx: ... :xxxx ** Docker -I initially tried to set up a =docker-compose.yml= file with a =.env= -file because I prefer to have a file I can look back at later to see how -I initially started the container, but it simply wouldn't work for me. -I'm not sure why, but I assume I wasn't telling =docker-compose= where -the =.env= file was. +I initially tried to set up a =docker-compose.yml= file with a =.env= file +because I prefer to have a file I can look back at later to see how I initially +started the container, but it simply wouldn't work for me. I'm not sure why, but +I assume I wasn't telling =docker-compose= where the =.env= file was. Regardless, I chose to simply run the service with =docker run=. See the following command for my =docker run= configuration: @@ -72,25 +67,24 @@ sudo docker run -d --restart unless-stopped --log-opt max-size=10m \ freshrss/freshrss #+end_src -This started the container successfully and allowed me to visit the -FreshRSS instance at =localhost:8080=. +This started the container successfully and allowed me to visit the FreshRSS +instance at =localhost:8080=. ** Fresh RSS Set-Up -I *HIGHLY* suggest that you set up your user account prior to exposing -this service to the public. It's unlikely that someone is trying to -access the exact domain or IP/port you're assigning here, but as soon as -you expose this service, the first person to open the URL will be able -to create the admin user. +I *HIGHLY* suggest that you set up your user account prior to exposing this +service to the public. It's unlikely that someone is trying to access the exact +domain or IP/port you're assigning here, but as soon as you expose this service, +the first person to open the URL will be able to create the administrative user. -In order to set up your FreshRSS service, open the =localhost:8080= URL -in your browser (you may need to use a local IP instead of =localhost= -if you're accessing the page from a different machine on the network - -e.g., =192.168.1.20:8080=). +In order to set up your FreshRSS service, open the =localhost:8080= URL in your +browser (you may need to use a local internet protocol (IP) instead of +=localhost= if you're accessing the page from a different machine on the +network - e.g., =192.168.1.20:8080=). Once the page loads, set up your default user with a strong username and -password. You may also choose to configure other settings prior to -exposing this service. +password. You may also choose to configure other settings prior to exposing this +service. ** Nginx Reverse-Proxy @@ -103,7 +97,7 @@ First, I created a new Nginx configuration file: sudo nano /etc/nginx/sites-available/rss.example.com #+end_src -Within the config file, I pasted the following code: +Within the configuration file, I pasted the following code: #+begin_src config upstream freshrss { @@ -136,8 +130,7 @@ server { } #+end_src -Finally, restart Nginx and you will be able to access your service via -HTTP: +Finally, restart Nginx and you will be able to access your service via HTTP (Hypertext Transfer Protocol): #+begin_src sh sudo systemctl restart nginx.service @@ -145,49 +138,46 @@ sudo systemctl restart nginx.service ** HTTPS -However, I don't want to access my RSS feeds via HTTP. I want it -available only via HTTPS. In order to do this, I ran the -[[https://certbot.eff.org/][certbot]] program to generate SSL -certificates for me: +However, I don't want to access my RSS feeds via HTTP. I want it available only +via HTTPS (Hypertext Transfer Protocol Secure). In order to do this, I ran the +[[https://certbot.eff.org/][certbot]] program to generate SSL (Secure Socket Layer) certificates for me: #+begin_src sh sudo certbot --nginx #+end_src -This process will automatically generate an SSL certificate for you and -modify the Nginx configuration file to include a redirect from HTTP to -HTTPS. +This process will automatically generate an SSL certificate for you and modify +the Nginx configuration file to include a redirect from HTTP to HTTPS. * Post-Installation Fixes -At this point, we have a functional FreshRSS website, available from -anywhere and secured with HTTPS. However, attempting to connect this -service to an RSS app resulted in many errors regarding unavailable URLs -and incorrect credentials. +At this point, we have a functional FreshRSS website, available from anywhere +and secured with HTTPS. However, attempting to connect this service to an RSS +app resulted in many errors regarding unavailable URLs and incorrect +credentials. ** API Set-Up -First, you need to open your user profile in FreshRSS (=Settings= > -=Profile=) and set an API password in the field at the bottom. This is -the password you will need to provide to your RSS apps. +First, you need to open your user profile in FreshRSS (=Settings= > =Profile=) +and set an API password in the field at the bottom. This is the password you +will need to provide to your RSS apps. -Once that is set and saved, click the link below the API password field -to open the API check tool. It should look something like -=https://localhost:8080/api/= or =https://rss.example.com/api/=. +Once that is set and saved, click the link below the API password field to open +the API (application programming interface) check tool. It should look something +like =https://localhost:8080/api/= or =https://rss.example.com/api/=. -Within this page, you /should/ see your correct external URL and "PASS" -at the bottom of each API type. This would mean everything is set up -correctly, and you can now move on and login to any RSS apps that -support self-hosted options. +Within this page, you /should/ see your correct external URL and "PASS" at the +bottom of each API type. This would mean everything is set up correctly, and you +can now move on and login to any RSS apps that support self-hosted options. In my case, the URL showed an internal URL and I had a warning that the -=base_url= variable may be misconfigured. If this is the case, see the -next section for a fix. +=base_url= variable may be misconfigured. If this is the case, see the next +section for a fix. ** Base URL Fix -In order to fix the =base_url= for the API, I opened up my docker -container with the following command: +In order to fix the =base_url= for the API, I opened up my docker container with +the following command: #+begin_src sh sudo docker exec -it freshrss bash @@ -206,9 +196,10 @@ Finally, open up =config.php= in the =data= directory: nano data/config.php #+end_src -Within =config.php=, you will need to update the =base_url= variable and -update it to match your external URL. In my case, I simply commented-out -the incorrect URL with =//= and added the correct one on a new line: +Within =config.php=, you will need to update the =base_url= variable and update +it to match your external URL (uniform resource locator). In my case, I simply +commented-out the incorrect URL with =//= and added the correct one on a new +line: #+begin_src php <?php @@ -221,8 +212,8 @@ the incorrect URL with =//= and added the correct one on a new line: > #+end_src -You can now exit the file with =Ctrl + x=, press =y= to save the file, -and then click =Enter= to keep the same file name. +You can now exit the file with =Ctrl + x=, press =y= to save the file, and then +click =Enter= to keep the same file name. Finally, just exit out of the docker container: @@ -236,8 +227,7 @@ Next, just restart the container: sudo docker restart freshrss #+end_src -VoilĂ ! Your API check should now "PASS" and you should be able to use -one of the API URLs in your RSS apps. +VoilĂ ! Your API check should now "PASS" and you should be able to use one of the +API URLs in your RSS apps. -In my case, I use [[https://netnewswire.com][NetNewsWire]] on my desktop -and phone. +In my case, I use [[https://netnewswire.com][NetNewsWire]] on my desktop and phone. |
