Server Regions & Sizes
When you create a server, you choose a region and a size. The region determines where your server is physically located, and the size determines how much CPU, RAM, and disk space it has.
DigitalOcean
Regions
Potions supports 13 DigitalOcean regions across North America, Europe, Asia, and Australia. Pick the region closest to your users for the lowest latency.
| Region | Slug | Location |
|---|---|---|
| Amsterdam 3 |
ams3 |
Netherlands |
| Atlanta 1 |
atl1 |
Georgia, USA |
| Bangalore 1 |
blr1 |
India |
| Frankfurt 1 |
fra1 |
Germany |
| London 1 |
lon1 |
United Kingdom |
| New York 1 |
nyc1 |
New York, USA |
| New York 2 |
nyc2 |
New York, USA |
| New York 3 |
nyc3 |
New York, USA |
| San Francisco 2 |
sfo2 |
California, USA |
| San Francisco 3 |
sfo3 |
California, USA |
| Singapore 1 |
sgp1 |
Singapore |
| Sydney 1 |
syd1 |
Australia |
| Toronto 1 |
tor1 |
Canada |
All regions have the same capabilities - there are no feature differences between them. If your users are concentrated in one area, pick the closest region. New York and Frankfurt are great options for global traffic.
Sizes
All DigitalOcean sizes run the same server stack (PostgreSQL and Caddy, with pre-built Elixir releases) and can host multiple apps.
| vCPUs | RAM | Disk | Swap |
|---|---|---|---|
| 1 | 1 GB | 25 GB | 512 MB |
| 1 | 2 GB | 50 GB | 1 GB |
| 2 | 2 GB | 60 GB | 1 GB |
| 2 | 4 GB | 80 GB | 1 GB |
Potions automatically configures swap space on every server - 512 MB for the 1 GB tier and 1 GB for all larger sizes. Swap gives your server breathing room during memory spikes without affecting normal performance.
Choosing a Size
1 GB RAM: Good for development, staging, and small production apps with light traffic. PostgreSQL and a single Phoenix app fit comfortably. Keep in mind that deploys briefly run two instances of your app during the zero-downtime switchover, which doubles memory usage for a short window.
2 GB RAM / 1 vCPU: A solid starting point for production. Enough room for PostgreSQL, multiple Phoenix apps, and the memory overhead during deploys.
2 GB RAM / 2 vCPU: Same memory as the tier above but with a second CPU core. Useful if your app is CPU-bound (heavy computation, image processing, or high concurrency on the BEAM scheduler).
4 GB RAM / 2 vCPU: For larger production workloads or servers hosting several apps. Gives PostgreSQL room for bigger working sets and lets you run multiple apps without contention.
Pricing
DigitalOcean bills you for your droplets at their standard rates. Potions doesn't add any markup to infrastructure costs. Check DigitalOcean's pricing page for current rates.
Hetzner Cloud
Locations
Hetzner Cloud runs in six locations across Europe, North America, and Asia. Pick the one closest to your users for the lowest latency.
| Location | Slug | Country |
|---|---|---|
| Nuremberg |
nbg1 |
Germany |
| Falkenstein |
fsn1 |
Germany |
| Helsinki |
hel1 |
Finland |
| Ashburn, VA |
ash |
United States |
| Hillsboro, OR |
hil |
United States |
| Singapore |
sin |
Singapore |
All locations run the same server stack. The European locations (Nuremberg, Falkenstein, Helsinki) typically offer the widest selection of sizes.
Sizes
Hetzner offers shared vCPU (the CPX and CX lines) and dedicated vCPU (the CCX line) servers. Shared-vCPU sizes are the most cost-effective starting point and run Phoenix apps comfortably; dedicated-vCPU sizes are worth it for consistently CPU-bound workloads.
Common shared-vCPU sizes:
| Slug | vCPUs | RAM | Disk |
|---|---|---|---|
cpx11 |
2 | 2 GB | 40 GB |
cpx21 |
3 | 4 GB | 80 GB |
cpx31 |
4 | 8 GB | 160 GB |
cpx41 |
8 | 16 GB | 240 GB |
cpx51 |
16 | 32 GB | 360 GB |
Dedicated-vCPU sizes (the CCX line) scale from 8 GB / 2 vCPU up to 192 GB / 48 vCPU for larger production workloads.
The exact sizes available depend on the location and are refreshed from the Hetzner API, so the dropdown always reflects what's currently on offer. Note that Hetzner's smallest size starts at 2 GB RAM (there's no 1 GB tier). As with every Potions server, swap space is configured automatically.
Choosing a Size
2 GB RAM (cpx11): A solid entry point for development, staging, and small production apps. Fits PostgreSQL and a Phoenix app with room for the brief memory overlap during zero-downtime deploys.
4 GB RAM (cpx21): A comfortable starting point for production - room for PostgreSQL, multiple apps, and deploy overhead.
8 GB RAM and up: For larger workloads or servers hosting several apps. The dedicated-vCPU CCX line is a good fit when your app is consistently CPU-bound.
Pricing
Hetzner bills you directly for your servers at their standard rates. Potions doesn't add any markup. Check Hetzner's cloud pricing for current rates - Hetzner is often among the most cost-effective options for the resources you get.
Things to Know
- Multiple apps share server resources. If you're running several apps on one server, factor in the combined memory and CPU usage when choosing a size.
- Builds don't consume server resources. Potions builds your release on a separate build server, not on your app server. The only server resource used during deploys is the upload and restart step.