How to deploy a Bolt.new project on your own server
To deploy a Bolt.new project on your own server, connect the project to GitHub or download it as a zip, hand the code to the Coolify panel on your server, set the environment variables and point your domain at it. Bolt's docs say the same: once the code is on GitHub, you can publish through another service of your choice. If you take the GitHub route, you can keep working in Bolt and your changes reach the repository by themselves.
Bolt is focused on JavaScript. Its supported stack is Node.js on the backend and browser-based frameworks on the frontend, with no Python or PHP backends. So your project is most likely an ordinary Node project with a package.json, and it needs nothing specific to Bolt to run.
How do you get the code out of Bolt?
Through GitHub
- Open the project, click the GitHub icon at the top right, sign in with your GitHub account and grant the access it asks for.
- Name the repository and press Create repository.
- The repository starts as private on a
mainbranch. From then on, Bolt sends every change to it.
As a zip
Click the project name at the top left, then Download. A zip is a one-time copy and won't pick up later changes in Bolt. The server deploys from a Git repository, so you'd still have to put it in one. Unzipping it and running npm install && npm run dev is a quick way to see the code run outside Bolt.
What kind of project is it?
The project decides the settings, so check the dependencies in package.json. The Next.js, Vite and Astro rows are settings we have tried with Coolify on a real server.
| Dependency | Project | Coolify settings |
|---|---|---|
next | Next.js | Port 3000, with nothing else to enter |
vite | Static site | Output type Static site, Publish directory /dist |
astro | Astro server app | Port 4321, Start command HOST=0.0.0.0 node dist/server/entry.mjs |
express or similar | Node.js server | The port the app listens on, address 0.0.0.0, and a start script in package.json |
If a Vite project routes pages in the browser, set Site type to SPA on the General page. Skipping this is the usual reason a nested page returns a 404 on refresh.
Step by step
- Order a server from the Next.js VPS page. This option comes with Coolify, so you deploy from the same panel even if your project isn't Next.js.
- Clone the repository and run
npm run build. Code that runs in Bolt's preview can still fail a production build, and it's better to find out before the server does. - Open the folder in a coding tool such as Claude Code or Cursor. Copy the Paste into your AI tool row from the Overview tab of your Seturack panel and paste it in. The tool reads the instructions and deploys, adding a read-only deploy key for the private repository.
- Give it the environment variables your code expects, and keep the values out of the code.
- When the HTTPS address arrives, test the pages, sign-in and writing data.
- Point an A record at the server's IP address and tell the tool the domain name. The certificate is issued automatically.
You can do all of this by hand in Coolify too, as our Next.js guide explains. You have root access, and you can manage everything from the panel if you prefer.
Keep every change from going live
Here's a detail specific to Bolt. Because it sends every change to the repository, a webhook on main means every prompt starts a new build, and half-finished experiments go live. To avoid that, click the GitHub icon, use Create new branch to work on a separate branch, and merge into main when you're done. The server only watches main, so visitors see the finished version.
What happens to Bolt Database?
Bolt Database keeps your data, sign-in, file storage and server functions in Bolt Cloud. Moving the code leaves all of that where it is, so you choose what comes next.
| Option | What you do | Watch out for |
|---|---|---|
| Stay on Bolt Database | Set the address and keys your code connects with, then test reads and writes on the temporary address | Bolt may pause a low-usage database in an unpublished project |
| Claim it into Supabase | From the database icon, go to Advanced and press Claim | Needs a Pro or Teams plan and Supabase org ownership |
| Run Supabase on your server | Claim it first, then set up Supabase VPS and follow the restore guide | Files and server functions move separately, and users sign in again |
| Export only the rows | Select rows in a table and export CSV or JSON | Suits small amounts of data |
The keys on Bolt's Secrets page are for its server functions. Code running on your server reads them from environment variables, so you enter them there yourself.
Frequently asked questions
How powerful a server does a Bolt.new project need?
The sales page recommends at least 4 GB of RAM, 2 vCores and 40 GB of disk. Next.js builds push memory as a project grows: one with 85 packages failed at 2 GB and built at 4 GB, while a small one passed at 2 GB. If it isn't enough, scale up from your panel.
What will it cost per month?
The recommended minimum 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. Your Bolt subscription is separate and continues if you keep developing there.
How do I connect my domain?
Point an A record at the server's IP address, add the domain to the app and deploy again. The certificate is issued automatically. Our help article covers the record.
How does a change in Bolt reach the server?
Bolt sends it to GitHub, and with a webhook the server rebuilds on each push to the branch it watches. Without one, press Redeploy in Coolify.
Can I move the database to PostgreSQL in Coolify?
If your code talks to the database directly over SQL, yes. Bolt Database also covers sign-in, files and server functions, and plain PostgreSQL won't replace those if your code depends on them. In that case the Supabase route takes fewer code changes.
Comments0
No Comments Yet
Be the first to share your thoughts.
Please sign in or sign up to leave a comment.