| Great article. While it mentions monitoring, it took me a long time to appreciate how beneficial it is to do monitoring really well. Things like: • Knowing when disk space, inode usage, or memory usage get high, long before it’s an emergency. • Automated monitoring of SSL certificate expiration dates, letting you know days before a certificate expires. Whether or not you use something like certbot, have a separate process that automatically tells you a certificate is close to expiration. • Automated periodic end-to-end testing of moving parts. Like if you run an email server, a process that sends something from your server to a gmail.com address, and then checks the gmail.com inbox to find the message. • Automated periodic testing that unexposed ports remain unavailable from outside the device or private network. • Automated checking that a Linux instance is successfully checking for and installing security updates, and is not waiting for a reboot.
• Automated checking that backups are working as expected. You might not be able to automate periodic restore testing, but at least check that backups do not appear to be silently failing.
• Separating out low priority alerts from high priority alerts. You want to get woken up when necessary, but not for an issue that can wait until you are at your desk. |
Benefits include:
- Security
- Ease of configuring traffic control: As long as you're not redirecting UDP (have fun lol), steering apps with HTTP or SOCKS5 forward-proxies is so much more straightforward than routing.
- Performance/effieciency (global package cache for your network!)
- Resilience (apt upgrades and docker image pulls can keep working despite your entire network being offline)
My rough starting kit for a Linux-based network here would be:
- Some caching forwarding internal DNS server. If you already have an internal recursor or forwarder great, but it's good to let the DNS server serving your clients be separate anyway. dnsmasq/unbound/technitium/coredns/powerdns/yadifa.
- Internal NTP for syncing time. May be provided by your DNS or DHCP server already. chrony is good.
- apt-cacher-ng or other caching forward HTTP proxy for your apt/dnf/pacman/apk/whathaveyou updates.
- docker-registry-server in mirror mode and set up as mirror for any docker/podman hosts you have.