dist.
Deploy your site
- Bunny CLI
- Manually
1
Install the Bunny CLI and log in
2
Create a site
From your project root, run:Replace
my-site with a name for your site. The CLI creates a storage zone for your files and a pull zone to serve them, then links this directory to the new site. The site is served at a b-cdn.net address, and the CLI prints the URL.3
Build and deploy
bunny sites deployments publish --previous.4
Deploy on every push (optional)
.github/workflows/bunny-sites.yml that deploys the site on every push to main. Add your API key to the repository as a BUNNYNET_API_KEY secret. The CLI offers to run gh secret set BUNNYNET_API_KEY for you.Resize images with Bunny Optimizer
Astro’s<Image> component can hand every width to Bunny Optimizer through a custom image service. The build then skips image processing, and the edge resizes each width in the srcset.
1
Turn on Optimizer
bunny sites create leaves query strings and Optimizer off, so open the site’s pull zone under CDN → Pull Zones:- Turn on URL Query String vary, so each
?width=gets its own cache entry. - Enable Bunny Optimizer, then turn on the Dynamic Image API and automatic WebP under Optimizer → Settings. Your build has already minified CSS and JavaScript, so turn Optimizer’s minification off.
2
Add the image service
The service spreads Astro’s
baseService, so Astro still works out the srcset widths, and only getURL changes. The example app has the full setup.src/bunny-image-service.ts
astro.config.mjs
3
Add images
Import images from
src/assets, or reference files in public by path:layout picks the srcset widths, and each one becomes a URL such as /_astro/photo.a1b2c3.jpg?width=828&quality=75. The build copies each image once and resizes nothing.Add a custom domain
With the Bunny CLI, add the domain to your site:CNAME record to create with your DNS provider. Once the record resolves, issue a free certificate with bunny sites domains ssl example.com.
For a manual deploy, add the hostname to your pull zone by following Custom hostnames.