For the geekier types, here's what I did:
- I configured our Xfinity gigabit cable router to allow inbound connections to a specific port at our public IP address. These inbound connections are NATted (not PATted, as the cable router isn't capable of that) to an IP address (the target address) assigned to the Mikrotik router in my house.
- I configured the Mikrotik router to PAT from the target address and port to the address and port of the web server on the Raspberry Pi that hosts my irrigation supervisor.
- I set up an account on the free Dynamic DNS provider DuckDNS, and installed a simple script (provided by them) on my Mac Mini server. This script runs (via cron) every five minutes, and it updates the mapping between my domain name and my external IP address. Xfinity can change my public IP address anytime they feel like it, and it seems to actually change on the order of weekly (though I've never tried to actually track it).
- I configured a new URL redirect record at my domain name provider (Namecheap), who also hosts my public DNS records. This allows me to refer to a subdomain of a primary domain that I own, instead of DuckDNS's primary domain. It's also convenient, as the redirect takes care of the funny port number, and I don't have to type it in. I'm lazy, what can I say?
Anyhoo, it's all working now!