Open a new AWS account and the default region is us-east-1. Spin up a DigitalOcean droplet and the first option is New York. Deploy to Railway, Render, or Vercel and your application data lands on US servers by default, sometimes without a way to change it.
Nobody questions this. US infrastructure is the path of least resistance. It's cheaper, better-documented, and has more community support than any alternative. If you're building a startup and you need to ship fast, you reach for AWS.
We understand that choice. We made a different one. The goal was to build a managed hosting platform where we could honestly tell customers: your application data doesn't leave Canada. Every layer of the stack is documented, including the one place we had to compromise.
Jurisdiction, not just geography
Most "Canadian hosting" providers blur an important distinction. A US company can rent space in a Toronto data center and tell you your data is in Canada. That's true in the geographic sense. It's not true in the legal sense.
Jurisdiction is determined by where the company is incorporated, not where the servers sit. In 2018, the US passed the CLOUD Act, which gives US courts a mechanism to compel American companies to produce data regardless of where it's physically stored. Toronto, Frankfurt, Sydney. If the company is incorporated in the US, a US court can issue a warrant or order for data access. Before the CLOUD Act, a US company could argue that data in a Canadian data center was outside US jurisdiction. That argument is largely gone.
CLOUD Act requests aren't blanket surveillance. They require a court order, and companies can challenge them. But the practical reality is that most companies comply, and the legal standard for issuing a request is not especially high.
This applies to AWS, GCP, Azure, Heroku, Railway, Render, Vercel, and Fly.io. They're all excellent products. They're all US-incorporated companies.
True data sovereignty requires three things: Canadian infrastructure (physical servers in Canada), Canadian jurisdiction (the hosting company is subject to Canadian law, not US law), and no US cloud dependencies underneath. Many providers get one or two of these. Getting all three requires actually building on Canadian-owned infrastructure.
The stack we chose
Every layer of the platform required a decision about provider jurisdiction. Here's what we landed on and why.
Customer VMs run on LunaNode, a BC-incorporated company (Corporate Registry #BC0997033) that operates its own infrastructure in a Toronto data center. Privately held, no US parent, no hyperscaler under the hood. We confirmed this directly with LunaNode. When a customer's application data sits in a LunaNode VM, it's in Canada in a meaningful sense, not just in a Canadian data center leased from Amazon.
DNS is managed through Bunny.net, a Slovenian company. EU-headquartered, GDPR-bound, no US parent. Not Canadian, but EU jurisdiction is a reasonable second choice. Bunny also handles our CDN for the marketing site. It only serves publicly cached content, specifically our marketing site assets and Coolify update files. No customer application data passes through it.
Transactional email goes through Cakemail, a Montreal company. Server-ready notifications, billing reminders, trial expiry warnings. All processed in Canada.
Business email is on mailbox (formerly Mailbox.org), a German provider. German data protection law is strict by default. Not Canadian, but German jurisdiction is well understood and the alternative, Google or Microsoft, means US law applies to every email in your inbox.
Our domain registrar is CanSpace, a Canadian company and accredited .ca registrar. The .ca TLD is operated by CIRA, a Canadian nonprofit. We also use CIRA's Canadian Shield as our DNS resolver: a free, privacy-respecting resolver operated by the same organization that runs the .ca registry.
Secrets management is 1Password, which is headquartered in Toronto. All API keys, credentials, and deployment secrets live there.
The deployment platform itself is Coolify (our stack), open source software we self-host on LunaNode. No data leaves our infrastructure for platform licensing. We manage the Coolify installation and keep it updated.
Database is PostgreSQL, self-hosted. Same story.
That's the stack. Canadian or EU jurisdiction at every layer, application data in Canada exclusively, no US hyperscaler dependency for infrastructure. Learn more about our Canadian hosting approach.
The payments compromise
The obvious choice for a Canadian business accepting recurring payments was Helcim. Calgary-based, interchange-plus pricing that's genuinely transparent, a well-documented API, subscription support. On paper, the right call. We applied and were rejected. Helcim's acceptable use policy lists "website hosting" as a restricted business category. Payment processors use broad merchant category codes, and "hosting" is restricted by some acquirers. The same code covers everything from shared hosting to enterprise cloud, with no distinction between a managed PaaS and a file storage service.
We understand the reasoning. Payment processors manage portfolio risk, and broad categories are how they do it. But it creates an unfortunate outcome: a Canadian business built specifically to keep data on Canadian infrastructure can't use a Canadian payment processor because of a category code.
So we use Stripe for automated billing. Stripe is a US-headquartered company. Payment data is processed in US data centers and is subject to US jurisdiction. We've written about this decision in more detail in our Stripe post, including what it does and doesn't mean for PIPEDA compliance. The short version: payment data crosses the border, application data does not.
For customers who want payments to stay in Canada, we accept Interac e-Transfer. Interac is a Canadian interbank network. E-transfers between Canadian financial institutions are processed domestically. The tradeoff is that it's manual: you receive a monthly invoice and send payment directly. No automated billing or self-service portal. If that's the right fit, contact us at hello@mapledeploy.ca.
We'd like to revisit this with Helcim as we build a track record. They have a review process for restricted categories, and we'll apply again once we have some history.
The tradeoffs
This is not a free choice. There are fewer infrastructure providers in Canada than in the US. We can't spin up a managed RDS instance, an ElastiCache cluster, or dozens of other AWS services. Every tool we add to the stack requires checking its jurisdiction before we can use it. Services we'd otherwise reach for automatically are off the table.
LunaNode is excellent, but it's not AWS. The managed service ecosystem in Canada is smaller, community resources are thinner, and some per-unit costs are higher. Payments are the biggest gap. Canadian payment processors exist, but the ones with mature APIs either classify hosting as restricted or don't offer the subscription lifecycle tooling a managed service needs. "Website hosting" as a flat prohibition doesn't distinguish between a cyberlocker and a managed PaaS. That's a problem the Canadian payments industry would benefit from revisiting as more Canadian software companies try to build on Canadian infrastructure.
The ecosystem is getting better. Companies like LunaNode and Cakemail exist and work well. CIRA has built infrastructure worth using. We'd rather build on the right foundation now than migrate later. We maintain a Canadian SaaS stack resource that catalogues the options by category.
Who this is for
Not everyone needs Canadian infrastructure. But some people want it, and that's a different question from "need."
If you're a Canadian developer who'd rather deploy on Canadian infrastructure because you think that matters, this is for you. You don't need a regulatory reason. Preferring that your tools and data stay under Canadian jurisdiction is reason enough.
If you're a Canadian business handling client data, if you operate in healthcare, legal, financial services, or government, if your clients have asked where their data lives and you couldn't give them a clear answer, this is also for you. The compliance documentation is there when you need it.
And if you're hosting a portfolio site with no data obligations and no preference either way, use whatever is cheapest and easiest. AWS is fine. Vercel is fine.
We built MapleDeploy because we wanted managed Coolify with a clear, honest answer to "where is my data and whose law governs it." The answer is Canada and Canadian law. We should be honest about the limits of that. Canadian jurisdiction means data requests go through Canadian courts, but Canadian courts do cooperate with foreign governments through MLATs and judicial assistance. And as a small company, we have fewer resources to challenge government requests than a large enterprise. What we can offer is a clear legal framework: Canadian law governs your data, and we'll be transparent about any requests we receive.
If you're building something and you've found a Canadian payment processor that handles managed hosting businesses with real subscription tooling, we're at hello@mapledeploy.ca.
MapleDeploy runs on LunaNode infrastructure in Toronto. Plans start at $45 CAD/month with a 14-day free trial on Starter and Pro plans. If Canadian data residency matters to what you're building, take a look.
See what Canadian-first hosting looks like
Dedicated VMs on Canadian infrastructure. Deploy a real project during your 14-day free trial.