Самый простой способ, как уже упоминал комментатор, - разместить свой сервер на хостинге, таком как heroku. Ngrok также подходит для разработки, но URL - это очень длинная и запутанная строка, которую ваши друзья не будут рады печатать.
Причина, по которой вы можете получить доступ к вашему серверу из локальной сети, но не из Интернета, заключается в том, как работает ваша внутренняя сеть. Если вы заметили, что все ваши устройства, подключенные к одной и той же сети (WiFi), имеют один и тот же общедоступный IP-адрес, а также имеют собственный частный IP-адрес во внутренней сети (обычно это что-то вроде 192.168.xxx.xxx.). Поскольку машины находятся в одной (частной / внутренней) сети, они могут нормально общаться друг с другом. Вещи сложнее, хотя, если машина из Интернета пытается добраться до них.
Это потому, что машины в Интернете «знают» только о вашем общедоступном IP-адресе и ничего не знают о внутренней сети. Поэтому, когда запрос достигает вашего маршрутизатора, он отбрасывается, так как неясно, на какую машину он должен идти. (На самом деле это функция безопасности, поскольку запросы могут инициироваться только из внутренней сети).
Однако вы можете зайти в настройки вашего маршрутизатора (обычно это можно сделать, набрав 192.168.0.1 из любого браузера / устройства, подключенного к локальной сети) и найти настройки NAT (преобразование сетевых адресов).
Затем вы можете сопоставить порт 80 - порт http по умолчанию, хотя вы можете использовать любой порт вашего маршрутизатора на [private-ip-address]: 3000 вашего компьютера, где [private-ip-adress] - это локальный IP-адрес компьютер, на котором размещен сервер узла (возможно, что-то вроде 192.168.xxx.xxx).
Если все сделано правильно, ваш сервер будет доступен из открытого Интернета всем, кто знает ваш публичный IP.
Покупка доменного имени и его использование также требует некоторых дополнительных шагов: это потому, что обычно общедоступные IP-адреса, предоставляемые интернет-провайдерами «домашним» клиентам, динамичны и время от времени меняются. Таким образом, вам нужно будет использовать службу DNS (некоторые бесплатные существуют там, лично я использую этот один), чтобы убедиться, что имя домена всегда указывает на правильный общедоступный IP-адрес!