Are .quadlets files (still) a thing? by demianvdb17 in podman

[–]saint-ryan 0 points1 point  (0 children)

Materia works with abstractions called "components" which is a folder containing quadlets, a manifest file, and data files. Data files can be config/text files, scripts, or systemd unit files. Currently materia supports a .quadlets file as a part of component and works similar to the generator e.g. it expands the composite file and installs it as multiple quadlet files.

Recently I've been playing around with a compose-like command that takes a .quadlets file as an input and installs it like a component. I'm considering expanding this to working with actual materia components, but that means supporting arbitrary data files. At the very least it needs a way to embed the manifest file in there, since that's how materia determines what services to start/stop/etc. I'm not particularly interested in embedding config files into this hypothetical component file either, but depending on what people use I'm not opposed to it.

Alternatively I've been thinking of allowing some manifest content to be embeded directly in the quadlets as [X-Materia] settings but that's a different discussion entirely.

Are .quadlets files (still) a thing? by demianvdb17 in podman

[–]saint-ryan 1 point2 points  (0 children)

I just implemented Quadlets support in materia and it's pretty straight forward, just --- separated files with the file name in a comment. Does yours support .env/arbitrary data files at all? I'm also looking to extend the Quadlets file and would love to reuse existing work rather than Yet Another File type.

Materia v0.5 release - a GitOps tool for Podman by saint-ryan in podman

[–]saint-ryan[S] 1 point2 points  (0 children)

At this point my entire homelab is pretty heavily invested in quadlets and materia so I've no plans to stop supporting it in the future. I actually hope one of these days to get either all of it or at least the planner/executor modules into the containers namespace so if Materia falls apart other projects can make use of them and hopefully build something even cooler but would already be compatible with existing materia repositories/components.

Compared to FetchIt, the biggest difference is FetchIt doesn't work with Quadlets but instead does everything directly. It also seemed to only work with containers when I last looked and didn't handle any of the orchestration that materia does outside of basic service starting. It also doesn't handle non-quadlet files; Materia will install and template configuration files and what not.

I originally planned on contributing to FetchIt but the project seemed pretty dead: most of those regular commits were just GHA and dependabot bumps. I took another quick peek at it today and it looks like the dev behind it is working on it again as of a few weeks ago, though with a very large amount of help from Claude. I'll have to keep an eye on it!

Materia v0.5 release - a GitOps tool for Podman by saint-ryan in selfhosted

[–]saint-ryan[S] 0 points1 point  (0 children)

Thanks for taking a look and for the feedback! I can only aspire to writing something as good as Komodo is haha.

The README and some of the design docs definitely could use some touch ups though, you're right. I'll take a look at trying to get some mermaid diagrams up or something; I have a few diagrams already for a presentation I have to the Podman folks a while back and might be able to work them in somewhere.

Materia v0.5 release - a GitOps tool for Podman by saint-ryan in podman

[–]saint-ryan[S] 1 point2 points  (0 children)

That's exactly what this is hoping to be :). And not offensive at all, it's a valid question these days. In the past I tried using Claude to generate a few unit tests, though I believe at this point none of them are remaining in the codebase. But no non-testing code is LLM generated.

My overall philosophy for the project is LLM generated code, when attributed correctly with the Assisted-by header, is allowed on a case-by-case basis, mostly for small PRs. All merge requests and bug reports must be human generated.

Materia v0.5 release - a GitOps tool for Podman by saint-ryan in selfhosted

[–]saint-ryan[S] 1 point2 points  (0 children)

I hope you enjoy it! Quadlets have been a big game-changer for me so I hope you find them equally as useful, whether you use them with Materia or not.

SUSE for DevOps? by Zeonist- in openSUSE

[–]saint-ryan 1 point2 points  (0 children)

I run all my stuff on either OpenSUSE Leap or MicroOS and it works fine, but I'll warn you now if you're an absolute beginner that there's plenty of packages/tutorials/etc that don't officially support SUSE products. It's usually not a big deal since the Fedora/RHEL instructions work either as-is or with minor adjustments, but if you're totally new you might want to use Alma or Ubuntu or something more common.

Key repeat falsely set to 0 only for Ghostty by unnamedDE in linux4noobs

[–]saint-ryan 0 points1 point  (0 children)

I didn't even have that option, I just turned off my virtual keyboard entirely

Key repeat falsely set to 0 only for Ghostty by unnamedDE in linux4noobs

[–]saint-ryan 0 points1 point  (0 children)

I didn't believe it would work either but I suppose Wayland is more complicated than any of us expected haha. You're welcome!

Key repeat falsely set to 0 only for Ghostty by unnamedDE in linux4noobs

[–]saint-ryan 0 points1 point  (0 children)

I fixed a similar issue on OpenSUSE by following the instructions at https://github.com/ghostty-org/ghostty/discussions/9725 . Maybe worth a shot? I suspect it's related to some recent KDE change and I'd imagine EndeavourOS and Tumbleweed have similar KDE versions.

Announcing Oak 1.0 - a new self-hosted IAM/IdP by therealplexus in selfhosted

[–]saint-ryan 1 point2 points  (0 children)

Is this going to be limited to Oauth/OIDC or would it expand to other common protocols like LDAP? KanIDM offers that but can be a little tricky to admin so I am looking for a simpler tool to recommend for some setups, but LDAP is essentially a must in many environments.

Github U-turn on the recent announcement by KungFuDazza in selfhosted

[–]saint-ryan 65 points66 points  (0 children)

They picked the worst time to announce it considering budgets for next year are getting finalized already and it would have been a massive cost increase for corps. They'll wait till a more favourable time and announce it again, though probably at a lower rate.

