So, you’re working on a project or learning how to implement something new to you and you have to do some research online. You begin by going to https://www.duckduckgo.com and doing your search. It comes up with possibilities. You follow those as links to something you think will tell you the ins and outs. Only you find that it’s more of what someone else said in another link but it’s different. You read it and find that half the answers people are giving are just not consistent or are a different way of doing things or the post is so old that it makes no sense to keep reading. So, you go back and you look for more. Maybe you change your search terms.
In the end you wind up with something that looks like examples and you look, read and compare them to your attempts. You find that it simply brings more questions up. You think to yourself that you are never getting full answers. You get just little tidbits.
At this point you are willing to go and read a bunch and you find guides that they themselves are way out of date, are inaccurate, or just plain structured in a way that makes it near nonsensical to the average person.
You adapt. You choose to do as much as you need to get it implemented and working. But you think that you’ll have to come back and read more. The problem is those links still exist and what you think now of them will apply in the future searches.
Here’s an example. I implemented reverse proxy so that I could put some websites into some containers and other services into their own containers. Well, you only have one IP address to your location so you need to use virtual hosts in your web server configuration. That’s not too hard. You then realize after months of this working that your fail2ban isn’t banning fraud attempts to log in. You find out that no one told you that you needed to load extra modules just to pass the IP of the visitor to your container so the log files are properly written with the visitors IP.
Alright, then you realize that you should be looking at your logs and wish there were better reporting mechanism so that you can view all the logs for all your containers in one place. Well, no one told you to use rsyslog instead of syslog. OK, you figure that out, but it would have been helpful to know that upfront when you initially set it up. It would have saved you a lot of time.
Then you decide that you need to update your certs every 90 day for 5-9 different containers. You’d like to do it automatically but the DNS method requires that you have an API key from your registrar to allow the Certificate Authority (CA) to add a TXT record and renew the cert and then remove the TXT record. You didn’t even know that there was an API key because no one told you. You find out about it in an off-hand way.
Then you find out that your router software will allow you to get certs automatically, however, how do you get those into your containers? Then you find out that you don’t need to have certs in every container which you thought you needed because your sites failed to work without them. Watching a video eludes to the idea that you don’t need certs in every container but the video doesn’t say how to configure the containers to work without certs letting the reverse proxy itself handle verification.
No one told you. It’s not like this is complicated. You just have to give the bigger picture. There are too many guides that don’t just discuss a topic. They devolve into a series examples that are partially implemented that don’t actually cover all the topics. This then leads to you having to do more searching and so, what the hell.
When you write a guide cover all the topics. Don’t break them down into small pieces intending to add them to your blog later which you never return to do. Don’t write the articles or blog posts if you aren’t prepared to do it right. A more lengthy complete article is better than short ones that are supposed to have follow up articles that you never complete. Also, don’t link to other articles from other sites that you don’t have control over. There’s nothing like following a link that’s supposed to have some information that touches on what you are working on only to find it is a dead end as the page is missing.