pull down to refresh

I wanted full control over my Bitcoin stack — including push notifications.

So I built a fully self-hosted BlueWallet push setup and it now runs stable in daily use.

No public push infra.
No shared backend.
No external notification dependency.

Full stack sovereignty.


🔥 What this setup does

• BlueWallet fork using MY Firebase project
• Own GroundControl push server
• Own Bitcoin node + Electrum backend
• Runs on self-hosted infrastructure (Umbrel + Start9 + LAN + VPN overlay)

Push notifications now come entirely from my own stack.

If BlueWallet infra disappeared tomorrow → my setup keeps working.


⚡ Why this matters

Push infrastructure is one of the last hidden centralization points in many Bitcoin apps.

If you can self-host:
• node
• electrum backend
• mempool
• lightning

… then you can also self-host push.

And it’s actually not that crazy once you wire the pieces together.


🧱 Architecture Highlights

• FCM tokens managed server-side
• GroundControl indexing from my node
• Custom UI fork to support my push pipeline
• Fully reproducible build


🧪 Real world tested

Running on:
• real wallets
• real notifications
• real transactions
• real daily usage

Not just lab setup.


🛠 Repos

BlueWallet GC Fork:
https://github.com/Alex71btc/bluewallet-gc

GroundControl:
https://github.com/Alex71btc/GroundControl


🚀 Next Level Ideas

• Self-healing blockworker (auto tip recovery)
• Push retry queue
• Optional alt notification rails (ntfy / Nostr experiments)


If you are already running a node:

You are 80% of the way there.

If you are running some kind of server, a node + electrum server:

You are basically ready.

Running my own ground control server was my goal since I first tried Blue Wallet in 2022---achieving it was easy with a little help of Ai ;-)

Happy to share notes or help others replicate this.