Static sites
Deploy a static site or React app on Replov
A Static Site on Replov is built from your repository in Docker, and the generated files are copied into a pinned Nginx image. Traefik serves it over HTTPS, the same way as web services. Browser routes fall back to index.html, so client-side routers work.
Supported projects: plain HTML, Vite (React, Vue, Svelte), Create React App, Angular, Astro, Gatsby, Next.js with output: 'export', Nuxt generate, SvelteKit with adapter-static, Hugo, Jekyll and Flutter Web.
Last verified against the product on .
Before you start
- A repository whose build produces a folder containing index.html.
- For Node-based frameworks, a build script in package.json and a committed lockfile.
How Replov builds it
- Replov detects the framework and package manager (npm, pnpm, Yarn or Bun) and runs the build.
- The output folder is found from the framework (dist, build, out, public…). Set Output Directory if yours is non-standard.
- The build fails before release if the output folder or its index.html is missing.
Deploy it
- 1
Sign in to Replov and connect GitHub (Connect GitHub / Import from GitHub). Replov asks for access to the repositories you choose.
- 2
Create a project for the repository, then add a service to it.
- 3
Choose Service Type: Static Site, select the repository and Branch, and set Root Directory if the site is in a subfolder.
- 4
Leave Build Command empty to use the framework’s build script, or enter your own.
- 5
Set Output Directory only if your build writes somewhere non-standard.
- 6
Add build-time Environment Variables (for example VITE_API_URL) and deploy on the Nano tier.
Example: vite.config.js (no special config needed)
// Vite builds to dist/, which Replov detects.
// Read public, non-secret settings at build time:
const apiUrl = import.meta.env.VITE_API_URL;Environment variables and ports
- Static sites have no server: every variable used by the build ends up in files that any visitor can download. Never put API secrets, passwords or service-role keys in them.
- Replov scans the published files for credentials on every deploy and warns you if it finds any; findings do not block the deploy.
Domains and HTTPS
Every web service and static site gets an HTTPS address of the form <service-name>-<4 characters>.replov.com once it is live.
To use your own domain, open the service, choose Connect Domain and publish the CNAME and TXT records Replov shows at your DNS provider. After verification Replov routes the hostname and issues a Let’s Encrypt certificate automatically. More on HTTPS.
Logs and monitoring
The build log streams while the deployment runs; the first failing command and the lines just above it usually explain a failed build. Runtime logs (with live streaming) and CPU, memory and network metrics are on the service page. See service logs.
Troubleshooting
- Build fails with “index.html not found”
- The output folder is not where Replov looked. Set Output Directory to the folder your build creates.
- A page works from the home page but 404s on refresh
- This should not happen for SPA routes; check that the path is a route and not a missing asset file (missing files return a real 404).
- Next.js or Nuxt deploys fail as a static site
- Only output: 'export' (Next.js) and generate (Nuxt) are static. A server-rendered app needs a Web Service.
Related
Deploy your repository on Replov
Connect GitHub, choose a service type and a compute tier, and watch the build log.