Static site hosting: plain HTML or a build, from GitHub
A repository with an index.html is served as it is. A repository with a build script that writes dist, build, public, out or _site is built on every deploy and served from the result. Either way it gets an https address and can carry your domain.
Two ways it deploys
- Plain files: an
index.htmlat the root and the panel serves the repository with a small static server on the app's port. No build, no Node process to keep alive. - A build: Astro, Vite, Eleventy, Docusaurus, VitePress, VuePress, Gatsby, Parcel or SvelteKit with the static adapter are recognised from
package.json; thebuildscript runs on every push and its output folder (dist,build,public,outor_site) is served. Another generator: set the app's Language to static and name the build command.
Single-page apps
Set the environment variable SPA=1 and every unknown path answers index.html, so client-side routers work on a fresh load of any route.
A domain of your own
Point a CNAME at the app from its page and the site answers on your domain with a certificate. The free tier's address sleeps when idle and wakes on the next visit, which takes a few seconds; on a paid tier the always-on address is $2 a month.
Frequently asked questions
Is there a bandwidth limit?
Fair use, behind the Cloudflare proxy which caches static assets at the edge. A site that serves a few thousand visitors a day is fine on the free tier.
Can I serve a game server's website this way?
Yes; the server-guide-site template is a rules, how-to-join and mod-list site built to plain HTML from Markdown, and the community website add-on does it with a live map and player stats.
How does the public address work?
Give the app a web address in the panel and it is served at https://name.fadehost.app behind the Cloudflare proxy with a certificate. It comes with the plan on every tier. On the free tier the address sleeps when nobody has used it for a while and wakes on the next request; on a paid tier it stays awake. Your own domain can point at it.
What happens on a deploy?
The repository is cloned at your branch, dependencies install, the build runs when there is one, the app starts. With auto-deploy on, every push does the same. The live console shows each step; a failed one is explained in plain words.