Vue.js Hosting
A project made with npm create vue@latest deploys as it is. Push it to GitHub and Chajio Cloud builds it and serves it over HTTPS, with Vue Router links that survive a refresh.
$ git push origin main
▸ Serving it as a static site (Vite single-page app)
▸ Build-time variables: VITE_API_URL
▸ npm ci
▸ npm run build
▸ Serving dist/ over HTTPS
✓ Live: https://my-app.live.chajio.cloud
How it works
How we build and run your Vue.js app
Detect
A
package.jsonthat depends onviteand has nostartscript is a single-page app: files the browser runs, with no server of its own.Build
Dependencies install from your lockfile, then
npm run buildruns, type check included. YourVITE_variables are baked into the bundle.Serve
Only
distis served. Any path that isn’t a file gets yourindex.html, so Vue Router’s history mode works with no setup.Update
Every push to your branch builds and publishes a new version. If one breaks something, roll back to the last good one in a click.
Get ready
Getting your Vue.js app ready
<script setup lang="ts">
const apiUrl = import.meta.env.VITE_API_URL ?? 'unset'
</script>
<template>
<p>API: {{ apiUrl }}</p>
</template>Variables starting with VITE_ reach your code as import.meta.env. Set them on the Environment tab, for example VITE_API_URL=https://api.example.com, and the build log lists them under “Build-time variables”.
{
"engines": { "node": "24.x" }
}create-vue writes a range, ^22.18.0 || >=24.12.0, that builds on the newest Node.js release. To stay on the version you develop on, set it as above. An .nvmrc file is not read.
Works with
What you can run
Vue 3 + Vite
What npm create vue@latest makes. Nothing to change.
Vue Router
History mode works on refresh and on shared links.
Pinia
State management, built into your bundle.
TypeScript
Type-checked by vue-tsc as part of the build.
Component libraries
Vuetify, PrimeVue or Element Plus install like any package.
Your API
Deploy it as its own app and call it from Vue.
In production
Running your Vue.js app in production
Public values only
Everything in a VITE_ variable ends up in the JavaScript your visitors download. API addresses and publishable keys, yes; passwords and secret keys, never.
New value, new build
Variables are fixed when your app is built. After changing one, accept the Redeploy prompt on the Environment tab: a restart would keep serving the old value.
Type errors stop the deploy
create-vue’s build script runs vue-tsc before vite build, so a TypeScript error fails the build and your current version keeps serving. Run npm run build on your computer to see it first.
Remove a leftover base
A base setting in vite.config.ts, left from hosting in a subfolder, gives a blank page and 404s for your scripts. Your app is served from the root of its domain, so delete it.
Every plan
Included on every plan
2 replicas of every app
Two copies behind a load balancer, so a restart or a failed machine never takes you offline.
A managed database
PostgreSQL, MariaDB or MongoDB, with its own standby replica on another machine.
Deploy on every push
Connect GitHub once; every push to your branch builds and goes live.
One-click rollbacks
Go back to any earlier successful deployment from the Deployments tab.
Free SSL, your domain
Certificates issued and renewed for you, plus a free .live.chajio.cloud address.
Build and runtime logs
Watch builds as they run, and see what your app prints as it serves visitors.
CPU, memory and network
Metrics for every app, from the last 15 minutes to the last 30 days.
Zero-downtime deploys
A new version takes visitors only once its health check passes.
Pricing
Vue.js hosting plans
Free Plan
5GB DB Storage · 2GB RAM
Then $3.50/mo
- 2 vCPU
- 2 Apps
- 1 Database
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Growth Plan
10GB DB Storage · 2GB RAM
- 3 vCPU
- 4 Apps
- 2 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Business Plan
20GB DB Storage · 4GB RAM
- 4 vCPU
- 6 Apps
- 3 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Pro Plan
30GB DB Storage · 8GB RAM
- 8 vCPU
- 10 Apps
- 5 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
FAQ
Vue.js hosting questions
Yes, with no setup. Any path that isn’t a real file is answered with your index.html, so /about and deeper links work on refresh and when shared. A missing file under /assets/ still returns a real 404, not your home page.
No. A Vite project with no start script is recognised as a single-page app, built with npm run build and served from dist. Your source code, package.json and node_modules are never served.
The one in the engines field of package.json. create-vue writes a range that resolves to the newest release; set "22.x" or "24.x" to stay on one version. Without engines, the build uses the current long-term-support release. An .nvmrc file is not read.
Only variables starting with VITE_ reach your code, as import.meta.env.VITE_NAME. They are copied into your JavaScript when the app is built, so they are visible to visitors and a new value needs a redeploy.
Yes. Add it on the app’s Domains tab, prove you own it with a DNS record, and an SSL certificate is issued for it automatically. Every app also gets a free .live.chajio.cloud address.
You can start on the Free plan: free for your first month, then $3.50 a month, with 2 vCPU, 2GB RAM, 2 apps and a managed database. The Growth, Business and Pro plans add more CPU, memory, apps and databases as you grow.
Plans are priced and billed in US dollars, and you pay by card at checkout.
More App Hosting
Deploying something else?
Deploy your Vue.js app today
Your first month is on us, with a managed database and two replicas from day one.