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.