Prebuilt Docker container + sane docker-compose for the bot functionality... with automatic builds on CI. I started work on this, and I may as well send this upstream.
Good Point. We're using docker for some development ease-of-use but not in production AFAIK. Currently we're using ansible to configure remote machines in an automated fashion which works quite well for production but is not that easy to reproduce for local development.
Better bot hosting documentation
Hosting is not something we want the regular user to have to do on their own, it's a "power-user-only" feature. That's why there hasn't really been throughout documentation.
What we really should document is all the potential command-line options. I'll come back to this later.
STUN/TURN/ICE? ZeroTier integration? Some other form of working around NAT?
Good thing you consider that
I have actually read a little bit into this but haven't really found a satisfying solution for us.
I ended up with an approach that requires some manual configuration, but works for everyone that bothers to try. See https://forums.triplea-game.org/topic/1970/how-to-host-using-a-relay-service for more information.
Basically you can provide a "public IP" that clients will use to connect to instead of the originating IP.
What exactly breaks client-side hosting?
I'm not entirely sure what you mean. There are basically "2 ways" to host. If you're trying to register your server at the lobby, the lobby will check if it actually can establish a connection and the client will shut down if it can't open a TCP connection. However if you don't try to connect with a lobby in the first place and try to host "locally" you should be able to ssh-forward as much as you want.
What's the state of 2.X?
Hard to describe. Basically we're in a state where we'd like to create a new real release, but there are a few "common bugs" on some machines (like StackOverflowErrors) that we need to get fixed before commiting to it.