How would that work? The provider / vendor of whatever app or service you are using would need to know that they need to contact that server to send a notification to your device.
Apps on android register push notifications with the Google Play Services daemon on your phone, which in turn registers them on Google Cloud Messaging. Google Play Services is the non-open source part of Android that makes Android a proprietary operating system.
MicroG is an open-source reimplementation of Google Play Services, used on Android variants like CalyxOS and Lineage OS. MicroG currently only supports registering push notifications on Google Cloud Messaging, but I would love to have an option for self-hosted push notifications.
Right now looking at my MicroG, I have 77 apps registered to use Google Cloud Messaging.
One benefit of using MicroG at least, is that Google doesn't know who owns the phone getting the push notifications. There is no Google acount or any other identifying data, the IMEI, serial number, etc is randomized and fake.
Yes, the local client part is clear. But for the server part to be self hosted, the vendor would need to know how to reach you / your device.
Currently, they only go "hey, I have a message for user "Justin "! Google, can you make sure they get it?". And Google takes that message, figures out which backend server your phone is currently connected to, routes to that server, the server hands it to your phone, and then you get a nice ad about CandyCrush or whatever.
If you were to host your own server, there would be an additional layer of figuring out which backend this message needs to be routed to. And for that, every vendor would need to maintain a list of backend and which users / devices are using which. Or, a third party (Google?) would need to offer a service that does this part for the vendor.
This would technically be possible, but as far as I know is not a part of the current "standards" for push notifications.
Ah, OK. I thought it was the Google side that held a connection to the app server. If the app server is sending reqs to Google Cloud then that's not really possible, yeah.