Skip to main content
The Static preset serves files directly via nginx — ideal for HTML sites, single-page applications, documentation, and landing pages.

What’s Included

Pre-installed utilities: curl, wget, vim, htop, unzip.

Directory Structure

  • App Root: /home/instapod/app
  • Public Root: /home/instapod/app (same — everything is public)
  • Port: 80 (nginx)
  • nginx config: /etc/nginx/sites-available/default
The app root is the public root on this preset, so anything you upload is served. The one exception is dot-files: /.env, /.git/ and any other path with a dot-segment return 403 on every pod (.well-known/ is exempt). Everything else you put here - a .sql dump, a config.json, a backup/ folder - is a public URL. See .env is not reachable from the web.

Deploying Your Site

Upload Files

SCP

Git Clone (via Terminal)

Reloading

After updating files, reload nginx to pick up configuration changes:
For static files, nginx serves them directly — no reload is needed for simple HTML/CSS/JS changes. Only reload if you’ve modified the nginx configuration.

Single-Page Applications (SPA)

The default nginx config uses try_files $uri $uri/ =404, which returns 404 for routes that don’t match a file. For SPAs with client-side routing (React Router, Vue Router, etc.), you need to redirect all requests to index.html. Connect via SSH or the web terminal and update the nginx config:
This makes routes like /about or /dashboard serve your index.html, letting your JavaScript router handle them.

Use Cases

  • Static HTML/CSS/JS websites
  • Single-page applications (React, Vue, Svelte builds)
  • Documentation sites (VitePress, Docusaurus output)
  • Landing pages and marketing sites
  • File hosting