Start of self hosted server
The first question that appear was "why", and the answer is because:
- I want to watch a movie while lying on the bed with my phone/tablet
- My ISP sucks, it stops me from accessing a lot of research sites. I can use public DNS over HTTPS / VPN that I already own, but I think it's faster when I have the DNS server running on my local network
- I have a primary laptop that I use most of the time for work, this laptop draws a lot of power (because of the gaming label), and I don't want to keep this machine alive 24x7 with a higher risk of breaking when I need it.
- I want to have a backup solution for my primary laptop
then the question continues with what I need to solve that problem. For context, I already have a Linux virtual machine running at Linode, I utilized it for VPN, and whenever I need high-speed internet to docker build
or for me to remote when I'm AFK and work from my phone. I use the lowest option available, it's 1 vCPU, 1 GB of memory, and 25 GB of storage for $1 a month. to be clear in layman's terms: it's not enough.
I don't want to spend another dime on object storage, I want more computing power, more ram, and more disk. I also have a 5TB hard disk lying around and some slow laptop that my sister complained since long time ago and I haven't found the time to fix that until she got another new laptop from her new job.
The answer seems so obvious now, let's buy a home server! and after quick research. I found out what I want, a SBC capable of rendering 4k media server, maybe a little computing power for backup work device and it's orange pi 5.The device is nice, but me being so cheapo thinking to spend another $134 for something so experimental, I'm not sure.
So let's back to plan A, re-utilized old laptop to be a server that up 24x7, not really a safe idea, but we must be agile and start somewhere. Here we go!
- The choice of OS, quick googling and just me being me – can't really stay in one Linux distro for a long time, finally chose Zorin OS Lite, mostly because it's known for being really light and can live well on older machines
- Setup dashy for a dashboard that will list service and their URL because there's will be a lot of services and I can't remember all the locations and port numbers
- setup jellyfin for the media server
- setup monitoring with glances for me to know which service causing everything to slow down / crash, we may improve this later on, but while we only running a single machine, I wouldn't give it too much thought
- setup transmission, radarr, sonarr, readarr and jackett for "downloading"
- Expose some service to the internet, accessible from this blog domain
The last part, exposing things also had its own catch, back to point 2 where my ISP sucks, I also realize that my ISP didn't give me a public IP. My internet has another layer of the internal network before being connected to the internet, I believe they do this because there's a limit to number of Public IPV4 and I only paid for lower services, this also makes some options like DDNS can't be used.
Back to exposing, quick googling gives me some potential solutions, serveo.net is something that I do first, the way they do is ssh port forwarding between my machines and serveo machines, and magically I can access my machines from somethingsomething.serveo.net. I also can use my chosen custom domain or even my own domain, which is super awesome when another well-known service paywall has this feature (I see you ngrok). but when I give it a second thought, I realize that I over complicate things, I just can setup VPN between my publicly accessible linode VM and my local machine, and I add caddy to reverse proxy some services that are served from Linode VM (like this blog) or to my local machine like dashy or glances (I'm not sure why I publicly share my process monitoring, will close that soon). I use tailscale for the VPN because it's just so easy to setup, they have good offerings for personal use, and there are just a lot of features available. bonus point, I also can access my machines anywhere with my phone and I can scrap my VPN because there's a thing called tailscale exit node that does the same stuff.
We're good, for now.. for the media part at least..
The idea is unlimited, while writing for this post, I also want to create a baby monitor, smart self-hosted home server - so my home did not become progressively dumber whenever the internet is down, and a lot of good things listed at https://github.com/awesome-selfhosted/awesome-selfhosted