Sites
Static hosting with a real rollback
Push a folder. Get a URL. Roll back without rebuilding.
Sites hosts what your build produces — a Vite or Astro dist, a Hugo public, plain HTML. Every deployment is kept whole with its own address, so going back is promoting one that already exists.
- Deploy
- one command
- Rollback
- a pointer
- Kept
- live + 10 builds
- Analytics
- no cookie
$ subnomic sites deploy --prod 312 already stored, 14 to upload https://blog.subnomic.app
How it works
Three commands, and the second one is the one you repeat.
Link a folder
Create the site and tell it where your build lands. The link is saved to subnomic.json, so every later deploy is one command.
$ subnomic sites create blog --dir dist https://blog.subnomic.app
Deploy
Without --prod you get a preview address for exactly this build. With it, the build goes live. Only the URL is printed on stdout, so it drops straight into CI.
$ subnomic sites deploy https://blog--0198c2f4a1b27d3e.subnomic.app $ subnomic sites deploy --prod https://blog.subnomic.app
Roll back
Promote the build before the live one — or any build by id. Nothing is re-uploaded or rebuilt, because every deployment is still there, whole.
$ subnomic sites rollback $ subnomic sites rollback --to 0198c1e9
What comes with a site
Everything a static site needs after the upload.
Only what changed is uploaded
Files are hashed on your machine. Anything the workspace already stores is copied server-side, so the second deploy of a big site uploads a handful of files.
A preview address per deployment
Every build answers at blog--<id>, served with noindex. Unguessable, not private — protect the site and its previews are covered too.
Your own domain
Two DNS records — a CNAME and a TXT that proves you own it. The certificate is issued and renewed for you. Up to ten domains per site.
_redirects and _headers
Netlify-style rules: 301 to 308, splats, 404 and 410. They belong to the deployment, so a rollback brings the old rules back with the old files.
Single-page apps and your own 404
SPA mode answers unknown routes with index.html — only for page navigations, so a missing .js is still a plain 404. A custom not-found page keeps its 404 status.
Password or members only
A shared password, or only people in the workspace. If the protection is ever misconfigured the site refuses visitors rather than going public.
Traffic without tracking
Hourly counts by path, status, referring site, browser and device. No IP address, no cookie, no script on your page. Kept 90 days.
Deploy from CI with a narrow token
A token with the sites.deploy scope can publish and roll back. It cannot create, delete or re-point a domain.
Or drop the folder in the browser
Drag a built folder onto the site page, or edit a text file in the browser and publish the result as a new deployment.
Rules and defaults
Rules ship with the files they apply to.
Put a _redirects or _headers file next to your index.html and it is read at deploy time. First match wins, and a rule beats a file at the same path.
- HTML is served no-cache; bundler-hashed assets get a year and immutable. You do not have to write either.
- Every response carries HSTS and nosniff, and a site cannot switch them off.
- .env files, .git and node_modules are never uploaded — pointing a deploy at the project folder instead of its build does not publish your secrets.
- A folder with no index.html is refused before anything is uploaded.
# from to status
/docs/* https://docs.acme.io/:splat 301
/old-pricing /pricing 308/assets/* Cache-Control: public, max-age=31536000, immutable /* X-Frame-Options: DENY
Limits
What each plan includes.
| Plan | Free | Pro | Team | Enterprise |
|---|---|---|---|---|
| Sites | 1 | 10 | 50 | 500 |
| Site traffic / month | 1 GB | 30 GB | 150 GB | 1.5 TB |
| Stored (shared with Storage) | 512 MB | 20 GB | 100 GB | 1 TB |
| Services | 1 | 3 | 10 | 10 |
A site’s files count toward the workspace’s stored bytes, shared with Storage. The whole price list.
Questions
Before you point a domain at it.
Does it build my site?
No. You build locally or in your own CI, and Sites hosts the result. There is no Git integration and no build step to configure.
Can it run server code?
subnomic sites deploy recognises a Nitro node-server build or a Linux binary and runs it as a service on its own microVM. The plan sets how many services and how large one may be.
What about an apex domain?
Point it with CNAME flattening, ALIAS or ANAME if your DNS provider supports it — or serve www and redirect the apex at your registrar.
Are preview addresses private?
They are unguessable and never indexed, but not private. Put a password or workspace protection on the site and the previews are behind it too.
The rest of the workspace
Same bill, same credentials, same audit log.
Your next deploy is one command away.
Create a workspace, link a folder, deploy. The free plan includes a site and needs no card.