This biggest problem i can see is making sure your server remains the 'host'.
If it somehow gets disconnected from the signalling server, then one the players trying to connect to the game will become host, and you will have trouble getting back the 'host' position. You could try and have a condition that if player is host when connected, then disconnect from signalling and put a 5 second waiting period. The problem with this however if a lot of people are trying to connect, you will have a hard time connecting and becoming the host again.
My way around this:
I run windows server 2012 R2.
I have a my own copy and license of the signalling server running locally so if the server somehow crashes, it automatically detects it and runs a .bat file shutting down the physical server.
When i re-launch the server, i make sure the internet connection is disabled first, making sure all the game 'servers' are running, then i open up to the internet, allowing all the players to connect.
On the actual set up, again i run windows server 2012 R2.
All my game 'servers' are running via minimized nodewebkit, so very few resources are used. *though when changing something via graphical environment will kill any framerates unless the server has a dedicated GPU. So make you make any changes before you open the game up to the internet.
I use a modified version of the multiplayer plugin which allows the use of multiple multiplayer objects, allowing the creation of dedicated chat servers and various game instances, all whilst communicating to each other. (very handy)
Another thing you should note, if you start creating the server and the client separately, any objects that require syncing will not sync at all. This is because (even though you may have copy and pasted the object over), the object will be using different iid's. To fix this you need to go into the save file of each one, and change the iid of the object to that of the servers version, or the other way around.
I hope some of this answers your questions,