← Back to blog

Running Your Own Edge Nodes in Five Cities

Maria Ilinca Bostan

Serving a large file to a European audience from one machine in one city works, and then it does not. The first symptom is usually that downloads are fine for you and slow for a customer three countries away. Renting five small machines and caching the file near people is a surprisingly effective answer, and with unmetered traffic on every plan it is a fixed cost rather than a bill that grows with success.

This is how to build a small distribution layer across our five virtual machine cities, when it beats a commercial network and when it plainly does not.

When this is a good idea

  • A few large objects, served a lot. Installers, game assets, firmware, video files, dataset downloads. Cache hit rates are high and the file count is manageable.
  • Regional audiences you can name. You know your users are in Germany, Poland, Austria, Romania and the Benelux, rather than everywhere.
  • Traffic bills that hurt. Distribution priced per gigabyte gets expensive exactly when things go well. Here the traffic is unmetered and the cost is the machines.
  • You want to see the cache. Your own nodes mean your own logs, your own headers and your own purge, with no support ticket to understand a miss.

When it is the wrong tool, plainly

  • A global audience. Five European cities do nothing for a user in São Paulo or Singapore.
  • Millions of small files. The win in caching comes from bytes saved on the long path. Tiny assets are dominated by connection setup, which a commercial network with hundreds of sites handles better.
  • You want anycast. We route by name, not by anycast address, so steering happens in DNS. That means failover takes as long as your record's time to live rather than being instant.
  • Nobody will maintain it. Five nodes is five sets of certificates, packages and disks. If that will not get done, a managed network is the better engineering decision.

The layout

  1. One origin. Your existing server, or a dedicated machine if the library is large. It needs to be reachable by the nodes and nothing else, so restrict it to their addresses.
  2. Five caching nodes. A reverse proxy with an on disk cache in each city, fetching from the origin on a miss and serving from disk thereafter. Our guide to running a reverse proxy is the configuration half of this.
  3. DNS that steers. A provider with latency or geographic routing plus health checks, pointing each region at its nearest node and away from a node that stops answering. Keep the time to live short, around 60 seconds, from the day you start.
  4. Certificates per node. Each one terminates TLS for the same hostname, so each needs a certificate and an automated renewal. Renewal failures are the most common outage in this design.
  5. A purge you trust. Either content addressed file names that never need purging, which is the approach that causes the least grief, or a script that clears the same path on all five.

The cities and what they cover

CityFrom FrankfurtCovers
Frankfurt1 msGermany, Switzerland, Czechia, and the shortest general path across Europe
Amsterdam3 msThe Benelux, the United Kingdom, Ireland, the Nordics, transatlantic routes
Vienna4 msAustria, Hungary, Slovakia, Slovenia, the northern Balkans
Warsaw7 msPoland and the Baltics, which Western European sites reach poorly
Bucharest10 msRomania, Bulgaria, Moldova, Serbia and the wider Balkans

Three nodes cover most of the continent. Frankfurt, Warsaw and Bucharest reach west, north east and south east respectively, and Amsterdam and Vienna are the refinements you add when the logs tell you to.

What five nodes cost

The smallest plan is enough for a cache node when the working set fits on its disk, because caching is disk and network work rather than processor work.

NodesPlanCitiesMonthly
ThreeIon, 2 GB, 20 GB diskFrankfurt, Warsaw, Bucharest€16.00
FiveIon, 2 GB, 20 GB diskAll five€27.50
FivePulse, 4 GB, 40 GB diskAll five€42.50

Those are live prices including each city's location fee, before VAT where it applies. Disk is what limits your cache, so extra storage in 50 GB units at €4 per unit per month is often the right upgrade rather than a bigger plan. Every plan includes unmetered traffic, which is the entire economic argument for doing this. Per plan and per city figures are in the price by location breakdown.

Try one node for a weekend first

Do not build five nodes on a theory. Build one in the city furthest from your origin and measure what it changes for users there. Every plan is available by the hour at the monthly price divided by 720 plus the location fee divided by 720, so an Ion in Warsaw is €0.0077 an hour and a 48 hour trial is 37 cents.

Point a test hostname at it, compare download times from a machine in that region against the origin path, and only then decide how many nodes the numbers justify. Delete the trial node afterwards, since a powered off machine still holds its disk and its address, and put the nodes you keep on a monthly cycle because 720 hourly units cost exactly one month.

Details that decide whether it works

  • Cache headers are the whole game. If the origin does not send a sensible maximum age, nothing caches and you have built five proxies. Long lifetimes with content addressed names beat short lifetimes with purges.
  • Protect the origin. Allow only the node addresses, and give each node one IPv4 address, with more available at €1.50 each per month if you want to separate them further.
  • Log to somewhere central. Five separate access logs are five separate investigations. Ship them to one place, and watch hit ratio per node, which is the number that tells you whether a node is earning its rent.
  • Watch each node from elsewhere. A node that fails while DNS still points at it is the failure mode of this design. Alerting belongs on a machine in a different city, as described in monitoring from another city.
  • Keep the pair rules in mind. If one node is critical for a region, know which other city takes over. That is the same exercise as pairing two locations.

Where to start

One origin, one node in your worst served region, short DNS time to live, and a week of measurements. Plans and cities are on the VPS page, the higher bandwidth range for origin duty is on the CDN origin page, and the workload summary is on the edge node page.

Ready in under a minute

Deploy your first server now.

No contracts, no minimums. Start on an Ion KVM VPS at €0.0063 an hour and move to a monthly bare-metal server the day you outgrow it.

$ voxa deploy --plan ion --location amsterdam

KVM VPS billed hourly, capped monthly · Dedicated billed monthly · No setup fee

Included on every plan
Free IPv4 + IPv6
Every VPS
Unmetered traffic
1–10 Gbps
DDoS mitigation
2.5 Tbps
Root / IPMI access
Included
Setup fee
€0.00
Minimum term
None