Like soup-to-nuts. I know I need to document what I’m doing and I’ve started several times, but then I never go back and make updates. I don’t know if it’s just the ADHD or if I’m just going about it or thinking about it in the wrong way.

So I’m curious about:

  • what you use for your documentation
  • how you organize it
  • what information you include
  • how you work documentation into your changes/tinkering flow

Edit: Dang, folks! You all have given me a lot to read through, think about, and explore. Thank you!

  • esc@piefed.social
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    I write everything in text editor first, apply later.

    1. emacs + org-roam
    2. by using descriptive names for articles and tags
    3. everything at the start, trim it down later
  • SreudianFlip@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    ADHD: functional notes in abbreviated version on fat strips of painter’s tape on server case or shelf. Passwords go on page dedicated to that server or service in a little black notebook, then eventually in a password manager.

    Readme file if my brain lets me, usually 3 months later after hyperfocus on troubleshooting.

  • tobz619@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    NixOS because it’s declarative kind of does it all for me.

    The .nix files serve as their own documentation and if I need to do anything outside them I add a comment to the .nix file.

      • SkyNTP@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        Documentation is for onboarding other people. Why on earth would I need to onboard other people to something self-hosted?

        • BlindFrog@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          Sometimes future me has the memory of a goldfish, and I fear that, for future me, the online sources that guided me before won’t be there for me anymore

      • frongt@lemmy.zip
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        “I can remember that” is my cue to write it down, because I won’t.

    • Buck@jlai.lu
      link
      fedilink
      English
      arrow-up
      0
      ·
      3 months ago

      The theory is I use Docmost. The reality is I don’t, and I hope my backups are solid.

      • MajinBlayze@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        I have an obsidian document where I write changes I want to do in the future that I never look at; does that count?

        • foggy@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          I just found my todo list and half of it is irrelevant and half of it is done.

          I even had a work todo list for my old job lol.

        • Buck@jlai.lu
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          Ouh! I have a checklist of things I need to add/update too, that I never check. Maybe we could mutualize! ;)

  • dogs0n@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    I just create a README.md file wherever I setup services with docker compose which keeps top level docs so I know how and why certain things work.

    Other than that, if comments are supported inside configuration files, also document stuff in there too.

    That’s been good enough for me.

  • atzanteol@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    The fun thing about infrastructure as code is that the terraform, ansible and k8s manifests are documentation.

    I only really need to document some bootstrap things in case of emergency and maybe some “architectural” things. I use joplin for that (and many other things).

    • BruisedMoose@piefed.socialOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      3 months ago

      Without really knowing much about it, I just always figured it was overkill for me. Plus I don’t know that I’d even consider myself much more of a beginner with Docker. But you all are making me consider looking into it.

      • atzanteol@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        I get that - it’s difficult to see the point in it until you’ve gone along without it. Especially as a beginner since you don’t have a strong sense of what problems you will encounter and how these tools solve those problems.

        At some point the learning curve for IaaC becomes worth the investment. I actually pushed off learning k8s myself for some time because it was “too complicated” and docker-compose worked just fine for me. And now that I’ve spent time learning it I converted over very quickly and wouldn’t go back… It’s much easier to maintain, monitor and setup new services now.

        Depending on your environment something like Ansible might be a good place to start. You can begin even with just a simple playbook that does an “apt update && apt upgrade” on all your systems. And then start using it to push out standard configurations, install software, create users, etc. The benefit pays off in time. For example - recently (yesterday) I was able to install Apache Alloy on a half-dozen systems trivially because I have a set of Ansible scripts that manage my systems. Literally took 10 mins. All servers have the app installed, running, and using the same configuration. And I can modify that configuration across all those systems just as easily. It’s very powerful and reduces “drift” where some systems are configured incorrectly and over time you forget “which one the correct one?” For me the “correct one” is the one in source control.

    • AliasVortex@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      3 months ago

      That’s the direction I’m moving my lab in. Plus a bit of supplemental markdown to keep track of which guides I’m referencing (and which parts can be ignored because I baked it into the terrafom). It’s really nice to know that as long as I tweak the terraform for changes, I don’t have to worry about forgetting what I changed.

  • VexLogic@feddit.online
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    I’m actually in the middle of rebuilding my entire setup right now and one of my major goals is to actually document my processes this time.

    I use Obsidian which is a Markdown editor and I have a couple plugins alongside that for QoL stuff and extra features.

    I document processes, problems and fixes I encounter, list of active services alongside where/how to access them, and plans for future additions/changes.

    As far as working documentation into your flow, realistically that is just a matter of discipline. It is explicitly up to you to stay on top of documentation.

    Hope that helps, and good luck with your endeavor! 😁

  • Agent641@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    Why do you have to be like that? Drop the innocent questions and just come right out and call me a piece of shit directly.

  • Nibodhika@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    The moment you think you might possibly need documentation is the moment you should seriously consider using Ansible or similar to orchestra things. Sure, it’s annoying for a single server, but it is the best form of documentation there is.

  • DetachablePianist@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    I run Adguard Home containers (the primary auto-syncs to the secondary) and use redirect filters to assign hostnames to each of my containers. I have a “services” folder of bookmarks for each container host so I don’t have to remember each service’s port number. I use KeePassXC to track all my passwords and certificates so authentication is a breeze (someday I’ll get around to setting up an SSO solution). I also keep a .txt file with my basic network info that doesn’t always translate well to dns hostname redirects in adguard. I occassionally remember to update my hosts listed in the file. My individual config files aren’t backed up beyond my automated container backups, but so far none of my services have been that complicated I couldn’t just rebuild from scratch.

    It’s not perfect, but combined with my automated backups I have barely enough to rebuild if/when my hardware fails.

  • Trincapinones@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    I’m just rewriting everything in Ansible and I think is worth the effort, it’s self-documented and as an added bonus I won’t have to keep backups of the whole VMs, just the ZFS pool with the data/databases.

  • Strider@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    Short: don’t do anything manually, throw it into a ansible playbook. Save it somewhere.

  • TrickDacy@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    A great question. First of all, all of my services run with docker compose and use volumes for their config storage which get backed up regularly. Then I just use markdown files organized by having a separate file for each service. Basically anything I would need to reproduce my setup on a new machine is what I try to write down. All the docs and compose yaml files are versioned in git. I usually realize I left out info later on and add it as it occurs to me, typically if I have to set up the services on a new machine. This all applies to any software that needs more than a little config, not just apps hosted for the purpose of other machines using them. It’s a very imperfect process, but it’s a ton better than what I used to do which was think “eh I’ll remember how it’s setup”. I rarely would remember all the key details.

  • bizdelnick@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    It is hard, if even possible, to keep documentation up-to-date. Better use a configuration management system (salt, ansible etc.) for your servers. Yes, you need to learn how to use it. Yes, it will take a longer time to make changes in your configuration. But as a result you’ll have a self-documented configuration-as-a-code that will allow you to scale your setup as you need. Reproducing something won’t require reading your notes, remembering your actions etc.

    • IratePirate@feddit.org
      link
      fedilink
      English
      arrow-up
      0
      ·
      3 months ago

      But as a result you’ll have a self-documented configuration-as-a-code that will allow you to scale your setup as you need. Reproducing something won’t require reading your notes, remembering your actions etc.

      Until you realise that

      • you don’t really need to scale a homelab that much
      • if something breaks, you just want to quickly fix it manually because “doing the Ansible” is more of a pain
      • now idempotency and documentation-as-code is out of the window. ;)

      (I’m being tongue-in-cheek here. I don’t doubt this may work for you, but it takes much more discipline than I have.)

      • magic_smoke@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        Yeah as someone who does both ansible is for repeatable multi-system commands like telling everything to update or configuring a local agent on every machine at once.

      • bizdelnick@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        you don’t really need to scale a homelab that much

        Maybe. But you never know this beforehand.

        if something breaks, you just want to quickly fix it manually because “doing the Ansible” is more of a pain

        In most cases you just need to replay a playbook for quick fix. But I agree that the proper fix will likely take a longer time (while downtime is much shorter).

        now idempotency and documentation-as-code is out of the window.

        Let @[email protected] decide.

        P. S. I don’t like Ansible, other tools can be easier to use. But I don’t want to recommend something concrete.

        • IratePirate@feddit.org
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          I don’t like Ansible, other tools can be easier to use. But I don’t want to recommend something concrete.

          Which ones do you like to work with? (Even though it’s not a recommendation ;) I’ve only dabbled in Ansible so far and found it overkill for most of the things I do, but maybe one of yours isn’t?