Существуют сетевые протоколы, которые с некоторой долей везения будут работать даже если ОБЕ стороны за NAT (т.е. и сервер и пользователь), основаны на UDP и для их работы обычно требуется третий сервер с ip адресом, но не для передачи данных, а только для соединения.
Наилучшим приложением, которое позволило бы работать с данными в нескольких местах с их синхронизацией по сети, даже при отсутствии выделенного ip адреса - это syncthing (opensource, работает везде, по до все платформы, от PC до android и iphone).
Под вашу задачу может и не подойдет, так как это инструмент синхронизации данных, которые все должны храниться на обоих сторонах... зато работает без каких либо телодвижений и настройки (ну может в северной кореи и будущей России потребует настройку своего STUN сервера, у syncthing он тоже opensource) и естественно не требует хранение этих данных где то в облаке.