Why we build all this
Nobody maintains a 50-package APT repository for fun. Well, mostly not for fun.
It started because the packages we needed didn’t exist. We run mail servers, web servers and a handful of WordPress sites, and we kept hitting the same wall. Debian’s NGINX had no QUIC, so no HTTP/3. Angie wasn’t in any official repository. We wanted ModSecurity in front of NGINX with the OWASP Core Rule Set properly wired in, Postfix and Dovecot at their current releases, and php-snuffleupagus guarding PHP-FPM. Each of those meant a custom build.
So we built them. Once the pipeline existed and we were compiling everything for ourselves anyway, publishing the results was the obvious move. That’s deb.myguard.nl: a free, GPG-signed APT repository for Debian and Ubuntu with the packages we run in production. There’s no telemetry, no sign-up and no enterprise tier. You add the repository and apt-get install what you need. (If you’d rather run your own, we wrote up self-hosting an APT repository with aptly and how we keep Debian package builds fast.)
Repackaging only gets you so far. When an upstream module had bugs nobody was fixing, we forked it; the zstd module is the clearest example. When nothing existed, we wrote our own. Spam filters kept letting malware-laden attachments through, so we built Mailstrix. Putting a WAF in front of our own apps meant tuning out false positives, and those exclusions became CRS plugins. Most of what we learned along the way ended up in the articles section. The rule hasn’t changed: it runs on our servers first, then it gets published.
Want to try it? The quick start is further down. If you’d rather read first, good places to start are enabling HTTP/3 on NGINX, the Angie guide (including migrating from NGINX) and post-quantum TLS on NGINX and Angie.