Да, это возможно
И да, это возможно в частых случаях, когда ip серый (точнее динамический)
Для этого нужен доступ к роутеру, который раздает wifi, необходимо в настройках nat включить перенаправление портов (это может называться переадресация, port forwarding и даже что то типа настроить серверв локальной сети), там нужно указать порт снаружи, ip адрес машины в локальной сети и порт, на который настроен сервис (он может отличаться от открытого порта снаружи)
Про динамический ip адрес, провайдер может выдавать внешний адрес временно, часто - на сутки, по прошествии времени он меняется (или нет). Но можно настроить dyndns (это внешний сервер dns который предоставляет способ сообщить dns серверу о том что ip адрес сменился), получишь доменное имя типа vasyapupkin.dyndns.org (провайдеров dyndns тьма, в т.ч. и стандарты по способу сообщения изменений об ip адресе), многие роутеры поддерживают парочку популярных, предоставляя в настройках соответствующий пункт.
Тогда извне можно будет подключаться не по ip адресу а по доменному имени, которое в любой момент будет возвращать текущий адрес (исключение те несколько секунд-минут, пока идет смена ip адреса и обновление информации об этом)
p.s. Редко (часто у мобильных провайдеров или когда сеть была сконвертирована из домосетки (прямиком из 200х) и не модернизирована по нормальному) никакого внешнего доступа из вне в принципе нет, даже upnp не работает (это протокол позволяет приложениям в локальной сети автоматически запрашивать открытие портов на роутере с перенаправлением). От таких недопровайдеров нужно бежать, подальше... максимум такое можно терпеть если там ну очень хорошая цена.