Luke Cyca .com Issue CXLV   February 20th, 2025

Canadian VPS Review

Over a decade ago, I surveyed three Canadian VPS offerings. I self-host quite a few things professionally and personally, and over the years I've used AWS, DigitalOcean, Linode, and a handful of smaller VPS providers. I decided that in February 2025 it's high time that I take another look at Canadian providers.

My requirements are:

  • 2+ cores, 8GB+ memory, 140GB+ storage, 2TB+ monthly transfer
  • Just a Debian host with root access, thanks. No management or cPanel or anything. I'll configure and manage it myself with Ansible.
  • Fully Canadian owned, operated, and hosted
  • Transparent and geek-friendly (minimal marketingspeak)
  • Good value in the $20/m to $100/m range (CAD)
  • Somewhat automated and self-serve
  • Not too many layers of reselling. I want my provider to own some infrastructure and have skin in the game.
  • Good connectivity and peering arrangements

I reviewed the marketing and websites of dozens of options. Many were quickly disqualified as not actually Canadian. Here are the three that I purchased and actually tried out over several weeks:

KeepSec

Headquarters: Montreal, QC
Servers: Montreal, QC
Package: "Ruby" VPS
CPUs: 3 cores (apparently pinned)
Memory: 12GB
Disk: 275GB SSD
Transfer: Unlimited
Price: $103.48 CAD/month, including tax

This is a relatively new company that seems full of energy and active development. They are clearly aiming for a technical customer, which I appreciate. I was initially put off by gimmicks such as bitcoin payments and a referral rewards scheme where you can "win prizes," but was impressed with their technical marketing, breadth of features, and general engagement.

Globo.Tech

Headquarters: Montreal, QC
Servers: Montreal, QC
Package: Variable
CPUs: 4 cores
Memory: 6GB
Disk: 150GB (standard SSD)
Transfer: Unspecified
Price: $112.28 CAD/month, including tax

I briefly tried a VPS from whc.ca for inclusion in this review, and when I looked at their connectivity I found that they seem to be colocating in Globo.Tech, which has their own VPS service, so I went there instead.

When I found Globo.Tech, it looked pretty perfect. It's got all the features I expect, marketed to a technical customer, and just looks really solid and polished. Their company history page shows a 25+ year history of the company's development and gives me confidence in their longevity and technical capability. You can't fake longevity.

FullHost

Headquarters: Victoria, BC
Servers: Vancouver, BC + other Canadian cities
Package: "Advanced" VM
CPUs: 4 cores
Memory: 16GB
Disk: 160 NVMe SSD
Transfer: 2TB
Price: $89.60 CAD/month, including tax

I included FullHost in my last review a decade ago. They are now available in four datacentres across Canada in Vancouver, Calgary, Toronto, and Montreal, which is super appealing. The fact that my city is one of them immediately puts them at the top of my list.

Their website and portal is solid and comprehensive, if a bit unfocussed. It appears that they are a lot of things to a lot of different types of customers, but they seem to be delivering as far as I can tell.

Provisioning a VM

KeepSec

Time to provision: immediate

dmesg excerpt:

DMI: RDO OpenStack Compute, BIOS 1.16.1-1.el9 04/01/2014
Hypervisor detected: KVM
tsc: Detected 3400.000 MHz processor

It's running on OpenStack according to dmidecode, and they claim they use CPU pinning and don't overprovision, meaning there are 3 physical cores that are mine. For some reason the CPUs show as "Intel Core Processor (Haswell, no TSX, IBRS)" according to /proc/cpuinfo, but they claim to be using AMD's EPYC 2nd Gen processors on their website.

They have good networking features such as off-host firewall, and virtual networks for internally connecting multiple hosts.

Globo.Tech

Time to provision: immediate

dmesg excerpt:

DMI: OpenStack Foundation OpenStack Nova, BIOS 1.10.2-1ubuntu1 04/01/2014
Hypervisor detected: KVM
tsc: Detected 2899.998 MHz processor

It's running on OpenStack Nova according to dmidecode. According to /proc/cpuinfo the processors are "QEMU Virtual CPU version 2.5+" so there is apparently some virtualization and sharing of cores going on.

Globo.Tech has much of the same functionality as DigitalOcean (and even kind of looks similar). Security groups for off-host firewall, private network for inter-vm communication, disk snapshots, three different disk performance levels, etc.

FullHost

Time to provision: immediate

dmesg excerpt:

DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
Hypervisor detected: KVM
tsc: Detected 3408.028 MHz processor

It's a bit hard to interpret dmidecode, which shows 128 CPUs. At least /proc/cpuinfo shows four AMD EPYC-Genoa processors.

No mention of OpenStack anywhere, so perhaps they are using something else here.

This VPS feels a bit bare-bones, which is fine. I had to implement an on-host firewall, for example. I suspect that the VPS service within FullHost.Cloud is much more featureful. I'm happy enough with the simplicity of this, though.

Connectivity

