My home lab has a mild amount of complexity and I’d like practice some good habits about documenting it. Stuff like, what each system does, the OS, any notable software installed and, most importantly, any documentation around configuration or troubleshooting.
i.e. I have an internal SMTP relay that uses a letsencrypt SSL cert that I need to use the DNS challenge to renew. I’ve got the steps around that sitting in a Google Doc. I’ve got a couple more google docs like that.
I don’t want to get super complicated but I’d like something a bit more structured than a folder full of google docs. I’d also like to pull it in-house.
Thanks
Edit: I appreciate all the feedback I’ve gotten on this post so far. There have been a lot of tools suggested and some great discussion about methods. This will probably be my weekend now.
Well, whatever you end up using for documentation, print it out and actively maintain an up to date paper hard copy in a 3-ring binder somewhere. That way when all your shit falls over and you have a nonfunctional LAN you can still remember how everything was set up. Don’t ask me how I know…
Documentation is not worth much if you can’t access it when needed. So yes, either print it out or store it somewhere else what you can access even if your own hardware is completely dead.
+1 for hard copy. Hang/tape right on or next to the rack.
Thoughts and Prayers.
The real enterprise solution.
Mine is, er, self-documenting, and my partner has instructions, in the event that I die, to plug the wifi router into t he the modem and unplug all the other crap.
Self documenting, eh? I may be familiar with the same process.
You just follow all the wires and read all the config files. Easy!
As I move to more self hosting, it’s becoming more and more important to create a “what to do if I die” procedure for my wife (or even children) to follow. I mean it’s not big deal if the plex server goes down and doesn’t come back up, I’m thinking more along the lines of all of our photos, important documents, password manager, those type of things. I have 3 - 2 - 1 backups for the important stuff and have tested them, but that means nothing to my wife if I wasn’t around to get that stuff back if something happened… I wonder some days if I should document it all and put a print out with a step by step guide on how to get everything back that a semi tech savvy person could follow.
Yes, I really need to do this too. It’s a fairly daunting task because my significant other is not at all comfortable with even slightly complicated operations on a computer. I need to figure out a way to make a really easily accessible backup of everything.
I’ve been using Obsidian for a lot of other purposes for a couple years now, so I was comfortable adding my documentation into my existing vault there. I made a couple templates that I fill out for any hardware/software/networking equipment.
Since the app’s selling point is storing all your notes in plain text I wouldn’t put anything security-related in there without some encrypted container. I use KeePass for that part, and keep the file it generates in the same folder as Obsidian so I can link to it within notes. Click the link in the note, KeePass opens the vault and asks for its password.
I use obsidian too. It supports mermaid too so you can make your network diagram with it.
This is the 2nd ref I’ve seen to mermaid. I need to check that out.
I love Mermaid, although I don’t think you can currently do network diagrams. I’ve seen Kroki recommended here for doing that, which I believe is the same idea (mark-up to image) but has some extra capabilities.
I would not consider Mermaid complete enough for network diagramming. The very basics are possible, but try to describe anything more complicated throws off the placement and makes the pathing whacky.
Straight flow charts are the closest you can get to a network diagram, so if you try to draw a link that travels back up the chart, it breaks mermaid’s brain trying to figure out the order of decision points (network devices).
The allure of text based diagrams is so tantalizing - but if you need them to be functional, it’s not going to happen
There’s an issue tracking the need a new diagram type to handle it.
Mind sharing your template?
Sure.
I left everything in, so no doubt there’s stuff in there specific to my vault you won’t need like metadata - adjust these to your needs or use them as a starting point for something new. There’s no network device template, I usually use the hardware one and just delete the irrelevant bits.
Thanks!
I use WikiJS for documentation. Simple, powerful and has a lot of features
+1 for WikiJS. As a bonus you can have WikiJS back itself up to plain text MarkDown files, so if things explode you can always just read those from wherever.
Another great feature I use is to have WikiJS back itself up into git. If I am going to a place with no internet access I can do a quick git pull and have a complete copy of my wiki including files on my laptop.
Git, MinIO, Amazon S3, Filesystem and many more options to for backup🐱
Can’t wait for v3 finally
ansible, self-documenting. My
playbook.yml
has a list of roles attached to each host, each host’shost_vars
file has details on service configuration (domains, etc). It looks like this: https://pastebin.com/6b2Lb0MgAdditionally this role generates a markdown summary of the whole setup and inserts it into my infra’s README.md.
Manually generated diagrams, odd manual maintenance procedures and other semi-related stuff get a section in the readme (you can check the template here). Ongoing problems/research goes into the infra gitea project’s issues.
I was going to recommend Ansible as well - documentation as code can never be out of date if you continue using it.
deleted by creator
For me, making a graph is the best documentation, everything else is in config files.
If I really do need to takes notes, It’s currently in notion but I’m hoping soon I’ll be able to self-host AnyType (https://github.com/orgs/anyproto/discussions/17)
That is quite the diagram. Thanks for sharing.
What software did you use to make this diagram?
It is in the diagram I think: “Excalidraw”
Also never heard of it and always nice to find new FOSS.
I’m using netbox, and I’m in the process of info dumping my brain to a media wiki. I may add ansible into the mix in the near future.
My lab is a bit large and complex and I’m currently in the process of trying to train help to run it, from the pool of people that make use of it. They know how the front end works, a few of them need to learn the back end.
I use draw.io for diagrams. Netbox to keep track of devices, IP addresses, and cables. MediaWiki for how to articles. Both Netbox and MediaWiki live on a VM both at home and offsite and they sync nightly.
I’m not very good at deciding on where to document things, so I have a mix of BookStack, Dokuwiki, and Obsidian currently.
I really like Dokuwiki but I like the UI/UX of BookStack better so I’m working on a plugin to sync bookstack and obsidian. I’ll probably get rid of Dokuwiki after that.
The main reason for syncing with obsidian is that I want documentation that isn’t stored on the thing it’s about, in case my servers completely die.
In another thread, someone reminded me that TiddlyWiki still exists, it’s also a pretty cool little tool.
Almost nothing haha. Some half-ass notes saved here and there, in a disorganized manner.
My stuff works, but I don’t recommend my approach.
This is what I’m trying to get away from.
Same, my stuff continuing to work relies on thoughts and prayers.
I was going to say my notes are in Joplin, but my more honest answer is basically yours.
This is the way.
I’m defining my service containers via GitLab and I deploy them via tagged and dockerized GitLab Runners.
If something fails, I change the runner tags for a service and it will be deployed on a different machine.
Incl case of a critical failiure, I just need to setup a Debian, install docker, load and run the GL runner image, maybe change some pipelines and rerun the deployment jobs.
Some things aren’t documented well, yet. Like VPN config…
Ah yes, my router is able to access GitLab as well and pull the list of static routes etc. from it.
As someone not super familiar working in Git I’d love more details about your documentation for your setup. I have most of my containers organized in compose stacks that make sense (eg all the Arrs are in a single compose with the download client) but actually documenting the structure is … well nonexistent.
The thing is it’s not really a “documentation” but just a collection of configs.
I have organized my containers in groups like you did (“arrs”, web server, bitwarden, …) and then made a repository for each group.
Each repository contains at least a compose file and a Gitlab CI file where a aimple pipeline is defined with basically “compose pull” and “compose up”. There are alao more complicated repository where I build my own image.
The whole “Git” management is really transparent, because with Gitlab you can edit directly on the platform in a hosted VSCode environment where you can directlY edit your files and when your satisfied you just press commit. I don’t do weird stuff with branches, pushing and pulling at all. No need for local copies of the repository.
If you want to fulltext search all your repos, I can recommend a “Sourcegraph” container, but use version 4.4.2 because starting with 4.5.0 they have limited the number of private reositories to 1. But this is something for later, when your infrastructure has grown.
I went with dokuwiki forever ago. Super stupid simple single container to run (no DB) and writes down to plain text files. I sync it with git every now and then.
My only gripe about it is the dokuwiki syntax and not using normal markdown. I do now have a plugin for that but it’s still just ok. But at this point I might be too engrossed in it to ever really switch. But other than that it works well, is lightweight, has other plugins (email, mermaid flow charts, etc. etc.) and really is pretty maintenance-free.
DokuWiki is a name I haven’t heard in a long time.
Joplin has been my note-taking app of choice. Free (OSS); no accounts needed; simple; local; synchronizes through my Nextcloud instance to Linux, Windows and Android; markdown-based, etc. It’s been a good workflow for me and makes taking and searching through notes quick and pretty painless.
I document my setup, backup and restoration procedures (done rarely enough that it’s good to have it written down), etc. with it.