Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.
Lovable builds the app; InstaPods runs it. The flow is three steps: connect your Lovable project to GitHub, point a pod at the repo, and let auto-deploy take over. Every change you make in Lovable pushes to GitHub, and InstaPods rebuilds and redeploys within a minute - on a real Linux server with HTTPS, SSH access, an optional managed database, and a flat monthly price instead of usage-metered hosting.
Lovable now meters both building and running your app out of one credit balance, including a “run credits” category that bills your deployed app’s database, storage, and network usage continuously. If that is what pushed you here, you can also stop building inside Lovable and build with a coding agent in your browser on your own Claude or Codex subscription. The full breakdown is in Lovable run credits explained (and the fix). This guide covers the simpler case: hosting a Lovable export.
In your Lovable project, click the GitHub icon in the top bar and connect your GitHub account, then transfer the project. Lovable creates a private repo with all your source and auto-commits to it on every change from now on.This is free and needs no paid Lovable or GitHub plan.
In the pod’s Git tab, click Connect GitHub Repository, install the InstaPods GitHub App (one-time per account), select the repo Lovable created, and click Deploy.InstaPods pulls the code, runs the install and build it auto-detects for a Vite app, and starts the server. Your app goes live at https://<pod-name>.<region>.instapods.app with HTTPS auto-issued.
The pod's Git tab before connecting a repository.
Prefer the terminal? One command does the same thing: instapods git connect my-app --repo https://github.com/you/your-lovable-repo --deploy. See Git deployment.
After the one-time setup you never touch deployment again. InstaPods watches the repo through the GitHub App webhook, so the loop is:
You make changes in Lovable.
Lovable commits to GitHub.
InstaPods detects the push, pulls, rebuilds, and redeploys - your live site reflects the change in about 30-60 seconds.
If a deploy fails (a build error or a missing env var), InstaPods keeps the previous version running and surfaces the failure in the dashboard, so a bad commit never takes your site down. You can also roll back to any earlier deploy instantly.
Lovable’s preview environment injects keys for Supabase, OpenAI, and other services; production needs them set on the pod. Set them from the CLI and reload:
instapods env set my-app VITE_SUPABASE_URL=https://xyz.supabase.co VITE_SUPABASE_ANON_KEY=ey...instapods pods reload my-app
Vite only exposes variables prefixed with VITE_ to client-side code. If your Supabase calls work in Lovable’s preview but fail in production, you are almost always missing a VITE_-prefixed variable. Copy the exact names from your Lovable project’s environment, prefix and all.
If your Lovable app already uses Supabase, keep it - just point the app at your Supabase URL and key via env vars (above).To run everything in one pod instead, add a managed database from the pod’s Services tab - PostgreSQL, MySQL, or Redis. Credentials are auto-generated and exposed to your app, with no per-database billing on top of the pod’s flat price. See Services.
Map any domain you own to the pod with a single CNAME and SSL is auto-issued - no certbot, no DNS challenges. Multiple domains per pod are supported. See Custom domains.
Lovable apps with heavy dependencies (chart libraries, large icon sets, complex UI kits) can exhaust the Launch plan’s build memory. Move the pod to the Build plan ($7/mo) for more build RAM - the running app is usually fine on Launch afterward.
npm install fails on peer-dependency conflicts
Set a custom build command that relaxes peer-dep resolution, then redeploy:
InstaPods auto-detects the port your app listens on, but if your server hardcodes one (Lovable’s local dev defaults to 8080), read it from the environment instead so the orchestrator can route to it:
const port = process.env.PORT || 8080;
Supabase calls fail only in production
This is an environment-variable problem, not a code one - see Environment variables above. Check the pod’s variables against what Lovable’s preview had, including the VITE_ prefix.
Skip Lovable’s credits entirely and build on your own Claude or Codex subscription.
Git deployment
Branch settings, build commands, deploy history, and rollback.
Import from AI builders
Deploy a Bolt, v0, Claude, or ChatGPT export without a repo.
Environment variables
Configure Supabase keys, API keys, and secrets per pod.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"InstaPods","colors":{"primary":"#22C55E","light":"#4ADE80","dark":"#16A34A"},"logo":{"light":"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/light.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=656c06357db1c2920070d105fcd54372","dark":"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/dark.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=7faaa1a7ebdd870f6e17ad2fea85c2ea"},"favicon":"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/favicon.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=d791be1fb3e40fb9d83d93e1a2bb5ac0","api":{"openapi":"api-reference/openapi.yaml"},"appearance":{"default":"dark"},"footer":{"socials":{"github":"https://github.com/instapods","x":"https://x.com/instapods"}},"fonts":{"family":"Outfit"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"instapods","hasAudioNarration":false,"actualSubdomain":"instapods","customDomains":["docs.instapods.com"],"gitSource":{"type":"github","owner":"instapods","repo":"instapods","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac894091ca625521b43548e","collectionId":"f0822df2-b38f-4b48-8dd3-5da93998dfd1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac894091ca625521b43548e"},"entitlements":{},"buildId":"6acc81300027d2354abb1203","clientVersion":"0.0.3902","searchFilterCounts":[{"language":"default","tag":"Documentation","count":40},{"language":"default","tag":"API Reference","count":24},{"language":"default","tag":"CLI Reference","count":22},{"language":"default","tag":"Guides","count":11},{"language":"default","tag":"Dashboard","count":9},{"language":"default","tag":"MCP Reference","count":8},{"language":"default","tag":"Presets","count":6},{"language":"default","tag":"Getting Started","count":5},{"language":"default","tag":"Services","count":4},{"language":"default","tag":"SSH \u0026 Files","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"teamspace","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"guides/deploy-lovable-app","slug":"/guides/deploy-lovable-app","pageMetadata":{"title":"Deploy a Lovable app","description":"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.","href":"/guides/deploy-lovable-app"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,annotation:`annotation`,code:`code`,li:`li`,math:`math`,mi:`mi`,mn:`mn`,mo:`mo`,mrow:`mrow`,ol:`ol`,p:`p`,pre:`pre`,semantics:`semantics`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Note,OptimizedImage,Step,Steps,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Lovable builds the app; InstaPods runs it. The flow is three steps: connect your Lovable project to GitHub, point a pod at the repo, and let auto-deploy take over. Every change you make in Lovable pushes to GitHub, and InstaPods rebuilds and redeploys within a minute - on a real Linux server with HTTPS, SSH access, an optional managed database, and a flat monthly price instead of usage-metered hosting.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Lovable now meters both `,_jsx(_components.strong,{children:`building`}),` and `,_jsx(_components.strong,{children:`running`}),` your app out of one credit balance, including a “run credits” category that bills your deployed app’s database, storage, and network usage continuously. If that is what pushed you here, you can also stop building inside Lovable and `,_jsx(_components.a,{href:`/guides/ai-builder`,children:`build with a coding agent in your browser`}),` on your own Claude or Codex subscription. The full breakdown is in `,_jsx(_components.a,{href:`https://instapods.com/blog/lovable-run-credits/`,children:`Lovable run credits explained (and the fix)`}),`. This guide covers the simpler case: hosting a Lovable export.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`what-you-need`,children:`What you need`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A Lovable project (any plan, including free).`}),`\n`,_jsx(_components.li,{children:`A GitHub account - Lovable pushes your source here, and InstaPods deploys from it.`}),`\n`,_jsx(_components.li,{children:`An InstaPods account with a payment method on file. Your first card add grants a one-time $10 credit.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`deploy-in-three-steps`,children:`Deploy in three steps`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Connect Lovable to GitHub`,children:[_jsxs(_components.p,{children:[`In your Lovable project, click the `,_jsx(_components.strong,{children:`GitHub`}),` icon in the top bar and connect your GitHub account, then transfer the project. Lovable creates a private repo with all your source and auto-commits to it on every change from now on.`]}),_jsx(_components.p,{children:`This is free and needs no paid Lovable or GitHub plan.`})]}),_jsxs(Step,{title:`Create a Node.js pod`,children:[_jsxs(_components.p,{children:[`At `,_jsx(_components.a,{href:`https://app.instapods.com`,children:`app.instapods.com`}),`, click `,_jsx(_components.strong,{children:`New Pod`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Preset:`}),` `,_jsx(_components.strong,{children:`Node.js`}),` - Lovable apps are Vite + React on Node under the hood.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Plan:`}),` `,_jsxs(_components.strong,{children:[`Launch (`,_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`3`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`m`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`∗`}),_jsx(_components.mo,{children:`∗`}),_jsx(_components.mi,{children:`h`}),_jsx(_components.mi,{children:`a`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`l`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`m`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mi,{children:`L`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`v`}),_jsx(_components.mi,{children:`a`}),_jsx(_components.mi,{children:`b`}),_jsx(_components.mi,{children:`l`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`a`}),_jsx(_components.mi,{children:`p`}),_jsx(_components.mi,{children:`p`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{mathvariant:`normal`,children:`.`}),_jsx(_components.mi,{children:`C`}),_jsx(_components.mi,{children:`h`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mo,{children:`∗`}),_jsx(_components.mo,{children:`∗`}),_jsx(_components.mi,{children:`B`}),_jsx(_components.mi,{children:`u`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mi,{children:`l`}),_jsx(_components.mi,{children:`d`}),_jsx(_components.mo,{stretchy:`false`,children:`(`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`3/mo)** handles most Lovable apps. Choose **Build (`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord`,children:`3/`}),_jsx(_components.span,{className:`mord mathnormal`,children:`m`}),_jsx(_components.span,{className:`mord mathnormal`,children:`o`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`∗`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord`,children:`∗`}),_jsx(_components.span,{className:`mord mathnormal`,children:`han`}),_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0197em`},children:`l`}),_jsx(_components.span,{className:`mord mathnormal`,children:`es`}),_jsx(_components.span,{className:`mord mathnormal`,children:`m`}),_jsx(_components.span,{className:`mord mathnormal`,children:`os`}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`}),_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`mord mathnormal`,children:`o`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`v`}),_jsx(_components.span,{className:`mord mathnormal`,children:`ab`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0197em`},children:`l`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mord mathnormal`,children:`a`}),_jsx(_components.span,{className:`mord mathnormal`,children:`pp`}),_jsx(_components.span,{className:`mord mathnormal`,children:`s`}),_jsx(_components.span,{className:`mord`,children:`.`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0715em`},children:`C`}),_jsx(_components.span,{className:`mord mathnormal`,children:`h`}),_jsx(_components.span,{className:`mord mathnormal`,children:`oose`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`∗`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord`,children:`∗`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0502em`},children:`B`}),_jsx(_components.span,{className:`mord mathnormal`,children:`u`}),_jsx(_components.span,{className:`mord mathnormal`,children:`i`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0197em`},children:`l`}),_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`mopen`,children:`(`})]})]})]}),`7/mo)`]}),` if you want a database in the same pod or your build needs more memory.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Region:`}),` pick the closest (EU and US available).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Name:`}),` becomes the pod’s subdomain.`]}),`\n`]}),_jsx(_components.p,{children:`The pod launches in seconds - no provisioning wait.`}),_jsx(Frame,{caption:`Create wizard: Custom Code, Node.js preset (version selectable).`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=70b72ba05771ba62dc8ba92aaa1b81f3`,alt:`InstaPods create-pod wizard with Custom Code selected and the Node.js preset highlighted`,\"data-og-width\":`1280`,width:`1280`,\"data-og-height\":`577`,height:`577`,\"data-path\":`images/lovable-step2-create-pod.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?w=280\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=0653ba4b651b6666e61a49745c324e12 280w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?w=560\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=2667ea55292db61bb6ed99cb659239c0 560w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?w=840\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=88250610c8cca71def8577f2b335438b 840w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?w=1100\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=33d5e6154cc8a33fd648cdb49c564678 1100w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?w=1650\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=eb171a1df087dbf82c1f88ab46cbe74b 1650w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step2-create-pod.png?w=2500\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=83452cae58897423b538b3e4eed85161 2500w`})})]}),_jsxs(Step,{title:`Connect the repo and deploy`,children:[_jsxs(_components.p,{children:[`In the pod’s `,_jsx(_components.strong,{children:`Git`}),` tab, click `,_jsx(_components.strong,{children:`Connect GitHub Repository`}),`, install the InstaPods GitHub App (one-time per account), select the repo Lovable created, and click `,_jsx(_components.strong,{children:`Deploy`}),`.`]}),_jsxs(_components.p,{children:[`InstaPods pulls the code, runs the install and build it auto-detects for a Vite app, and starts the server. Your app goes live at `,_jsx(_components.code,{children:`https://\u003cpod-name>.\u003cregion>.instapods.app`}),` with HTTPS auto-issued.`]}),_jsx(Frame,{caption:`The pod's Git tab before connecting a repository.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=d332299809e3dd32f0dfb89666325101`,alt:`InstaPods pod Git tab showing the Git Deployment card with a Sign in with GitHub button`,\"data-og-width\":`1280`,width:`1280`,\"data-og-height\":`577`,height:`577`,\"data-path\":`images/lovable-step3-git-connect.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?w=280\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=f048aaf34cc781e1564267b0bfa747de 280w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?w=560\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=2fa0c6d2b75ca16d48d5770ad3b2f3d8 560w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?w=840\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=c1dea11bc1e221471bd3379bc71e8b45 840w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?w=1100\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=abfe8a81f0fa6882270579e5992ad594 1100w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?w=1650\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=b36a67099251024968f84993c6c7e2e0 1650w, https://mintcdn.com/instapods/nOD-N6GZ1x2tPsvf/images/lovable-step3-git-connect.png?w=2500\u0026fit=max\u0026auto=format\u0026n=nOD-N6GZ1x2tPsvf\u0026q=85\u0026s=d848fb8029322cb1b7a244dda558b8d4 2500w`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Prefer the terminal? One command does the same thing: `,_jsx(_components.code,{children:`instapods git connect my-app --repo https://github.com/you/your-lovable-repo --deploy`}),`. See `,_jsx(_components.a,{href:`/guides/git-deployment`,children:`Git deployment`}),`.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`auto-deploy-on-every-change`,children:`Auto-deploy on every change`}),`\n`,_jsx(_components.p,{children:`After the one-time setup you never touch deployment again. InstaPods watches the repo through the GitHub App webhook, so the loop is:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`You make changes in Lovable.`}),`\n`,_jsx(_components.li,{children:`Lovable commits to GitHub.`}),`\n`,_jsx(_components.li,{children:`InstaPods detects the push, pulls, rebuilds, and redeploys - your live site reflects the change in about 30-60 seconds.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`If a deploy fails (a build error or a missing env var), InstaPods keeps the previous version running and surfaces the failure in the dashboard, so a bad commit never takes your site down. You can also `,_jsx(_components.a,{href:`/guides/git-deployment#rollback`,children:`roll back`}),` to any earlier deploy instantly.`]}),`\n`,_jsx(Heading,{level:`2`,id:`environment-variables`,children:`Environment variables`}),`\n`,_jsx(_components.p,{children:`Lovable’s preview environment injects keys for Supabase, OpenAI, and other services; production needs them set on the pod. Set them from the CLI and reload:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`instapods`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-app`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` VITE_SUPABASE_URL=https://xyz.supabase.co`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` VITE_SUPABASE_ANON_KEY=ey...`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`instapods`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pods`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` reload`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-app`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Vite only exposes variables prefixed with `,_jsx(_components.code,{children:`VITE_`}),` to client-side code. If your Supabase calls work in Lovable’s preview but fail in production, you are almost always missing a `,_jsx(_components.code,{children:`VITE_`}),`-prefixed variable. Copy the exact names from your Lovable project’s environment, prefix and all.`]})}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/guides/environment-variables`,children:`Environment variables`}),` for the full reference.`]}),`\n`,_jsx(Heading,{level:`2`,id:`add-a-database`,children:`Add a database`}),`\n`,_jsx(_components.p,{children:`If your Lovable app already uses Supabase, keep it - just point the app at your Supabase URL and key via env vars (above).`}),`\n`,_jsxs(_components.p,{children:[`To run everything in one pod instead, add a managed database from the pod’s `,_jsx(_components.strong,{children:`Services`}),` tab - `,_jsx(_components.strong,{children:`PostgreSQL`}),`, `,_jsx(_components.strong,{children:`MySQL`}),`, or `,_jsx(_components.strong,{children:`Redis`}),`. Credentials are auto-generated and exposed to your app, with no per-database billing on top of the pod’s flat price. See `,_jsx(_components.a,{href:`/services/overview`,children:`Services`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`custom-domain`,children:`Custom domain`}),`\n`,_jsxs(_components.p,{children:[`Map any domain you own to the pod with a single CNAME and SSL is auto-issued - no certbot, no DNS challenges. Multiple domains per pod are supported. See `,_jsx(_components.a,{href:`/dashboard/custom-domains`,children:`Custom domains`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`common-issues`,children:`Common issues`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Build runs out of memory`,id:`build-runs-out-of-memory`,children:_jsxs(_components.p,{children:[`Lovable apps with heavy dependencies (chart libraries, large icon sets, complex UI kits) can exhaust the Launch plan’s build memory. Move the pod to the `,_jsx(_components.strong,{children:`Build plan ($7/mo)`}),` for more build RAM - the running app is usually fine on Launch afterward.`]})}),_jsxs(Accordion,{title:`npm install fails on peer-dependency conflicts`,id:`npm-install-fails-on-peer-dependency-conflicts`,children:[_jsx(_components.p,{children:`Set a custom build command that relaxes peer-dep resolution, then redeploy:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`instapods`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` connect`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-app`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --repo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/you/your-lovable-repo`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --build-cmd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"npm install --legacy-peer-deps \u0026\u0026 npm run build\"`})]}),`\n`]})})})]}),_jsxs(Accordion,{title:`App is up but the URL shows a 502`,id:`app-is-up-but-the-url-shows-a-502`,children:[_jsxs(_components.p,{children:[`InstaPods auto-detects the port your app listens on, but if your server hardcodes one (Lovable’s local dev defaults to `,_jsx(_components.code,{children:`8080`}),`), read it from the environment instead so the orchestrator can route to it:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` port`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PORT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 8080`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})})]}),_jsx(Accordion,{title:`Supabase calls fail only in production`,id:`supabase-calls-fail-only-in-production`,children:_jsxs(_components.p,{children:[`This is an environment-variable problem, not a code one - see `,_jsx(_components.a,{href:`#environment-variables`,children:`Environment variables`}),` above. Check the pod’s variables against what Lovable’s preview had, including the `,_jsx(_components.code,{children:`VITE_`}),` prefix.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Build with AI in your browser`,icon:`robot`,href:`/guides/ai-builder`,children:_jsx(_components.p,{children:`Skip Lovable’s credits entirely and build on your own Claude or Codex subscription.`})}),_jsx(Card,{title:`Git deployment`,icon:`code-branch`,href:`/guides/git-deployment`,children:_jsx(_components.p,{children:`Branch settings, build commands, deploy history, and rollback.`})}),_jsx(Card,{title:`Import from AI builders`,icon:`file-import`,href:`/guides/import-artifacts`,children:_jsx(_components.p,{children:`Deploy a Bolt, v0, Claude, or ChatGPT export without a repo.`})}),_jsx(Card,{title:`Environment variables`,icon:`key`,href:`/guides/environment-variables`,children:_jsx(_components.p,{children:`Configure Supabase keys, API keys, and secrets per pod.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Deploy a Lovable app","description":"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.","href":"/guides/deploy-lovable-app"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What you need","slug":"what-you-need","depth":2,"children":[]},{"title":"Deploy in three steps","slug":"deploy-in-three-steps","depth":2,"children":[]},{"title":"Auto-deploy on every change","slug":"auto-deploy-on-every-change","depth":2,"children":[]},{"title":"Environment variables","slug":"environment-variables","depth":2,"children":[]},{"title":"Add a database","slug":"add-a-database","depth":2,"children":[]},{"title":"Custom domain","slug":"custom-domain","depth":2,"children":[]},{"title":"Common issues","slug":"common-issues","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"instapods","siteName":"InstaPods","title":"Deploy a Lovable app - InstaPods","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-22T11:49:44.197Z","originalFileLocation":"guides/deploy-lovable-app.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.\">\u003cmeta data-mint-head name=\"application-name\" content=\"InstaPods\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Deploy a Lovable app - InstaPods\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InstaPods\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.instapods.com/guides/deploy-lovable-app\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Deploy a Lovable app - InstaPods\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/instapods/iSf5azwbd99lVhXv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"InstaPods\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#22C55E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.instapods.com/guides/deploy-lovable-app\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/deploy-lovable-app.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.instapods.com/#organization\",\"name\":\"InstaPods\",\"url\":\"https://docs.instapods.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/instapods/Eo_UebmFKktn__Oo/logo/light.svg?fit=max\u0026auto=format\u0026n=Eo_UebmFKktn__Oo\u0026q=85\u0026s=656c06357db1c2920070d105fcd54372\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.instapods.com#website\",\"name\":\"InstaPods\",\"url\":\"https://docs.instapods.com\",\"publisher\":{\"@id\":\"https://docs.instapods.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.instapods.com/guides/deploy-lovable-app#webpage\",\"url\":\"https://docs.instapods.com/guides/deploy-lovable-app\",\"name\":\"Deploy a Lovable app\",\"description\":\"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.\",\"dateModified\":\"2026-06-22T11:49:44.197Z\",\"isPartOf\":{\"@id\":\"https://docs.instapods.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.instapods.com/guides/deploy-lovable-app#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.instapods.com/guides/deploy-lovable-app#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.instapods.com/guides/ai-builder\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploy a Lovable app\",\"item\":\"https://docs.instapods.com/guides/deploy-lovable-app\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.instapods.com/guides/deploy-lovable-app#article\",\"headline\":\"Deploy a Lovable app\",\"name\":\"Deploy a Lovable app\",\"description\":\"Connect a Lovable project to GitHub, point a pod at the repo, and auto-deploy your full-stack app to a real Linux server on a flat monthly price.\",\"url\":\"https://docs.instapods.com/guides/deploy-lovable-app\",\"mainEntityOfPage\":{\"@id\":\"https://docs.instapods.com/guides/deploy-lovable-app#webpage\"},\"dateModified\":\"2026-06-22T11:49:44.197Z\",\"publisher\":{\"@id\":\"https://docs.instapods.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.instapods.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"InstaPods\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"InstaPods","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to InstaPods","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"},{"title":"Core Concepts","href":"/getting-started/concepts"},{"title":"Creating a Pod","href":"/getting-started/creating-a-pod"},{"title":"Managing Pods","href":"/getting-started/managing-pods"}]},{"group":"Dashboard","pages":[{"title":"Dashboard Overview","href":"/dashboard/overview"},{"title":"Pod Detail","href":"/dashboard/pod-detail"},{"title":"Web IDE","href":"/dashboard/web-ide"},{"title":"Web Terminal","href":"/dashboard/web-terminal"},{"title":"Backups","href":"/dashboard/backups"},{"title":"Custom Domains","href":"/dashboard/custom-domains"},{"title":"Teams","href":"/dashboard/teams"},{"title":"Billing","href":"/dashboard/billing"},{"title":"Account Settings","href":"/dashboard/account-settings"}]},{"group":"Presets","pages":[{"title":"Presets Overview","href":"/presets/overview"},{"title":"Static Site","href":"/presets/static"},{"title":"PHP","href":"/presets/php"},{"title":"Node.js","href":"/presets/nodejs"},{"title":"Python","href":"/presets/python"},{"title":"Go","href":"/presets/go"}]},{"group":"Services","pages":[{"title":"Services Overview","href":"/services/overview"},{"title":"MySQL","href":"/services/mysql"},{"title":"PostgreSQL","href":"/services/postgresql"},{"title":"Redis","href":"/services/redis"}]},{"group":"SSH \u0026 Files","pages":[{"title":"SSH Access","href":"/ssh-and-files/ssh-access"},{"title":"File Management","href":"/ssh-and-files/file-management"}]},{"group":"Guides","pages":[{"title":"Build with AI in your browser","description":"Describe an app to a coding agent and watch it build, on your own Claude or Codex subscription, with no build credits and no run credits.","href":"/guides/ai-builder"},{"title":"Deploy a Lovable app","href":"/guides/deploy-lovable-app"},{"title":"Git Deployment","description":"Connect a Git repository to your pod and deploy automatically on every push.","href":"/guides/git-deployment"},{"title":"Add a \"Deploy to InstaPods\" button","href":"/guides/deploy-button"},{"title":"1-Click Apps","href":"/guides/one-click-apps"},{"title":"Worker Pods","href":"/guides/worker-pods"},{"title":"Transfer a Pod","href":"/guides/transfer-a-pod"},{"title":"Deploy, Reload, Restart","href":"/guides/operations"},{"title":"Environment Variables","href":"/guides/environment-variables"},{"title":"Import an existing app","href":"/guides/import-existing-app"},{"title":"Import from AI builders","href":"/guides/import-artifacts"}]},{"group":"Partners","pages":[{"title":"Hosting Partnership","href":"/partners/hosting-partnership"}]},{"group":"Support","pages":[{"title":"FAQ","href":"/support/faq"},{"title":"Troubleshooting","href":"/support/troubleshooting"}]}]},{"tab":"CLI Reference","pages":[{"title":"CLI Reference","href":"/cli/installation"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"MCP Reference","pages":[{"title":"MCP Reference","href":"/mcp/overview"}]}]},"title":"Deploy a Lovable app - InstaPods","buildId":"dpl_C3fsfi1EcrBns9Vx91gUSN1X3Hi4","deploymentId":"dpl_C3fsfi1EcrBns9Vx91gUSN1X3Hi4","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-D4lgL6Y4.js","DynamicMarkdown-B-Kaxar8.js","zoom-image-lightbox-Evwtz42K.js","PlusIcon-DYlJbUaT.js","lightbox-handle-r17bVUz3.js"]}