KeepSec

The IP assigned was 38.128.250.216, which is in AS400130 belonging to Montreal-based Hebergement Serv3r.net with Cogent being their only transit provider or peer.

luke@mbp:~ traceroute 154.11.15.196
 1  192.168.1.1               0.697 ms
 2  ...telus.com              4.210 ms
 3  * * *
 4  * * *
 5  ...slc01...cogentco.com   25.152 ms
 6  ...den01...cogentco.com   34.576 ms
 7  ...oma02...cogentco.com   45.306 ms
 8  ...ord01...cogentco.com   53.517 ms
 9  ...cle04...cogentco.com   59.967 ms
10  ...yyz02...cogentco.com   65.160 ms
11  ...ymq01...cogentco.com   72.873 ms
12  ...ymq01...cogentco.com   72.847 ms
14  * * *
15  154.11.15.196             71.375

Yuck, look how many US cities we bounce through to get across Canada. It's too bad they're not peered with some other providers.

Globo.Tech

The IP assigned was 173.209.40.13, which is in AS36666 belonging to GloboTech themselves. Nice to see they own their own IP allocation, and that they have a dozen different peers and transit providers.

luke@mbp:~ traceroute 173.209.40.13
 1  192.168.1.1          0.550 ms
 2  ...telus.com         1.060 ms
 3  * * *
 4  ...yvr1.he.net       2.901 ms
 5  ...yycix.ca         15.112 ms
 6  ...ywg1.he.net      29.321 ms
 7  * * *
 8  ...ymq1.he.net      57.262 ms
 9  ...mtl1.globo.tech  60.768 ms
10  ...mtl8.globo.tech  60.344 ms
11  * * *
12  173.209.40.13       60.057 ms

Not too bad! It goes through Hurricane Electric's Canadian network: Vancouver, Calgary, Winnipeg, Montreal.

FullHost

The IP assigned was 162.223.226.64, which is in AS39962 belonging to FullHost themselves. They apparently have only a single transit provider, but it's Canadian-owned Astute Internet's "premium" network which is very well-connected within Vancouver (VanIX, Shaw, Novus), has a dedicated backbone to Toronto and down the west coast into the US, and has four top-tier upstream transit providers. Yup, that'll do nicely!

luke@mbp:~ traceroute 162.223.226.64
 1  192.168.1.1           0.289 ms
 2  ...telus.com          1.319 ms
 3  ...telus.com          1.360 ms
 4  ...telus.com          2.154 ms
 5  * * *
 6  ...rogers.com         1.739 ms
 7  ...astuteinternet.com 3.329 ms
 8  162.223.226.64        2.343 ms

Amazing ping time because it doesn't leave the Vancouver area. Pinging from my old server in California to this one is a respectable 10ms as well.

Benchmarking

Using the nench suite.

KeepSec

-------------------------------------------
nench.sh v2019.07.20
-------------------------------------------

Processor: Intel Core Processor
           (Haswell, no TSX, IBRS)
CPU cores: 3
Frequency: 3400.000 MHz
RAM:       11Gi
Swap:      6.0Gi
Kernel:    Linux 6.1.0-18-amd64 x86_64

Disks:
vda    275G  HDD

CPU: SHA256-hashing 500 MB
    2.421 seconds
CPU: bzip2-compressing 500 MB
    4.008 seconds
CPU: AES-encrypting 500 MB
    1.248 seconds

ioping: seek rate
    min/avg/max/mdev =
    108.6us / 130.3us / 3.38ms / 29.9us
ioping: sequential read speed
    generated 6.90 k requests in
    5.00s, 1.69GiB, 1.38kiops, 345.1MiB/s

dd: sequential write speed
    1st run:    394.82 MiB/s
    2nd run:    391.01 MiB/s
    3rd run:    391.01 MiB/s
    average:    392.28 MiB/s

IPv4 speedtests
    your IPv4:    38.128.250.xxxx

    Cachefly CDN:         106.57 MiB/s
    Leaseweb (NL):        0.06 MiB/s
    Softlayer DAL (US):   0.00 MiB/s
    Online.net (FR):      27.64 MiB/s
    OVH BHS (CA):         62.99 MiB/s

No IPv6 connectivity detected
-------------------------------------------

Performance in all areas is pretty good, and the server specs are excellent.

Globo.Tech

-------------------------------------------
nench.sh v2019.07.20
-------------------------------------------

Processor: QEMU Virtual CPU version 2.5+
CPU cores: 4
Frequency: 2899.998 MHz
RAM:       5.8Gi
Swap:      6.0Gi
Kernel:    Linux 5.10.0-33-cloud-amd64
           x86_64

Disks:
sda    150G  HDD

CPU: SHA256-hashing 500 MB
    4.180 seconds
CPU: bzip2-compressing 500 MB
    6.298 seconds
CPU: AES-encrypting 500 MB
    5.172 seconds

ioping: seek rate
    min/avg/max/mdev =
    234.5us / 507.8us / 6.55ms / 224.5us
