Eu estava lutando com o mesmo problema com meu aplicativo da web Node.js ontem e finalmente encontrei o culpado e a solução .
O motivo do meu problema foi porque eu não configurei o encaminhamento de porta no meu roteador (BT Home Hub 5). Quando você está atrás de um roteador e deseja configurar um servidor que esteja visível externamente, é necessário "informar" ao roteador para qual dispositivo redirecionar as solicitações recebidas quando elas forem feitas com a porta do servidor.
A documentação de cada roteador é diferente, então você precisa procurar, mas não deve ser muito difícil descobrir.