Host your exported site
Put your static export online — Netlify, Cloudflare Pages, Vercel, GitHub Pages, or any static host
You've exported your site as plain files. Now put it on the web. A static export is ordinary HTML, CSS, images, and assets, so it runs on any static host — pick whichever you already use. The steps below all start from the same folder Atelier produced.
Build the export first
Create (or refresh) the static snapshot with the aincient:export command — aex for short:
drush aexBy default this writes the site to aincient-export/ in your project root and runs a link check so you
know the snapshot is self-contained.
Set your final domain with --base-url. Page canonicals, og: tags, and the sitemap bake in the
address you render against. Export for the domain you'll publish to:
drush aex --base-url https://your-domain.comFor a first test deploy you can skip this and fix it before you point a custom domain at the site.
Tip
Prefer a single file to upload or hand off? drush aex --zip also packages aincient-export.zip. Add
--include-config --include-users for a full "own your data" bundle (see Export a static site).
Re-run drush aex any time you publish changes and re-deploy — every host below supports that.
Fastest: the deploy template
Don't want to configure a host by hand? The atelier-deploy-template
repo is pre-wired for every host below. Put your export in its site/ folder and push — start from any of
these one-click links:
- Use this template — create your own copy on GitHub (best for GitHub Pages)
- Deploy to Netlify
- Deploy to Cloudflare
- Deploy with Vercel
The buttons deploy the template's placeholder first; connect the host, then push your export to site/ and
it redeploys automatically. Prefer to set a host up by hand? Keep reading.
Netlify
Drag and drop (fastest)
Open app.netlify.com/drop and drop your aincient-export folder onto the
page. It's live in seconds on a *.netlify.app address.
Or use the CLI
npm i -g netlify-cli
netlify deploy --prod --dir=aincient-exportOr connect a Git repo
Commit the export to a repo and add a netlify.toml so Netlify serves the folder as-is (no build step —
Atelier already built it):
[build]
publish = "aincient-export"Official docs: Netlify — create deploys · Netlify CLI.
Cloudflare Pages
Direct upload
In the Cloudflare dashboard: Workers & Pages → Create → Pages → Upload assets, then upload the
aincient-export folder.
Or use Wrangler
npm i -g wrangler
wrangler pages deploy aincient-exportOr connect a Git repo
Point a Pages project at your repo, leave the build command empty, and set the build output
directory to aincient-export.
Official docs: Cloudflare Pages — Git integration · direct upload.
Vercel
Deploy the folder with the CLI
npm i -g vercel
vercel deploy aincient-export --prodOr connect a Git repo
Import the repo, choose framework preset Other, leave the build command empty, and set the output
directory to aincient-export. Optionally commit a vercel.json:
{
"outputDirectory": "aincient-export"
}Official docs: Vercel — Git deploys · Vercel CLI.
GitHub Pages
Create a repo and add the files
Copy the contents of aincient-export/ into a new repository. Add an empty .nojekyll file at the
root — without it, GitHub Pages' Jekyll step strips folders that start with an underscore.
Deploy with GitHub Actions
Commit this workflow as .github/workflows/pages.yml. It publishes the whole repo (adjust path: if your
files live in a subfolder):
name: Deploy to GitHub Pages
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/upload-pages-artifact@v3
with:
path: .
- id: deployment
uses: actions/deploy-pages@v4Turn it on
In the repo, go to Settings → Pages and set the source to GitHub Actions. Your site publishes on
each push to main.
Official docs: GitHub Pages — custom Actions workflow.
On a project site the URL includes a subpath (username.github.io/repo). Export with a matching
--base-url (e.g. https://username.github.io/repo) so links and canonicals resolve correctly, or use a
custom domain.
Any static host
The export is just files, so it works on everything else too — no framework required:
- Your own server: copy
aincient-export/into your web root (nginx, Apache, Caddy). Point the server at the folder and you're done. - Object storage + CDN: sync to an S3 bucket, Cloudflare R2, Google Cloud Storage, etc. and front it
with a CDN. For example:
aws s3 sync aincient-export s3://your-bucket --delete. Official guides: AWS S3 · Cloudflare R2 · Google Cloud Storage. - Anything that serves a folder — even a USB stick or a local
python -m http.serverfor a quick look.