Atelier by AIncient Labs

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 aex

By 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.com

For 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:

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-export

Or 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-export

Or 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 --prod

Or 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@v4

Turn 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.server for a quick look.

On this page