Static publishing
Static publishing turns a site of your Exponential installation into a folder of plain HTML pages and files and publishes it to a git repository: to GitHub Pages, where it is hosted for free, or to any other git host. Editors keep working in Exponential as before; visitors get the static copy, which has no PHP and no database behind it, so there is nothing on the public side to update, patch or attack.
You do it in Setup > Static publishing: make a target once with the wizard, then build, check what changes and publish. Every publish is kept, so you can always go back to an earlier one.
Each target on the page shows its published version (the number n of its newest tag static/<target>/<n>), the
short commit id of that version (a link to the commit on GitHub when the repository is there) and its last
publish with the state of the push: pushed, push pending, failed, nothing changed or not pushed; the time opens the
page of the run. The state of the GitHub Pages build is on the History page, which asks GitHub for it.

Contents
Start here
- Make a free site now: Make a free website in 15 minutes. First time on GitHub? Create a GitHub account and repository.
- Know what it is and whether it fits: What static publishing is, Is static right for my site? and the FAQ.
- Set it up properly: the tutorial Host static sites on GitHub Pages:
from an existing site to a live
github.ioaddress. - What it is and what it adds to the static cache: Static publishing.
- Developers and CI: start from the template repository exponential-static-site-starter, which builds a static copy with GitHub Actions and deploys it to GitHub Pages.
- See a static copy: the demo site at https://se7enxweb.github.io/exponential-demo-site-static/ (coming soon).
The steps
- Make a target with the wizard: which site, which repository, how the push signs in, how links are written. The setup wizard
- Build it: every page is fetched as a visitor who is not signed in sees it, links are rewritten and files copied. Build, preview and publish
- Check the build: what changes, the report, the size against the host's limits, and the copy itself in your browser. Build, preview and publish
- Publish it: one commit, one tag, one push, never forced. Build, preview and publish
- Go back when you need to: History and rollback
Who may do which step is set with policies: Who may publish.
The pages of Setup > Static publishing
| Page | Address | What it helps you do | Help |
|---|---|---|---|
| Static publishing | /staticpublish/dashboard | every target with its last publish, stale pages and size; switch the feature on or off | this page |
| New target, Settings | /staticpublish/target/new, /staticpublish/target/<id> | make or change a target | The setup wizard |
| Build | /staticpublish/build/<id> | build in the background and follow it | Build, preview and publish |
| Preview and publish | /staticpublish/preview/<id> | the changes, the report, the limits, the preview, Publish and Discard | Build, preview and publish |
| History | /staticpublish/history/<id> | the publishes, tags and commits; roll back | History and rollback |
| A job's page | /staticpublish/log/<run-id> | one build, publish or rollback: progress and report | Build, preview and publish |
| Deploy key | /staticpublish/keys/<id> | make the SSH key the push signs in with | Deploy keys |
The dashboard of the administration has a block Static publishing with the stale pages and the last publish of each target. Before the first target it shows one line with a link to the wizard and the tutorial; hide this removes it for you. Setup > Cache > Static content cache links here too.
Every page has a Help button that opens the page of this manual about it.

More
- The command line and CI: Host static sites on GitHub Pages
and the commands
exp:static:build,exp:static:publish,exp:static:rollback. - GitHub: Connect to GitHub: token, deploy key or GitHub App, Choose branch or GitHub Actions, Use your own domain and GitHub Pages limits and terms.
- Repositories, tokens and pushes: Targets and credentials
- The format of a build: The build format
- Search, forms and comments: Search, forms and comments on a static site, Languages on a static site, SEO on a static site and the form endpoint.
- Without pressing a button: Publish automatically and Notifications and webhooks.
- Links, files and privacy: Links and base path, Images, files and downloads, Keep private content private.
- Not on GitHub: Other git hosts: GitLab, Gitea and your own server.
- Something went wrong: When a publish fails.
- From the page itself: The website sidebar panel shows whether a page is stale and publishes just that page.