ioping: sequential read speed
    generated 7.73 k requests in
    5.01s, 1.89GiB, 1.54kiops, 385.5MiB/s

dd: sequential write speed
    1st run:    346.18 MiB/s
    2nd run:    366.21 MiB/s
    3rd run:    365.26 MiB/s
    average:    359.22 MiB/s

IPv4 speedtests
    your IPv4:    173.209.40.xxxx

    Cachefly CDN:         145.14 MiB/s
    Leaseweb (NL):        0.05 MiB/s
    Softlayer DAL (US):   0.00 MiB/s
    Online.net (FR):      26.74 MiB/s
    OVH BHS (CA):         62.62 MiB/s

No IPv6 connectivity detected
-------------------------------------------

This one has the worst CPU and disk performance of the three, but still good enough for my workloads.

FullHost

-------------------------------------------
nench.sh v2019.07.20
-------------------------------------------

Processor: AMD EPYC-Genoa Processor
CPU cores: 4
Frequency: 2999.998 MHz
RAM:       15Gi
Swap:      6.0Gi
Kernel:    Linux 5.10.0-20-amd64 x86_64

Disks:
sda    368K  HDD
vda    160G  HDD

CPU: SHA256-hashing 500 MB
    1.589 seconds
CPU: bzip2-compressing 500 MB
    3.132 seconds
CPU: AES-encrypting 500 MB
    0.829 seconds

ioping: seek rate
    min/avg/max/mdev =
    60.1us / 161.9us / 2.48ms / 36.5us
ioping: sequential read speed
    generated 6.62 k requests in
    5.00s, 1.62GiB, 1.32kiops, 331.0MiB/s

dd: sequential write speed
    1st run:    462.53 MiB/s
    2nd run:    463.49 MiB/s
    3rd run:    461.58 MiB/s
    average:    462.53 MiB/s

IPv4 speedtests
    your IPv4:    162.223.226.xxxx

    Cachefly CDN:         96.15 MiB/s
    Leaseweb (NL):        0.04 MiB/s
    Softlayer DAL (US):   0.00 MiB/s
    Online.net (FR):      14.87 MiB/s
    OVH BHS (CA):         18.52 MiB/s

No IPv6 connectivity detected
-------------------------------------------

This one has very good CPU and disk performance. The IPv4 speedtests are far lower than the other two options, which is curious considering the excellent peering and transit providers. This is still plenty sufficient though.

Final Verdict

KeepSec

The server performance is great, and there is really good value here.

Unfortunately there were quite a few rough edges: numerous little UI bugs in the dashboard and broken links on the website. Billing is cumbersome and is done in USD, and it charged me QC sales tax despite my BC business address. When I tried to download my invoice I was greeted with javascript errors and had to contact support, who gave me a Paypal receipt that didn't show the tax breakdown like is required on a proper invoice. Even shutting down the VPS resulted in their backend responding with HTTP 500 and the frontend showing a generic error. None of these issues were a dealbreaker but on aggregate it does not instill confidence. To their credit, they have been very responsive to my support queries.

It's clear they are working hard. I assume these issues will get resolved, but for now I'm going to pass. It just seems too unfinished and unfocussed. I will be watching them and rooting for them though, and may try it again in a year or so.

Globo.Tech

Globo.Tech seems like a good service. It has the most flexibility in VPS sizing, with each parameter being independently adjustable. Unfortunately it's pretty expensive. The specs I chose just barely meet my needs, but the price is already well above the alternatives.

It's also Montreal-only, which may be fine for many Canadians in that region, but it's a bit limiting for me.

FullHost

This is the one I've chosen. Everything I had on DigitalOcean has now been moved here. It's cheaper, has far better performance, and I wish I did this move long ago. And they've been highly responsive to my support requests and feedback, despite apparently being slammed with an influx of new Canadian customers.

I opted for their regular VM product for its simplicity, which feels a bit bare-bones, but I still think is the right choice for me. They also have a sophisticated "DevOps PaaS" (platform-as-a-service) offering based on Virtuozzo that is confusingly-named FullHost.Cloud. I tried it briefly but was overwhelmed by its sprawling feature set. I just want some VPSs and maybe a bit of software-defined networking. Apparently it does offer this, so I may give it another look some time.

The only thing I "lost" from DigitalOcean is IPv6, which I've supported for many years. None of the Canadian providers I tried implement IPv6 whatsoever. FullHost's website has shown that it's "coming soon", but they've been showing that since 2023. Is IPv6 important? I guess it's hard to say. For now I'll live without.

If you're thinking of signing up and you found this review helpful, consider using my referral link. I'm not exactly sure what it gets me but why not.

My offer to you

If you are a Canadian company or individual that is hosting web services with a US provider, I'm offering pro bono consultation to help you figure out your best option to move it to Canada.

Get in touch and let's trade a few emails: me@lukecyca.com.

Luke Cyca .com