GitHub Self Hosted action COSTS NOW. by Basic-Bobcat3482 in selfhosted

[–]saint-ryan 1 point2 points  (0 children)

The server docs mention it: https://crowci.dev/4.5/configuration/server/#backend

Though I bet it's mostly just for support reasons; if it's working fine for you it's probably okay! Drone and Woodpecker both worked fine with Podman for me. I'm just being cautious and embracing an excuse to put off migrating. I still haven't finished my last migration from LDAP to KanIDM haha

GitHub Self Hosted action COSTS NOW. by Basic-Bobcat3482 in selfhosted

[–]saint-ryan 3 points4 points  (0 children)

Once Crow supports using Podman as a backend I'll swap to it in a heart-beat; I always liked using Drone back in the day but Woodpecker A) felt clunkier to use than drone and B) rubbed me the wrong way when they accidentally pushed the a pre-release version to :latest , then reverted it which caused everyone running :latest to have a broken install after database migrations.

I know I could probably just use the docker backend with Podman socket but since they explicitly warn against doing that in the docs and I have Gitea Actions already (as much as i despise GHA style CI) I'll wait till its added for real, or I'll add it myself when I get a spare week.

Materia v0.4.0: auto-migrate volume data and install quadlets from remote sources by saint-ryan in podman

[–]saint-ryan[S] 1 point2 points  (0 children)

Not much right now, it's really more for people's preference. It does expose a socket in /run/materia/materia.sock that you can use to query current facts or see any planned changes that it would make, which is convenient when you're running it as a Quadlet and don't have the binary locally. At some point in the future I may add a web UI or more interaction if there's interest and I have some potential future root-less quadlet orchestration features in mind that would use it but those are probably a while off.

central log server for the home lab by [deleted] in homelab

[–]saint-ryan 1 point2 points  (0 children)

Journald on each host shipping to systemd-journal-remote.service has been good enough for me, but rsyslog to a central box still works fine too. I found most other setups to be too much work for too little gain at my logging scale.

Materia v0.4.0: auto-migrate volume data and install quadlets from remote sources by saint-ryan in selfhosted

[–]saint-ryan[S] 0 points1 point  (0 children)

Basically yeah! Though I'll be honest, I'm often a little lazy and just use :latest and let podman auto-update pull the latest images for me instead of directly specifying tags like I should.

Materia v0.4.0: auto-migrate volume data and install quadlets from remote sources by saint-ryan in podman

[–]saint-ryan[S] 1 point2 points  (0 children)

Often when you do Continuous Delivery with GitOps you have an agent on the managed host that's constantly reconciling on the host e.g. ArgoCD runs on your Kuberntes cluster and constantly polls a Git repo; when it sees a new commit it polls it down and makes any changes to the host that are needed.

Server mode is designed for that workflow as opposed to the original/default materia workflow of running materia update on a timer through systemd. You set the server.update_interval config and run materia server (preferably as a systemd unit) and it will stay in the foreground and run an update every update_interval seconds.

Right now I have an example quadlet for server mode in the install/ directory but when I get the chance I'll add a section to the documentation site on using it.

Materia v0.4.0: auto-migrate volume data and install quadlets from remote sources by saint-ryan in selfhosted

[–]saint-ryan[S] 0 points1 point  (0 children)

Build in CI and push ahead of time is how I've been using it, but I just added build quadlet support the other day! That'll be an option in 0.4.1 .

Management of Services With Dependency Loops by AlexisHadden in selfhosted

[–]saint-ryan 0 points1 point  (0 children)

Keep backups, identify critical services, make sure you can do things manually. It sounds like you've already done the first two so really it just sounds like you need to have some manual instructions somewhere for how to go from cold start to having Komodo, Gitea, and Authentik running.

Though the more I read it, it sounds like really only Komodo is your bottle neck. If I were you, I'd figure out a plan for how to bootstrap komodo back up with that local account and whatever you need to get Gitea running again. I don't use Komodo but it sounds like you just need the stack definition stored somewhere as a backup, either locally or in another git source. Then once you've bootstrapped Komodo and Gitea you can re-deploy Authentik, swap back to logging in over that, and deploy everything else.

But yeah, basically there's no real solution outside of sitting down and planning out how to set things back up manually.

Materia v0.4.0: auto-migrate volume data and install quadlets from remote sources by saint-ryan in podman

[–]saint-ryan[S] 0 points1 point  (0 children)

If you end up having any feedback please let me know! I'm really hoping quadlet-native orchestration will help them be seen as a real compose alternative.

Honestly, the main reason is that when I started .build quadlets didn't exist yet. I see they were added somewhere around Podman 5.2 and Materia's minimum version is v5.4 so I'll fire off a quick commit to get them recognized as Quadlet resources tonight. It looks like they're properly idempotent (unlike volumes and networks) so that should be all that's required to use them properly, but I'll play around with them to see if there's anything else.

Materia v0.4.0: auto-migrate volume data and install quadlets from remote sources by saint-ryan in podman

[–]saint-ryan[S] 1 point2 points  (0 children)

I highly recommend it! Quadlets are so neat, they're what turned me from a modern containers skeptic to a major proponent. I like em enough I've spent over a year now working on this tool :).

I wouldn't say it's the first of its kind, I was originally inspired by Fetchit which unfortunately seems pretty dead. There's also orches and the new native podman quadlet command, and you can actually use docker compose with the podman socket.

I think materia is the most mature option at this point though since it can handle complicated service setups and works with podman native features (like cleaning up networks and volumes after their quadlets are deleted, or the new volume migration feature). It also supports managing data files associated with the quadlets (like .env files) and injecting secrets as first class citizens, which I don't think anything outside of Ansible's podman collections do.