Setting Up BTCPay Was Harder Than I Expected
And That’s Exactly Why I’m Writing This
When I decided to accept Bitcoin properly, I knew I didn’t want shortcuts.
No custodians.
No “crypto checkout” black boxes.
That said, yes, those are still supported at checkout. Crypto people are welcome here too. You’re not being judged. We see you. You probably took a few wrong turns, ended up holding bags you don’t really love anymore, and now you’re just trying to buy a decent T-shirt. That’s fine. Come in. Sit down. Absorb the culture. Lost souls are part of every family.
But there was one line I didn’t want to cross.
No trusted third parties quietly sitting between me and my customers.
If you look closely at the payment icons in the footer, there’s a small philosophical easter egg in there for those who know their Szabo.
I chose BTCPay Server because it aligns with how I think about money, sovereignty, and responsibility. What I underestimated was how much work that choice would demand.
Not intellectually.
Emotionally.
...
On paper, it sounds simple.
Get a VPS.
Install BTCPay.
Connect it to your shop.
Done.
Reality has more texture.
Renting a VPS wasn’t difficult. Understanding what should live where was. What belongs on the node server? What stays at home? What is actually private? Is it always private? What absolutely should never touch the public internet?
These are not academic questions. They’re the difference between running your own payment rails and accidentally turning yourself into a cautionary tale.
The Part Where Everything Is Connected to Everything Else
What blocked me wasn’t one mistake. It was the density of the system.
Tor bridges.
Onion services.
socat relays.
nginx sitting in the middle like an air traffic controller with zero margin for error.
A VPS acting as a narrow public interface.
A Start9 server at home, speaking only through Tor.
BTCPay Server insisting, correctly, on onion addresses.
And Shopify’s deploy app waiting on the other side, impatient and extremely strict.
Nothing here is fragile. It only looks that way because it’s precise.
Ninety-nine percent of this setup is configuration. Files that will quietly sit there for years, doing their job, until one day an update comes along and politely demands your attention. If you ignore it, things break. If you don’t, they don’t.
I spent ten years working as a web developer, and I still struggled with this. I genuinely can’t imagine how this feels for someone thinking, “Hey, I’ll just add Bitcoin payments to my Shopify store, easy, we’ve got YouTube, ChatGPT, and a cup of coffee.”
No.
You can’t blindly follow steps here.
Every decision is a small meditation on internet exposure, security, privacy hygiene, and the unglamorous rules that keep breaches theoretical instead of personal.
Only after careful study, deployment, and a lot of testing do you earn the right to say:
I am my own fucking Mastercard gateway.
And even then, it’s not a solo achievement. Which is why I offer a 21 percent Bitcoin discount. Bitcoin purchases give me less margin, but they matter more. They signal that the Bitcoin economy is waking up, slowly, quietly, and most importantly, that it actually works.
When Nothing Looks Broken and Nothing Works
One of the hardest phases was when everything seemed fine.
Firewalls were solid.
nginx configs looked clean.
Tor bridges were up.
And yet: payments didn’t load. Connections timed out. Logs said absolutely nothing useful.
Silence is brutal.
Shopify adds another layer here. Their security rules are tight, and for good reason. But it means Bitcoin payments happen on the thank-you page, not during checkout. From a user experience perspective, it feels like a well-orchestrated hack rather than a first-class citizen. It works, but it reminds you that Bitcoin is still squeezing through gaps in systems that weren’t designed for it.
That tension shows.
When You Realize You’re the Infrastructure
The hardest part wasn’t a specific bug. It was the realization that choosing sovereignty also meant choosing to become the support desk.
There were endless back-and-forths with ChatGPT. To be fair, it helped a lot. Progress was constant. Small eureka moments stacked up faster than despair.
At various points, I was juggling:
A VPS I wasn’t fully convinced was configured correctly
A reverse proxy that had to be exact
Tor connections that worked perfectly or not at all
And a shop frontend patiently waiting while I questioned my life choices
There’s a very specific frustration that comes from knowing why something matters, while still not knowing how to make it behave.
This was the real test.
Making a Tor socket talk to a reverse proxy without exposing anything accidentally feels like threading a needle while wearing gloves. Most guides assume you already know what you’re doing. Success stories skip the evenings where nothing works and you walk away just to avoid breaking something out of spite.
The tools aren’t bad.
They’re honest.
They surface complexity instead of hiding it.
Why I Didn’t Quit
It would have been easy to say “Bitcoin payments coming soon.”
Or to outsource the whole thing to a third party and move on.
A lot of shops do that.
But real sovereign Bitcoin payments don’t work that way. And the way we accept money shouldn’t either.
Every obstacle sharpened my understanding. Each fix made the system calmer, quieter, more predictable. When it finally worked, there was no rush of excitement.
Just relief.
The good kind. The kind that suggests it’ll still be working tomorrow.
If You’re a Merchant Reading This
If BTCPay feels intimidating, here’s the quiet truth:
Struggling usually means you’re doing something meaningful.
You don’t need to be a sysadmin. You don’t need to memorize acronyms. You need patience, curiosity, and the willingness to look directly at how your money flows.
If you’re stuck, really stuck, and wondering whether it’s worth it, you can reach out. I’ve been there. I’m still there, just one layer deeper.
I won’t sell you a service.
I won’t promise simplicity.
But I can help you think it through.
Because merchants running their own rails is how this grows. Slowly. Properly. 🌱
After taking the time, stepping away when needed, and testing things thoroughly, I’m confident this setup is now solid. No hiccups. No obvious vulnerabilities. Just infrastructure doing its job quietly in the background.
Which, in the end, is exactly the point.