Only show guides for your app
Put plain HTML, CSS, and JavaScript online with zero code — deploy the Static Website template onto a PHP Web Server application, then drop your files into public/.
Not every website needs code. A portfolio, a landing page, a documentation site, a game jam entry — if it's HTML, CSS, JavaScript, and images, you can host it on Falix without writing a single line of backend logic. A real nginx web server does the work; you just supply the files.
| At a glance | |
|---|---|
| You need | A server running the PHP Web Server application (we only use its nginx part — no PHP required) |
| Plan | Any plan |
| Time | Ten minutes |
New to creating servers? Start with Create your first app server.
Use the template on this page. It writes an nginx setup plus a sample public/ folder onto your server, and — this is the part that saves you the headache — it wires your assigned SERVER_PORT into the nginx config automatically, so the site comes up on your public port with no editing.
A template only overwrites files with the same names, so it won't touch unrelated files.
⚠️ Heads up: If you deploy it onto a server currently running a different application (say Node.js), the panel will switch that server to PHP Web Server first, which reinstalls it and wipes its files — it warns you before doing so. On a fresh PHP Web Server, there's nothing to lose.
Press Start, then open your server's address from the Network page in a browser (see Your first web app for exactly where that address lives). You'll get an "It works!" page. That confirms nginx is serving public/ on your port.
Your whole site lives in the public/ folder. Open the File Manager, go into public/, and replace index.html, style.css, and the rest with your own files — or upload them over SFTP if you'd rather drag a folder across. The file layout maps straight to your URLs:
| File | URL |
|---|---|
public/index.html |
/ — your home page |
public/about/index.html |
/about/ |
public/blog/post.html |
/blog/post.html |
The home page must be named exactly public/index.html (lowercase), or the front page 404s. Structure your files the way you want your URLs to read.
Edits to files in public/ are served live from disk — save the file, then refresh the page in your browser. You do not need to restart the server for content edits.
💡 Tip: If you don't see the change, it's almost always your browser's cache: do a hard refresh (Ctrl/Cmd+Shift+R) to bypass it.
The one exception is the nginx config itself (nginx.template.conf) — if you change that, restart the server so nginx re-reads it.
You don't set content types by hand. nginx sends the right Content-Type for every file from its built-in mime.types list — .css as text/css, .js as JavaScript, images, fonts, PDFs, and downloads all get their correct type automatically. There's nothing to configure.
One thing the template does not ship is a custom "page not found" page: out of the box, a missing URL returns nginx's plain built-in 404. To show your own, add a public/404.html, then edit nginx.template.conf and add one line inside the server { ... } block:
error_page 404 /404.html;
Restart the server so nginx re-reads the config, and any missing path now serves your 404.html. (It's the config file, so a content-style refresh isn't enough — this one needs the restart.)
The address:port URL is fine for testing but ugly to share. When you're ready for a proper domain with automatic HTTPS, follow Domains and HTTPS.
public/index.html, and that /about/ has an index.html inside public/about/.