One Year of Self-Hosting in Review, Pt. 1

It has been a year since I decided to start my journey in self-hosting. No, it is not a fancy homelab with AMD EPYC processor, or the newest shiny GPU, or even a beefy VM. I'll admit, those beefy homelabs look sexy as hell and it seems you can do anything (legal) with it.

That was my perception years ago, that made me timid with starting my journey because everyone starts big! A minimum newest on-the-line quadcore processor along with 8GB memory, and to top it off, 1TB SSD. I simply can't afford it, and that's where my interest stopped.

Exactly a year ago, I decided to buy a meagre VPS with 1 CPU, 1GB memory, and 20GB storage, intending to learn more about Linux, Docker, Kubernetes, and clouds in general. My thought was always in doubt, is this enough to do the job i wanted it to do?

Boy, I could never be so wrong.

That meagre VPS was more capable than I could give credit for, hosting this site, my Akkoma instance, and tons of other services I used for myself.

Now, what could I learn to do better?

Failure

It has been a year since I dabbled in self-hosting, but the truth is, this site and others services of mine has only started running on March, or at least three months since the journey started.

You guess it correctly. It failed the first few times. From losing the SSH passkey (I'm dumb), messed up my server with botched installation of several services at once, struggling with the concept of reverse proxy, load balancer, and web server (what are the difference), premature use of Docker, and from just sheer frustation of the immense things you need to set up before you can enjoy it.

The early set up after frustrations took me almost a month, from setting up Docker properly (and the fact that Docker opened up the port immediately if you don't specify in the Docker-compose file), installing Caddy and its configurations, Wireguard to access over internal services, setting up Traefik to use TLS for internal services (this by far is the hardest hurdle along with Wireguard).

In all of that, it was a fun hurdle. Figuring out why Wireguard doesn't need you to open ports, why Docker images are usually not auto-updated, why Traefik won't work when Wireguard is not on container but on the host (haven't found the answer to this one).

In short, be prepared for the difficulty and frustration ahead, if you never had the experience. It is part of the learning. And use Google a lot. Like a lot. Also, there are things that you can understand just yet and b

Cost

In my case, it costs me around IDR120,000 ($8) a month for my hosting (2-core, 2GB memory, and 40GB storage), and another $16 a year for this domain. So roughly $10 a month.

At the start, the hosting only costs me $3.5, with 1-core, 1GB memory, and 20GB storage.

It depends on your hosting provider, and the domain extension you use. My point is, you don't need fancy hardwares worth thousands of dollars or a beefy VPS that costs more than fifty dollars a month. You can always start small and scale your resources based on usage. Though this might not apply for those that wants self-hosted media server, since it needs more powers and storage that a web service does. Again, adjust to your needs, not wants.

Why? Because usually your host will let you upgrade for free, but not the reverse.

Horsepower

As pointed out in the cost, and in the intros, you don't need massive homelab or a dedicated server to run your Nextcloud instances, this is a common misconception among first-timers.

“I mean, my laptop has 8GB RAM and it can barely runs Chrome! That means my media server needs to run on 16 or even 32GB RAM! And who knows, it might need the latest GPU as well.”

Well, if you are hosting a media server for your entire neighbourhood, you are in the right track. But if you need it just for your family, or just for yourself, try less.

I did doubt that I could run as many services as I did now when I bought the 1-core and 1GB memory VPS. But it didn't last long as I installed services after services until I reach 100% memory usage (CPU isn't as much used in my case, probably only Akkoma did use CPU). That's when I upgraded. Looking back, for my needs, the current 2-core and 2GB memory is well enough for my need. Though as others may note, the feelings of needing more is never gone.

Maintenance and Stability

Seeing i'm using this services by myself, my failure tolerance is much higher, since i'm doing all for myself. But all in all, most of my services never failed me in the whole year I've been hosting them, even during major upgrade.

Docker made upgrading as easy as docker pull, though it has its own caveats.

Looking back, my server is actually pretty stable, at least for my standard. Measuring uptime from Fediverse.Observer of my Akkoma instance, it has yet to fell down to below 95%.

Now, I've been doing a hands-down approach to my server, upgrading services and OS when updates come out, without much thinking. Yeah, I did upgrade my services without doing some tests. But my YOLO has yet to fail me so far (maybe I'm going to run out of luck soon, finger crossed), and from maintenance point, it's pretty lax, especially when you have set up alerting services.

That said, maintainability really depends on how you set up your services and tools you can use to help make your life better.

That's it for now, I guess. I will write more when I have time.