Lovable is a genuinely good way to go from a prompt to a working app fast. The friction shows up later: hosting costs that scale with usage, custom domains gated behind a plan tier, and your app living somewhere you don't actually control. None of that is a reason to stop using Lovable to build — it's a reason to stop using it to host. This guide moves the hosting half to a VPS you own, while you keep prompting changes in Lovable exactly as before.
Why this works cleanly
A Lovable project is real code the whole time — React, Vite, TypeScript, Tailwind, usually shadcn/ui components, optionally wired to Supabase for auth and a database. Lovable's own GitHub sync pushes that code to a real repo on your account every time you make a change in the editor. That means the migration isn't an export-and-hope situation — it's "deploy this repo somewhere else," which is exactly what DeployOS does.
What you need
- A Lovable project with GitHub sync turned on — in Lovable, open your project's settings and connect it to GitHub if you haven't already. This creates (or updates) a real repository under your GitHub account.
- A VPS you can reach over SSH — a $5/month box is plenty for a Vite frontend.
- The DeployOS desktop app.
Step 1: Connect GitHub
From DeployOS Settings, click Continue with GitHub. It's a device-authorization flow — DeployOS shows a one-time code (already copied to your clipboard), opens GitHub in your browser, and connects the moment you approve it. No token to paste. See Connecting GitHub if you'd rather use a personal access token instead.
Step 2: Deploy the repo
Applications → New App, pick the repo Lovable synced to from the picker, and click Create, then Deploy.
Lovable's generated projects don't ship a Dockerfile, which is exactly the case Railpack exists for: it inspects the repo, recognizes a Vite/React build, and builds and serves it — no compose file, no config, nothing for you to write. Watch the live deploy log stream the clone, build, and container start, then the app is running.
Step 3: Prove it out on a subdomain first
Don't point your real domain at the new server on day one — point a throwaway subdomain at it instead, something like new.yourdomain.com or test.yourdomain.com. Add it as the custom domain on the app's Config tab, add the matching A record, and DeployOS requests the HTTPS certificate for it automatically, the same as it would for any domain — see Domains & SSL.
This is the step that catches problems while they're cheap: confirm the build actually matches what Lovable was serving, that Supabase auth and queries work against whichever project you pointed it at, that nothing regressed. Your live app keeps running on Lovable's hosting the entire time you're checking this — nobody visiting your real domain sees anything change.
Once you're confident it's solid, switch the Config tab's custom domain from the subdomain to your real one (and update the A record to match). That's the moment you actually cut over — and the only moment anyone visiting your real domain notices anything happened.
Step 4: Supabase
If your Lovable project uses Supabase for auth or a database, you have two honest options:
Keep the Supabase project you already have. Lovable's Supabase integration connects to a real Supabase project — the URL and anon key your frontend was already built against keep working unchanged, whether they're baked into the built code or read from environment variables you set on the app's Config tab. Nothing about moving the frontend off Lovable requires moving Supabase too.
Or bring Supabase onto the same server. DeployOS ships self-hosted Supabase as a one-click template — the real stack (Postgres, Auth, REST API, Realtime, Storage, Studio, behind a Kong gateway), with the same anon and service-role key shape your app already expects, generated automatically. Point your app's env vars at it instead of the hosted project, and you've moved both halves off a monthly bill onto a server you own.
Step 5: Keep using Lovable to build
This is the part worth not giving up: turn on auto-deploy on the app's Overview tab. DeployOS watches the branch Lovable's GitHub sync pushes to, and redeploys the moment it moves. Keep prompting changes in Lovable's editor exactly like before — they land on your own VPS automatically, same as they used to land on Lovable's hosting.
Step 6: It's just an app now
From here, it's on your Applications list like anything else — logs, instant rollback to the last 3 builds, and a 9-step App Doctor if something's not answering. If you self-hosted Supabase too, its database gets the same scheduled-backup treatment every database on DeployOS does.
Your UI, built by prompting. Your server, your domain, your keys.