Deploy it
Unzip the export first, so the commands below run from inside the folder that contains index.html.
doctl apps create --spec app.yaml
# or push to the connected repo and let it redeployWithout the terminal: cloud.digitalocean.com/apps → Create App → Resource type: Static Site
The app.yaml you need
Declare the site as a static resource with no build command.
name: my-framer-site
static_sites:
- name: web
source_dir: /
index_document: index.html
error_document: 404.htmlCustom domain
Settings → Domains, then either delegate the domain to DigitalOcean DNS or add the CNAME they display.
What it costs
App Platform includes a starter allowance for static sites; beyond that it is flat monthly pricing rather than per-request billing.
Before you move the domain
- 1. Deploy to the host's own subdomain and open every page from the nav.
- 2. Visit a URL that does not exist and confirm you get a real 404, not a 200.
- 3. Submit any form on the site — exported forms post nowhere until you rewire them.
- 4. Only then move DNS, and keep the Framer plan active for one more cycle as a rollback.
Questions
›Can I host a Framer site on DigitalOcean App Platform for free?
App Platform includes a starter allowance for static sites; beyond that it is flat monthly pricing rather than per-request billing.
›Do I need a build step to deploy a Framer export to DigitalOcean App Platform?
No. A Framer export is already built output, so the build command stays empty. DigitalOcean App Platform serves the files as they are.
›How do I point my own domain at DigitalOcean App Platform?
Settings → Domains, then either delegate the domain to DigitalOcean DNS or add the CNAME they display.
›What usually goes wrong when deploying a Framer export to DigitalOcean App Platform?
App Platform assumes a build step and will look for one. A raw export has none, so you must explicitly leave the build command empty — if you let it autodetect, it fails the deploy looking for a package.json.