← Back to context

Comment by turtlebits

4 days ago

Running all these services without a declarative/standard way of deployment, ie docker compose or k3s/k8s is a bit mind boggling to me.

I self host on a bunch of different hardware, OSes, providers. I want the least fiddling as possible.

It's been really interesting seeing the divide in the comments! I have a completely different philosophy from the OP on how to self host haha, and it comes from not wanting to fiddle with my server all the time! But they say our ci/cd is fiddly! The whole point of it is to NOT be fiddly! People gotta start figuring out how things work instead of throwing spaghetti at the wall.

In my experience, when something involves words like "declarative", "deployment", "docker", "k8s", that's a sign that it will actually involve more fiddling rather than less. But that's just me.

  • I'm running like 10 services on a VPS. I'm a professional software engineer. Do you think I want to ssh into my server and find a bunch of single binaries all over the place to run them? What if a service stops, how do you automatically restart it? How would you automate creation of a qa environment when you create a PR on github so that you can test your changes before they go to prod? Gonna ssh into the server and pull down your repo and build the app and run it?

    It takes like a day to figure out docker compose and like a week to figure out k8s at a level where you can get things done. Honestly, you can get something working now with LLMs and have them help you understand it in probably less time.

    Of course I want a declarative deployment for my complex home server. Do you run like 1 app on your home server? It's not "fiddling" if you know how these things actually work.

    I imagine it's more fiddly to figure out how to wire up all your individual services to Uptime Kuma and Homepage. You don't even need Uptime Kuma with docker compose, instead you just set a container restart policy and have a healthcheck endpoint.

    • I have a single home server (debian on an old mac mini) and this thing is like my router. Power on and just wait. Jellyfin and other stuff are taken care off by apt upgrade. I don’t usually bother upgrading the others unless they fail due to dependency updates (which only happened once).

      1 reply →

    • What benefit does k8s introduce in a home server? I currently have about a dozen services, but only use docker compose and a bit of shell scripting.

      1 reply →

    • > Do you run like 1 app on your home server?

      I could just as well ask you why you need to be running 10 services at home.

      > I'm a professional software engineer.

      Good for you, mate.

      > Do you think I want to ssh into my server

      Clearly you don't, so why even make this a point? No one told you that you have to do it this way.

      > What if a service stops, how do you automatically restart it?

      It's called systemd, launchd, OpenRC, or any number of various mechanisms used to manage services and restart them.

      > How would you automate creation of a qa environment when you create a PR on github so that you can test your changes before they go to prod?

      No doubt, containers can be beneficial when deploying services exposed to the public. That doesn't mean a layer of complexity isn't added on top that one could consider "fiddling" when applied to the context of self-hosting.

      I really hope you aren't orchestrating a QA environment just for software you run at home, unless that's truly your passion. I assume you were referring to what you do in your day job.

      > Gonna ssh into the server and pull down your repo and build the app and run it?

      As if all server software can only be installed that way without Docker containers. Even when that is the way, you're speaking like running a few commands is akin to landing astronauts on the Moon.

      > It takes like a day to figure out docker compose and like a week to figure out k8s at a level where you can get things done.

      Or I can just install the thing I want, make sure it binds to whatever port I need it to, and not need to think about docker-compose.yml.

      > Of course I want a declarative deployment for my complex home server.

      Then go ahead and do that. No one's stopping you, mate. I prefer to avoid that as much as I can because it's another thing to learn that, in all the years I've used Docker, rarely provided me that much benefit. I have zero interest in understanding the nuances of docker-compose.yml. (and yes, I am very familiar with it)

      > It's not "fiddling" if you know how these things actually work.

      Whoa, buddy. We already know you're a professional software engineer. No need to be punching down.

      > You don't even need Uptime Kuma with docker compose,

      You don't even need either of those things.

      > instead you just set a container restart policy and have a healthcheck endpoint.

      That's cool man. I don't care about any of that. Again, from my perspective, those are things I consider a waste of time for self-hosting. Especially the health check thing. More power to you if that's your style, but I have other priorities in life, and I'm not wrong for considering all these added technologies to result in more fiddling.

      2 replies →

  • Noone builds anything without a vision of what it will look like. Blueprints are declarative specs. Why bother with instructions if you dont need to?

    Many projects, like Immich, only provide docs for docker images/compose deployment.

  • That was the case 10 years ago, maybe even 5. But nowadays the API is mature enough, tooling is good enough and every LLM out there know about them enough to not be a problem anymore.

Pets are OK sometimes! They do need care and feeding, though; some of us don't see that as chores, instead delightful hobbies. I can definitely see the perspective of "there are better things to do", especially if you don't like those things.

  • There is something satisfying in handling a home server as cattle though!

    I don't do it because I don't care; I do it because it is super satisfying when it has been boringly running for weeks without me doing anything to keep it up beyond paying the electricity bill, upgrades are extremely predictable, etc.

    Boredom is a feature :D

  • Pets are totally fine if you consistency/reliability arent that important. Homelabs can be fun ;)

    • > if consistency/reliability aren't that important

      I've administered linux systems with uptime longer than docker has existed. consistency/reliability is perfectly achievable with without modern containerisation

    • I mean I'm not self hosting my password manager like this guy, but my self hosted services have better uptime than github actions

Especially now when you can snap your fingers and get a semi responsible codified version. Heck just do what you want to them ask the LLM to port your work to something marginally better than a totally hand cobbled bucket of bits system.

  • That’s what I’ve been doing. Managing this stuff by hand is awful and I’m not a sysadmin who is good at it. I just added single sign on to my home network for a wide variety of various services. Some of them didn’t even support SSO but a quick AI patch fixed that. There is no way I would even attempt that by hand let alone succeed.

    I saw statements to the effect of “this would be nice but it’s a lot of work” several times in the post. I don’t understand why that has to be a blocker anymore. All this tedium is gone.

    • I see people say the same things in threads discussing open source agent harness repos that are MIT licensed. I don't understand how it isn't obvious to them at that point haha. I don't think people realize they can just... do whatever they want to

I agree. But you could easily automate the systemd/podman based setup the OP has using ansible, if you wanted a declarative approach using OP's tools.

For my part, my home server is a single compose file :shrug:

Do you not consider systemd services to be declarative/standard?

midwit meme where caveman & wizard are editing files and midwit man is writing terraforms.