Congrats on finishing this.

A suggestion for the Zulip team: email is the hardest part of setting up any self-hosted solution, and Zulip is no different. You covered a lot of bases in your email section: https://zulip.readthedocs.io/en/stable/production/email.html

However it's still too difficult for many people to setup an account with an ESP, get the SMTP creds, and configure Zulip to use it correctly. It's a big step for people newer to self-hosting. I would suggest meeting somewhere in the middle for those people, by offering a paid self-hosted tier that handles some of the "harder" stuff for them. You can see how the popular 3CX phone system does this for inspiration: https://www.3cx.com/docs/fqdn-management-allocation/

All 3CX accounts receive a FQDN and confirmation emails are routed through this managed service, no configs needed. You could charge perhaps $80/yr for this tier, so customers wanting to host their own data can do so, but have SMTP and DNS managed for them by providing them with a Zulip subdomain, like Slack does.

Interesting idea; it's not something I'd thought about. I definitely figuring out what SMTP server to use is the hardest part of Zulip server setup, and I had believed there was nothing we could really do to make it easier. I guess the concerns I'd have are:

* Do people running on-premises actually want us to be an intermediary for all the emails their Zulip server is sending? I would imagine if they were happy with that, they'd be happy to just use Zulip Cloud.

* How does 3CX avoid this service requiring them to do a bunch of anti-spam work?

For 1-click deploys, have you considered packaging for cloudron? It has other chat apps and it has automated email send/receive as well.

It looks like they are based on Docker; I imagine they could use https://github.com/zulip/docker-zulip. It seems like Cloudrun packages other apps, not the other way around?