Selfhosted
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
view the rest of the comments
It's a systemd-style way to manage podman containers that aims to be as easy to manage as compose/swarm. Not quite an integration, but operates similarly, and about as easy to read. Less heavy than managing a local micro-k8s cluster. That's about it.
Thank you, I think the "less heavy than managing a local micro-k8s cluster"-part was a great portion of what I was missing here.
Yup. I read it as "compose and manage containers with systemd."
Sure, there is a k8s layer abstracted into podman to do this, but you don't manage or interact with it. Everything is a systemd unit file, a simple text document with a well understood structure. Containers are started and logged like services.
Easy, direct, tidy.
Understood, thanks, but if I may ask, just to be sure: It seems to me that without interacting with the kubernetes layer, I'm not getting pods, only standalone containers, correct? (Not that I'm afraid of writing kube configuration, as others have inferred incorrectly. At this point, I'm mostly curious how this configuration would be looking, because I couldn't find any examples.)
Nah, I have a paperless pod created with Quadlet.
Awesome, so, essentially, you create a name.pod file like so:
and join every container into the pod through the following line in the .container files:
Pod=name.pod
and I presume this all gets started via
systemctl --user start name.service
and systemd/podman figures out somehow which containers will have to be created and joined into the pod, or do they all have to be started individually?(Either way, I find the documentation of this feature lacking. When I tested this stuff myself, I'll look into improving it.)
Yep, that's the way!
Systemd figures it out iff you have specified your service dependencies correctly, with things like
After=
,Upholds=
,BindsTo=
, etc. Have a look atsystemd.unit
manpage for details. For my paperless service, it goes something like this:systemctl --user start paperless
, which depends on:The point of quadlet was to lean as heavily as possible on systemd for the service and dependency bits and use podman only for translating the container bits into something systemd can handle. The one bit of dependency handling that quadlet does is to make sure that
paperless.pod
is started before all containers that havePod=paperless.pod
in their quadlet file.That would be amazing, of course! :) I find that, if you're familiar with unit files, you're like 85% of the way there already. By the way, the unit files that quadlet generates are somewhere in
$XDG_RUNTUME_DIR
for you to inspect. I'm afraid I'm not at a computer right now andI don't know the exact path off the top of my head.Nice, thanks, again! I overlooked the dependency instructions in the container service file, which is why I wondered how the heck podman figures out the dependencies. It makes a lot of sense to do it like this, now that I think of it.
I'm still new to this myself, but yes that's the gist of it. This isn't k8s or even k3s. It's an easy way to deploy a container via code on a single node system using the already present systemd for management. It let's you pretend that Linux handles containers natively like it does daemons.
This article from redhat has more information about the why and what.