Hosting choice determines 30-50% of perceived performance for an African site. With identical code performance, a Hetzner Frankfurt-hosted site served to Lagos can be 3-5× faster than a Bluehost US-hosted site.
TL;DR
- Hetzner Frankfurt: best latency/cost compromise for Francophone Africa.
- Vercel Edge: best for Next.js sites with global audience.
- Cloudflare: essential CDN in front of any hosting.
- ADIE Senegal / Ivory Coast: mandatory for institutions, otherwise unprofitable.
Latency comparison from key African cities (May 2026)
TTFB measurements for simple HTML page (ms):
| Host | Location | Dakar | Abidjan | Douala | Lagos | Nairobi |
|---|---|---|---|---|---|---|
| Hetzner | Frankfurt (DE) | 95 | 110 | 145 | 95 | 165 |
| Hetzner | Helsinki (FI) | 130 | 145 | 175 | 125 | 175 |
| OVH | Paris (FR) | 80 | 95 | 130 | 105 | 195 |
| OVH | Strasbourg | 90 | 105 | 140 | 110 | 200 |
| Digital Ocean | Amsterdam (NL) | 105 | 120 | 155 | 105 | 175 |
| Digital Ocean | London (UK) | 125 | 145 | 175 | 125 | 175 |
| AWS Cape Town | South Africa | 230 | 245 | 175 | 205 | 65 |
| ADIE | Dakar (SN) | 25 | 95 | 220 | 180 | 295 |
| Vercel Edge | Multi (auto) | 45 | 55 | 75 | 50 | 75 |
| Cloudflare Pages | Multi (auto) | 30 | 40 | 60 | 35 | 60 |
Conclusions:
- Vercel Edge / Cloudflare Pages: best for pan-African audience
- Hetzner Frankfurt: best perf/cost for long-running app (Medusa, Strapi backend)
- ADIE SN: optimal for SN-only audience, poor outside SN
- AWS Cape Town: optimal for East Africa only
Cost comparison (May 2026)
| Service | Spec | Cost/month |
|---|---|---|
| Hetzner CX21 | 4 vCPU, 8 GB | €8 |
| Hetzner CX31 | 4 vCPU, 16 GB | €14 |
| Hetzner Storage Box | 1 TB | €4 |
| OVH VPS Comfort | 4 vCPU, 8 GB | €18 |
| Digital Ocean Premium 8 | 4 vCPU, 8 GB | $48 |
| AWS EC2 t3.large | 2 vCPU, 8 GB | ~$70 + bandwidth |
| Vercel Pro | Hobby + Pro | $20/seat |
| Cloudflare Pages | Pages | $0 (free tier) |
| ADIE Senegal VPS | 4 vCPU, 8 GB | €25-40/month |
Hetzner = perf/cost king for Francophone African audience.
Recommended pan-African architecture
`
[Cloudflare CDN — global]
↓
[Vercel Edge or Cloudflare Pages]
↓
[Hetzner Frankfurt — long-running backend]
(Strapi/Medusa API, Postgres)
↓
[Neon Postgres EU]
[Cloudflare R2 storage]
`
Step 1 — frontend: Vercel or Cloudflare Pages?
| Criterion | Vercel | Cloudflare Pages |
|---|---|---|
| Free tier cost | Limited (100 GB BW) | Generous (unlimited) |
| Edge regions | 31 global | 280+ |
| ISR / SSG / SSR | Excellent (Next.js native) | OK (with config) |
| Build time | Fast | Slower |
| Functions | Native serverless | Workers (different paradigm) |
| Scaled cost | More expensive | Cheaper |
Vercel: for Next.js with complex ISR/streaming. Cloudflare Pages: for SSG sites or basic Next.js, cost king.
Step 2 — long-running backend: Hetzner
`bash
# Hetzner CX31 setup (4 vCPU, 16 GB) — Frankfurt
# Stack: Next.js (frontend) + Strapi API + Postgres
apt update && apt upgrade -y
apt install -y curl docker.io docker-compose-plugin
mkdir -p /opt/api && cd /opt/api
`
`yaml
services:
strapi:
image: strapi/strapi:latest
environment:
- DATABASE_HOST=postgres
- DATABASE_NAME=strapi
- DATABASE_USERNAME=strapi
- DATABASE_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- ./strapi-app:/app
ports:
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
- "1337:1337"
depends_on: [postgres]
postgres:
image: postgres:16-alpine
environment:
- POSTGRES_USER=strapi
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=strapi
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
`
`bash
# Caddy reverse proxy + auto SSL
api.kolonell.com {
reverse_proxy localhost:1337
}
systemctl reload caddy
docker compose up -d
`
Step 3 — Cloudflare CDN in front of everything
Configure Cloudflare with:
- DNS: apex domain to Vercel/CF Pages, api subdomain to Hetzner
- Cache: "Cache Everything" + Page Rules for HTML
- WAF: "Medium" level
- Bot Fight Mode: ON
- DDoS protection: Auto
Net effect: -40 to -70% perceived latency + protection.
Step 4 — DB: Neon vs self-host Postgres
| Option | Cost | Latency | Use case |
|---|---|---|---|
| Neon Free | 0 | ~50 ms (EU) | Dev / staging |
| Neon Pro | $19/month | ~50 ms (EU) | Prod <100 GB |
| Self-host Hetzner | 0 (incl) | <10 ms (same DC) | Prod >100 GB or specific need |
| AWS RDS | $50-300/month | Variable | Enterprise |
Recommendation: Neon to start (managed, simple). Migrate self-host past 100 GB or specific constraints.
Step 5 — bandwidth and hidden costs
| Service | Free bandwidth | Cost over |
|---|---|---|
| Vercel Hobby | 100 GB | $20/100 GB |
| Vercel Pro | 1 TB | $40/100 GB |
| Cloudflare Pages | Unlimited | $0 |
| Hetzner | 20 TB included | $1/TB extra |
| Digital Ocean | 1-4 TB included | $0.01/GB |
| AWS S3 / EC2 | 0.5 GB free | $0.09/GB (high!) |
AWS trap: surprise bandwidth bill. For high-traffic sites, AWS = bad choice except specific cases.
Real case — kolonell.com (the site itself)
May 2026 stack:
- Frontend: Vercel Pro ($20/month, pan-AF + Europe diaspora audience)
- API: Hetzner CX31 Frankfurt (€14/month)
- Postgres: Neon Pro ($19/month)
- Storage: Cloudflare R2 (~$5/month)
- CDN: Cloudflare (free + WAF)
- Email: Brevo Business (€19/month, 20K mails)
- DNS: Cloudflare (free)
Total: ~$77/month (~46K XOF) to handle 145K visits/month + 12K chatbot conversations.
FAQ
Q: Why not AWS if it's standard?
A: AWS is expensive for African audience + operational complexity. Hetzner + Cloudflare = same perf at 10-20% cost for SME/startup.
Q: Mandatory Senegal hosting for institutions?
A: For sensitive data yes (health files, civil registry, justice). For public institutional site without sensitive data: Cloudflare/Vercel acceptable with supervisory authority consultation.
Q: Migration from WordPress / Bluehost?
A: Often 70-90% performance gain. Plan 2-4 weeks for clean migration with SEO preservation.
Conclusion
Hosting choice = structural decision. For most 2026 African sites: Cloudflare/Vercel front + Hetzner Frankfurt back + Neon Postgres = stack scaling to 1M+ visits/month for <€100/month. Time for African SMEs to stop paying €200-500/month for oversized AWS stacks.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.
