smol projects

a (more updated) reflection on self-hosting

18.06.2023 4 min read

So, I initially set out to self-host Google Photos because I didn’t want to have to pay for extra storage (it’s a matter of principle - it never cost money before). I found a nice FOSS alternative in the form of Immich and managed to get a server up and running. I could connect to my Immich server using Tailscale, which is a VPN that allows for some interesting stuff (MagicDNS, funneling, etc.)

Despite the fact that keeping my machine on at all times was more expensive than paying for storage, I was undeterred. I was going to dive headfirst into this whole rabbit hole. At some point, I ended up with a slew of services running on my machine:

  • Flame - a jumping off point (start page)
  • Immich
  • File Browser - a GUI for managing files
  • Calibre Web - books server
  • Opengist - pastebin
  • Joplin Server - a synchronization server for keeping Joplin notes up-to-date
  • Kapowarr - comics tracker
  • Uptime Kuma - GUI for managing service uptime
  • Vault Warden - a Bitwarden fork for password management
  • Linkding - bookmark management
  • FreshRSS - RSS feed management
  • Five Filters RSS - to parse RSS items and extract full content

It was fun - for awhile. But once the honeymoon phase was over, I realized I (for the most part) had no idea what I was doing. There were 1) some things I didn’t manage to figure out 2) couldn’t be bothered to figure out 3) pain points that were out of my control 4) some stupid decisions being made (?) such as:

  • Immich - only showed x amount of disk space available when I had y (also true for File Browser). I don’t know why this is - virtual disk space partitioning? I tried increasing the available disk space via the Docker GUI and changed some paths in the docker-compose file. This seemed to work on the surface, and increased the storage available to something closer to what I had set in the Docker Desktop app. However this also broke a lot of things - thumbnails were all broken and I couldn’t load any of my images.
  • Uptime Kuma - I ran this on the same machine as all of the other services. That means if this service and all other services alongside it died due to a machine fault, it would be effectively useless? I never got around to running it on another machine
  • Tailscale - consumes massive amounts of battery on Android. I heard this is an issue they’re actively working to fix - but haven’t made massive leaps in - so I had to keep it off most of the time, unless I wanted to access one of my services. This got somewhat annoying - on multiple occasions, I would: 1) try to access a service 2) realize I couldn’t access it because my VPN was down 3) turn it on
  • Because of the aforementioned battery consumption issue, I was thinking of exposing some services to the Internet. However, (again) my ignorance proved to be a bottleneck - despite my best efforts, I didn’t ever manage to get port forwarding / reverse proxy / DNS / what-have-you to work.
  • I didn’t actually have a use for quite a few of the services that I spun up (FreshRSS, Calibre). Some of them I ran just for fun, or tried to use because of sunk cost fallacy (i.e. I went through the process of getting it running, therefore I must try and use it)
  • I ran a cron job to backup sqlite files and managed to recover a database successfully (once, just to make sure) - but what if it didn’t work the next time round? I know, worst-case-scenario I can always use “forgot password”, but do I really want to?

These are some of the things that come to mind (I’m sure there are more). But it has become apparent to me that trying to self-host is perhaps not quite worth the time investment needed. Perhaps at some in the future, if I ever really needed to, I’ll give another good attempt at figuring out some of these things. For now… I guess I’m paying that $3 (damn you, Google).

Built with Astro and Tailwind 🚀