There is nothing snap specific here … if you have the interface plug defined, you simply start your service that listens on that port, like you’d do it without being inside a snap.
no, this would happen as well if you ran it outside of the snap as non-root user. to bind to such a low-numbered port you need to be root, ports below 1024 are in general reserved for admin use …
use sudo snap run --shell mycommand.caddy and it should work fine
I looked at the documentation of snap and found out that the daemon is actually a systemd service.
systemd service has a feature called “AmbientCapabilities=CAP_NET_BIND_SERVICE”, it will allow service bind a ports below 1024 and keep running as a non-root user.