A tiny mouse, a hacker.

See here for an introduction, and my link tree for socials.

  • 0 Posts
  • 7 Comments
Joined 3 years ago
cake
Cake day: December 24th, 2023

help-circle

  • We pay more for ingress of logs than service uptime

    I cried on this part, it hit home so hard. My homelab went down a couple of months ago, when Chinese LLM scrapers hit me with a wave of a few thousand requests per second. It didn’t go down because my services couldn’t serve a few k requests/second - they could, without batting an eye. However, every request also produced a log, which was sent over to my VictoriaLogs, behind a WireGuard tunnel, running on an overloaded 2014-era Mac Mini. VictoriaLogs could kind of maybe handle it, but the amount of traffic on the WireGuard tunnel saturated my connection at home, which meant that the fronting VPS started to buffer them, and that cascaded into disaster.


  • I used to use flake-parts, but I organize my flakes in a very different way (I generate a single, bigass flake.nix out of tiny org files), and found that frameworks like flake-parts and flakelight just get in the way. I suspect they’re useful if you’re working with Nix directly, but… I don’t like Nix (the language), so I do my organization outside of it.



  • I use systemd services when I can, and fall back to podman containers when - for one reason or another - the systemd services aren’t a viable option. There are currently two services I run in containers: the glitch-soc fork of Mastodon (because I have no desire to compile it myself, and their container image is the next best thing), and Wallabag (because at the time I made my config, the nixos module for it wasn’t in a good shape). Everything else (about a dozen other services) runs as a systemd service.

    My primary reason for this is that before NixOS, I used containers for all of these, and keeping them updated and functional and at a reasonable size was a pain in the backside to say the least. Especially if I wanted to patch something (I often patch my Forgejo instance, for example). If I need a patched version, or an updated version, I can easily do that with overriding a few attributes in the vast majority of cases - I do not juggle stable & unstable.

    Using the NixOS-provided modules also allow me to configure all of these using the same language: Nix. While it’s not a language I like, I hate it much less than I hate YAML and all the others. Using Nix for configuration lets me wrap it all in Org Roam, easily, which makes it very easy to document my configuration thoroughly and completely, and also allows me to organize it in a way that makes sense to me. Generating YAML from Org is a much, much, much more painful thing.