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.
Thoughts and Prayers.
The real enterprise solution.
When I had home lab I used to use racktables - https://www.racktables.org/
but I’m not sure if this is what you’re looking for.
Ibrun my own gitlab instance where i have a repository with all my configs, scripts etc.
As well as a wiki that contains the admin guide with (hopefully) all the relevant infos in form of text and PlantUML graphs.The nice thing is… You can just ‘code’ the diagrams and use a PlantUML instance to render the graphs live
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 trillium that gets backed up every hour to my pc.
I also do a lot of python development so my project ideas get written down there too.
I’m not a fan of code is documentation because what happens when you step away for a month and you need to figure something out? In trillium I have a search bar. What do you have in the code?
I will second trilium. I use their sync server in a VM (which is backed up with the rest of my VM’s so its easy to drop back down should something happen). The app appeals to me, even after using Obisdian for the past 6 months (i’m a fan of markdown as well).
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 supports Mermaid plus many similar markup-based diagrammers.
[Edit: added link and more info]
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.
This is the first I’ve heard of Kroki. A quick glance at their site and wow! So many options for markup. I’ll be trying this out for sure
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.
Mine is, er, self-documenting, and my partner has instructions, in the event that I die, to plug the wifi router into the modem and unplug all the other crap. The router has a sticker saying ROUTER and the modem has a sticker saying MODEM.
Self documenting, eh? I may be familiar with the same process.
You just follow all the wires and read all the config files. Easy!
Exactly. It’s documented in the config files!
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 know that I would keep forgetting to update the docs, so my documentation are the ansible playbooks and docker-compose.yaml files that I use to set it all up.
That leaves anything that has to be done in some Ui undocumented, so I try to keep that to a minimum, which isn’t always easy (I’m looking at you authentik!).
Ideally I’d like to move in that direction. I have some Ansible roles that I use for initial configuration but I haven’t kept current. I’d like to get better about that as part of this project.
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.
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.
It is indeed Excalidraw
I think I need to do something similar with my cloud. It seem good both for organizing my cloud and for plain visual organizing training.
I use Ansible, Docker, and Emacs OrgMode files committed to Git. Diagrams are a mix of Miro and Graphviz. There’s also a few markdowns in there too. Joplin is used for rough notes only.
Joplin synced to webdav/nexcloud.
In all honesty, it is a hodge podge. Some are in my dokuwiki, some are plain text, some are markdown, some in my phone, lots on scraps of paper. Just about the time I get it all in one place I scrap my systems and start over.
I’m kinda like that too. But I’m redoing my setup and I wanted to try and redo the way I document things. Or at least try.
Comments inside the
docker-compose.yml
files?I’m just starting to dip my toes in docker. Most of my stuff is kvm and physical.
Due to a desire to get off Ubuntu I have a goal to rebuild everything on Debian and/or containers and would like to document as I go.
I use the wonderful https://draw.io to sketch up my homelab and which device hosting what service. More fun when it’s vidualized the way I want it 😊