But when I set net_gameHost to the external IP and leave net_accountHost and net_chatHost to localhost, the account server works but obviously can't connect remotely.
Taken from the doc:http://doc.manasource.org/manaserv.xml
The IP or hostname the account server will listen to. Don't use the 'localhost' value when running a public server, but rather the public name or you won't be able to contact the game server when using MySQL for instance.
The localhost value won't work from outside in any case.
A few months ago being behind a router wasn't an issue as I was able to successfully open the account server and game server without issues and friends could connect.
--> Maybe you already found out how to fix it at the time.
What I have also noticed is when I set net_accountHost and/or net_chatHost to an external IP address, the account server crashes. But when I set net_gameHost to the external IP and leave net_accountHost and net_chatHost to localhost, the account server works but obviously can't connect remotely.
When you say it crashed, do you mean it can't setup an enet host instead or it really crashed?
When you put a public ip to the game server, does it "crash", too?
I am not sure if it's even possible at the moment to run Manaserv behind a NAT and make it accessible to the outside. Maybe it could work when you run the gameserver and the accountserver with different config files where the own IP is the LAN IP and the IP of the other server is the external IP.
I'm sure you can. You'll have at least to add a nat rule on the router telling to redirect external messages destined to the public ip with the given ports in use to the local computer ip actually running the servers. The servers should then listen to the router delivering the messages, as it would act as internet, or 'the clients' for them.
I will shortly re-run my local server publicly and open a page with the problems and the configuration I used, and post the link here. I hope it will help