I have finally got my selfhost wiki up to a satisfying shape. Its here: https://wiki.gardiol.org
Take a look i hope it can help somebody.
I am open to any suggestions about it.
Note: the most original part is the one about multi-homed routing and failbacks and advanced routing.
Thanks for sharing, very cool stuff in there and great job ! Bookmarked !
While reading through your reverse proxy concept post, I think this statement is wrong:
As a sub-domain: - Cons: require additional certificates for HTTPS/SSL for each sub-domain
There are actually wildcard SAN certificates where you can access all your subdomains with a single certificate:
https://*.mydomain.com
Or you can add all your subdomains in a single certificate.
Great work and thanks for sharing !
using wildcards is really bad security practice. and at age of ACME absolutely unnecessary.
Can you elaborate on why it is a bad security practice? It’s the first time I’m reading about it and I’d like to read more about it. Thanks!
One of the risks associated with wildcard SSL certificates is the increased attack surface they introduce. If one subdomain becomes compromised, it opens the door for potential attackers to gain unauthorized access to all subdomains secured under the wildcard certificate. (first google link)
While this argument is valid for a larger domain, it doesn’t really matter for the small selfhoster.
Using let’s encrypt certbot is so easy and automated that I never bothered for wildcards anyway, so.
The advantage of wildcard certificates is that you don’t have to expose each single subdomain over internet. Which is great if you want to have https on local only subdomains.
If you still use HTTP for cert verification on ACME, you are doing it wrong. Use DNS-01 only, there is no need to allow any inbound traffic to your servers. and HTTP will not give you wildcard anyway.
Yes, you are right, I already use DNS validation. But it is just it is easier to request a single wildcard certificate for my domain and have all the subdomains that I use for the local services defined only in my local DNS. I cannot fully automate the certificate renewal because namecheap requires to allowlist the IP that can call its API, and my ip is dynamic. So renewing a single certificate saves me time. Also, the wildcard certificate is installed on a single machine, so it is not the I increase a lot the attack surface by not having different certificates for each virtual host.
You are right and I would add that this is even a privacy and security measure, to make use of wildcard certificates. The reason is, those subdomains will be public because of websites like crt.sh which show all subdomains which have their dedicated certificate. Obfuscation can be helpful in not disclosing which are some services or naming schemes you use for yourself even if it is only meant to be for internal use.
The “obfuscation” benefits of wildcard certificates are very limited (public DNS records can still easily be found with tools such as sublist3r), and they’re definitely a security liability (get the private key of the cert stolen from a single server -> TLS potentially compromised on all your servers using the wildcard cert)