How do you deploy an app you built with AI?
The shortest way to publish an app you built with an AI tool is this: order a Next.js server from Seturack, copy the Paste into your AI tool row from the Overview tab of your panel, and paste it into the coding tool that has your project open. The tool connects the code to the server through GitHub, builds it and gives you an HTTPS address. From there, every git push can put a new version live.
Whichever tool wrote it, the result is usually an ordinary Next.js, Vite, Astro, Node or Python project. The catch is that AI tools are good at getting code to run and less careful about what production needs, so this guide includes a checklist.
A guide for your tool
| Where did you build it? | How the code gets out | Guide |
|---|---|---|
| Cursor, Claude Code, Windsurf | It's already on your computer | The tool deploys it |
| Lovable | Git sync or a zip | Lovable guide |
| Bolt.new | GitHub or a zip | Bolt.new guide |
| v0 | GitHub | v0 guide |
| Replit | Git pane or a zip | Replit guide |
| ChatGPT, Claude | Saving the code to a file | Publishing from scratch |
Deploying with the text you paste
- Order a server from the Next.js VPS page. This option comes with the Coolify panel, which isn't limited to Next.js.
- In your Seturack panel, open the server from My servers and wait for the App row on the Overview tab to say it's ready.
- Copy the Paste into your AI tool row. It follows this pattern:
Deploy this project to my Seturack server. Read and follow the instructions first: https://www.seturack.com/deploy.txt Panel: PANEL-ADDRESS API key: API-KEY - Open the project in a coding tool that can run commands and paste the text.
- The tool inspects the project, connects the repository, creates the app and watches the build. It asks you for missing values and approvals.
- Open the HTTPS address it gives you and try the app yourself.
Keep the API key in that text as safe as a password. In our tests, Next.js, TanStack Start, Vite (static), plain HTML, Astro and Flask projects all worked, and deployments took 1 to 6 minutes.
What should you check before going live?
| Check | Why it matters | How to look |
|---|---|---|
| Are secrets in the code? | A committed key stays in the Git history after you delete the file. | git ls-files | grep -i env |
| Does the build pass? | Code that runs locally can still fail the build with type errors. | npm run build |
| Is there a lockfile? | The server needs it to install the versions you tested. | ls *lock* |
| Any local addresses left? | A localhost URL won't work in production. | grep -rn localhost app src |
| Which address does the app listen on? | A server on 127.0.0.1 can't be reached from outside. Use 0.0.0.0. | grep -rn "127.0.0.1" app src |
| Is the database a file? | The container is rebuilt on every deploy, and a SQLite file inside it disappears. | grep -rln sqlite app src |
The grep commands exit with an error code when they find nothing, which is fine. If app or src doesn't exist, drop that name.
The most common mistake in AI-built apps is a model key leaking to the browser. In Next.js, a variable starting with NEXT_PUBLIC_ is written into the browser code during the build, so anyone can read it. Never give model or payment keys that prefix. If you already pushed a key, deleting it isn't enough: revoke it with the provider and issue a new one.
How do you put the code on GitHub?
The server deploys from a Git repository. If you have none, your coding tool creates a private one once you approve. To do it yourself, make sure .gitignore has a line for .env, then run these in the project folder. The gh command line tool creates the repository and pushes the code:
git init
git add .
git commit -m "first version"
gh repo create project-name --private --source . --push
Deploying by hand in the panel
You can do the same work in Coolify without a coding tool. You have root access, and you can manage everything from the panel if you prefer. The address and password are on the Overview tab. Our Next.js guide covers private repositories, webhooks and domains. A few fields change for other projects. We tried these settings on a real server with Coolify's example projects:
| Project | Settings |
|---|---|
| Next.js | Port 3000 |
| Vite (static) | Output type: Static site, Publish directory: /dist |
| Astro (server) | Port 4321, Start command: HOST=0.0.0.0 node dist/server/entry.mjs |
| Python (Flask) | Port 5000, Start command: python -m flask run --host=0.0.0.0 --port=5000 |
What should you look at after launch?
- Check that every server-side endpoint verifies the session. AI tools often protect the interface and forget the API route behind it.
- Rate limit any endpoint that calls a model, or strangers can run up your bill.
- Read the app's Logs page in Coolify a few times on the first day.
- Test your backups. Until you have restored one, you don't really know you have one.
Frequently asked questions
How powerful should the server be?
The sales page recommends at least 4 GB of RAM, 2 vCores and 40 GB of disk. A small Next.js project built on 2 GB, while one with 85 packages ran out of memory at 2 GB and built at 4 GB. If a build fails, scale up from your panel. The IP and data stay the same.
What does it cost per month?
That size is about $6 a month (VAT included), and outside Turkey you pay in US dollars. Daily backups are included in the price and traffic is unlimited. We compare this with usage-billed hosting in this article.
How do I connect my domain?
Point an A record at the server's IP address, then tell the tool the domain or add it on the Domains page in Coolify. The certificate is issued automatically, and the server is in Istanbul. Our help article covers the record.
How do I update the app after launch?
Ask the tool to deploy on every push, or set up the webhook by hand. Then git push builds and publishes each new version. Without a webhook, press Redeploy in Coolify.
Where should the database live?
Don't leave user data inside the container. Create PostgreSQL in the same panel: it stays off the public internet and its address goes in a variable such as DATABASE_URL. On SQLite, mount the folder with Persistent Storage. If the project uses Supabase, look at Supabase VPS.
Comments0
No Comments Yet
Be the first to share your thoughts.
Please sign in or sign up to leave a comment.