Using Pi's to run the hub is technically feasible (and I do plan on trying it on my end). Port forwarding is not needed. The Pi only needs to be able to initiate a connection to the server.
Google FCM is used for delivering notifications to the app. The server asks FCM to do so when needed.
Google FCM is used for delivering notifications to the app. The server asks FCM to do so when needed.