Static HTML on CloudMagnus
A working empty htdocs/ ready for your HTML, CSS, and JavaScript files.
What our scaffold installs
- A placeholder
htdocs/index.htmlthat says "Your static site is ready. Upload your HTML, CSS, and JavaScript via SFTP." - nginx vhost configured for static file serving
- No runtimes, no build tooling, no database
What you do next
- SFTP into your site (credentials on site detail page).
- Delete the placeholder
htdocs/index.html. - Upload your HTML, CSS, JS, images, fonts, etc. into
htdocs/. - Visit your domain. Done.
What works out of the box
- Custom 404 pages. Drop
htdocs/404.htmland nginx serves it on missing files. - Pretty URLs. nginx tries
index.htmlin any directory. Soexample.com/about/serveshtdocs/about/index.html. - Cache headers. Static files get sensible cache control by default.
- HTTPS. Free Let's Encrypt cert; HTTP redirects to HTTPS automatically.
What doesn't
- Server-side anything. No PHP, no Node, no Python. If you need a contact form, use a service like Formspree, Tally, or Web3Forms that takes form submissions on its end.
- Build pipelines. If you're using Hugo, Jekyll, Eleventy, or any static site generator, build locally and ship the output.
- Per-route routing logic. Static means static. For SPA fallback (single-page apps), use the React SPA type instead.
Static site generators
Build the output locally; SFTP the contents.
- Hugo:
hugooutputs topublic/. SFTPpublic/*intohtdocs/. - Jekyll:
jekyll buildoutputs to_site/. SFTP that. - Eleventy: default output
_site/. - Astro:
astro buildoutputs todist/.
Common static site issues
404 on a file you definitely uploaded
Check the case of the filename. Most filesystems are case-sensitive. About.html and about.html are different files; nginx serves what's there.
CSS or JS doesn't load
Open dev tools, check the network tab for the actual request. Usually a path issue: absolute paths (/styles.css) work; relative paths (styles.css) work from the page that includes them but not from subpages.
Everything's an HTTP, not HTTPS
The platform redirects HTTP to HTTPS automatically once your SSL cert is installed. If you're seeing HTTP, either the cert hasn't issued yet (check the dashboard) or you're hard-typing http:// in the URL (the redirect should still kick in).