[HN Gopher] Show HN: I built a tiny-VPS friendly RSS aggregator ...
       ___________________________________________________________________
        
       Show HN: I built a tiny-VPS friendly RSS aggregator and reader
        
       Hi, folks.  As an RSS user, I tried Inoreader and Feedly, then
       ended up self-hosting a Miniflux instance on my homelab. A few
       months ago, I moved to another city and had to shut down my homelab
       for a long time, so I couldn't access my local miniflux. It was
       quite inconvenient. I decided to self-host my RSS aggregator on a
       tiny VPS or PaaS such as fly.io. However, Miniflux requires a
       PostgreSQL database, which may isn't suitable for a tiny VPS
       instance.  So I built fusion with Golang and SQLite. It contains
       basic features such as Group, Bookmark, Search, Automatically feeds
       sniffing, Import/Export OPML file, etc. It uses about 80MB of Mem
       and negligible CPU usage (metrics here:
       https://imgur.com/a/EJIdevn).  Feel free to share your questions
       and suggestions.  BTW, I also built an online tool to sniff RSS
       links from a URL. (https://rss-finder.rook1e.com/)
        
       Author : rook1e_dev
       Score  : 128 points
       Date   : 2024-05-30 10:53 UTC (12 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | QasimK wrote:
       | This is what self-hosted software should be. An app, self-
       | contained, (essentially) a single file with minimal dependencies.
       | 
       | Not something so complex that it requires docker. Not something
       | that requires you to install a separate database. Not something
       | that depends on redis and other external services.
       | 
       | I've turned down many self-hosted options due to the complexity
       | of the setup and maintenance.
        
         | holsta wrote:
         | > Node 21 with NPM > Sveltekit, shadcn-svelte > Echo, GORM >
         | gofeed
         | 
         | And the documentation literally specifies it requires docker.
         | 
         | How did this become "minimal dependencies"?
        
           | bArray wrote:
           | Almost guaranteed this doesn't build in ~2 years and you
           | would likely need to know all of those languages to fix it.
        
             | Klonoar wrote:
             | I don't think it's _that_ bad, _but_ skimming that repo
             | leaves me feeling like the frontend stack used makes things
             | far more complex than they need to be.
             | 
             | Still, seems like a great project. I added it to my list of
             | things to check out whenever I have a free weekend... if I
             | ever get there.
        
             | skydhash wrote:
             | Encountered the same problem last year. My tech stack was
             | React Native as I was mostly building stuff that has few
             | interactions and it was easy to get something good on both
             | platforms. Then, I got a notice from Google about API
             | version. Updating the project was such a nightmare due to
             | compatibility issue. Some libraries were abandoned. Some
             | had breaking changes. It was easier to write the two native
             | versions than to deal with npm mess.
        
           | eviks wrote:
           | The docs literally specify it doesn't
           | 
           | "Deploy with a single binary"
        
             | holsta wrote:
             | It would be nice if people realised that not everything is
             | Linux (or Windows or Mac).
        
           | rook1e_dev wrote:
           | Hi. Just to clarify.
           | 
           | > Node 21 with NPM > Sveltekit, shadcn-svelte
           | 
           | The front-end things are used during the build process. You
           | don't need them when deploy.
           | 
           | > And the documentation literally specifies it requires
           | docker.
           | 
           | Fusion can be deployed as a *single binary*. Docker is just
           | the recommended way. Maybe we need to make documentation
           | clearer.
        
             | drusklo wrote:
             | Looks good! I am curious on why you recommend to deploy
             | using docker, being a single binary with no external
             | dependencies I find the deployment simple enough.
             | 
             | I write all my personal projects using Go and one of the
             | things I most like is that it compiles to a binary without
             | external dependencies.
        
               | rook1e_dev wrote:
               | That's mostly for Windows users.
               | 
               | The SQLite driver uses cgo, so we use both Ubuntu and
               | Windows Server in CI to avoid cross-compiling. However,
               | we still can't confirm that it's 100% ok on Windows. If
               | any weird bugs occur on Windows, we don't have much
               | experience or energy to deal with them.
               | 
               | The Docker image is based on Debian, we are more familary
               | with it.
        
               | drusklo wrote:
               | That makes a lot of sense, thanks for taking the time to
               | explain it.
        
             | holsta wrote:
             | It's an interesting difference in backgrounds, maybe? I
             | tried to build this on OpenBSD where we don't have docker
             | and we use 'make' instead of random shell scripts.
             | 
             | For what it's worth, this is from the build log:
             | error code 1         error path /home/holsta/3rdparty/fusio
             | n/frontend/node_modules/@sveltejs/kit         error command
             | failed         error command sh -c node postinstall.js
             | error /home/holsta/3rdparty/fusion/frontend/node_modules/ro
             | llup/dist/native.js:84         error       throw new Error(
             | error             ^         error         error Error: Your
             | current platform "openbsd" and architecture "x64"
             | combination is not yet supported by the native Rollup
             | build. Please use the WASM build "@rollup/wasm-node"
             | instead.
        
         | generallee5686 wrote:
         | Agreed. Lately I'm coming across self-hosted services that not
         | only require docker, they essentially require a docker-compose
         | file full of many other dependencies.
         | 
         | The other thing that blows my mind is how many of these self-
         | hosted applications require mysql/postgres instead of just
         | using sqlite.
        
       | phubbard wrote:
       | This is awesome! I currently run FreshRSS on a pi5 and this looks
       | like a nice, non-PHP alternative.
        
       | beepbooptheory wrote:
       | Looks really great. I can't tell from the readme, but can this
       | produce its own feed which is the aggregation of the other feeds?
       | That is the feature I always want and don't see too much with
       | apps like this.
        
         | rook1e_dev wrote:
         | Hi, thanks for the suggestion! Currently it doesn't have that
         | feature.
         | 
         | You can create an issue about it on GitHub so we can evaluate
         | how much it is needed.
        
       | pglevy wrote:
       | I love this idea! As a code hobbyist, I tried to do something
       | like this for DIY podcast aggregation using Jekyll
       | (https://github.com/lowcodelounge/pod-force). Look forward to
       | checking this out to learn more. Thanks for sharing!
        
       | skrause wrote:
       | I can recommend https://github.com/nkanaev/yarr which is also a
       | single Go binary, consumes only 40 MB of RAM and uses SQLite as
       | well.
        
       | nedrylandJP wrote:
       | I've been using Slack /feed (ugh) to get RSS notifications
       | because I want pings from certain feeds. I have not found a
       | different, easy lightweight way to do this.
        
       | visil wrote:
       | Looks cool! I'm currently using Selfoss, which is fine in terms
       | of requirements/maintenance, but if I didn't, I'd probably give
       | this a try!
        
       | pacifika wrote:
       | Does it produce a rss feed itself?
        
       | gcascio wrote:
       | Cool project! Also it's welcome resource to learn, since I just
       | started learning Go and was trying myself at an RSS reader
       | (https://stille.app).
        
       ___________________________________________________________________
       (page generated 2024-05-30 23:01 UTC)