For Craft CMS
Craft CMS,
production-grade and predictable
The premium PHP CMS for design-led teams, on real VMs with S3-compatible asset volumes and a global CDN. Servd-class infrastructure at a fraction of the cost.
# config/filesystems.php — S3 volume
return [
[
'type' => craft\awss3\Fs::class,
'handle' => 'edgeAssets',
'name' => 'Edge Assets',
'settings' => [
'endpoint' => '$EDGE_ENDPOINT',
'bucket' => 'craft-assets',
],
],
];
# Provision and apply
$ edge compute create --plan small ...
$ php craft up
Why Craft teams pick Edge
Pixel & Tonic-recommended hosting characteristics, at agency-friendly prices.
Real PHP, real performance
Dedicated CPU, NVMe storage, OPCache tuned for Yii — the hosting story Pixel & Tonic actually recommend, on infrastructure that doesn't bill per page-view.
S3 asset volumes
Use the official `craftcms/aws-s3` adapter pointing at Edge Storage. Local volumes for dev, S3-backed volumes for production — same Craft setup either way.
Image transforms, two ways
Craft's native transforms work great. For high-traffic sites, point your asset URLs at Edge Image Optimization for AVIF/WebP at the CDN.
Global CDN, zero egress
Front the front-end through the Edge CDN. Logged-in editors hit origin; the world reads from cache. No egress fees on any of it.
MySQL or Postgres
Run on the same VM for cost, separate VMs for scale, or your existing managed provider. Craft is happy with all three.
Project Config + Composer flow
Standard Craft deploy: pull, `composer install`, `php craft up`, restart. Wrap it in a CI step or Envoyer/Forge — both work pointed at an Edge VM.
Reference architecture
How Craft maps to Edge
Standard LEMP stack with S3-backed asset volumes and the global CDN out front. Boring, fast, predictable.
Runs Craft + Nginx + PHP-FPM on a VM, with MySQL or Postgres
S3-compatible bucket for asset volumes
Caches the front-end and asset URLs globally
On-the-fly variants from Craft asset URLs
Anycast DNS for the apex, www and any subsite domains
# Twig template — Craft asset → Edge Image URL
<img
src="https://cdn.example.com/{{ asset.path }}?w=1200&fm=webp"
srcset="https://cdn.example.com/{{ asset.path }}?w=800&fm=webp 800w,
https://cdn.example.com/{{ asset.path }}?w=1600&fm=webp 1600w"
alt="{{ asset.title }}"
>
# Or use native transforms
{{ asset.getUrl({ width: 1200, format: 'webp' }) }}
Common questions
Craft 4 or Craft 5?
Both work. Craft 5 (PHP 8.2+) is a clean fit for a fresh Edge VM. The bootstrap script installs Composer, the right PHP version and `php craft up` runs migrations on first boot.
Can I keep using Forge or Envoyer?
Yes — both can target an Edge VM by IP. We provision the box, they handle the deploy pipeline. Or use the Edge CLI to script the same workflow if you'd rather skip the third party.
How does this compare to Servd / Cloudways?
Cheaper, faster, you keep root. The trade-off is a bootstrap script (or Forge/Envoyer) to manage the OS — or our Expert Services team can run it for you.
What about Craft Commerce?
Runs identically — same PHP/MySQL stack, same S3 asset volumes for product imagery. The CDN handles catalogue traffic; checkout falls through to your origin VM.
By Stack
Other stacks on Edge
Ship Craft on Edge
30-day trial. Bring an existing Craft site or scaffold a new one — agency-friendly pricing all the way up.