[Support Guide] Can I run a web server, HTTP listener, and/or database at Netlify?

How do I run a server/database at Netlify?

We often get questions about how to run a specific backend server or database at Netlify. Examples of these types of questions include:

  • How to I get my node HTTP listener to respond to requests?
  • How do I start Mongo/MySQL/<insert-some-database-here> running on the server?
  • How can I SSH into my website?

We are here today to answer these questions - and the answer is: You can’t! :hushed:

What do you mean, I cannot run a server or database at Netlify?!?!

This often comes as a bit of a surprise and there is a good reason for this which this topic hopes to explain.

Netlify is specifically designed for “the JAMStack”: https://jamstack.org/

The JAMstack is not about specific technologies. It’s a new way of building websites and apps that delivers better performance, higher security, lower cost of scaling, and a better developer experience.

A core principle of the JAMStack is that it doesn’t depend on a “web server”. Now, clearly there is still a web server replying to HTTP requests, but the CDN/ADN at Netlify only serves static files. What isn’t happening is that a web application, in realtime as the HTTP request is received, dynamically generates a unique version of a web page on the fly using a programming language of some kind. With a JAMStack site, there is no application server or language runtime (meaning no node.js, Ruby, PHP, Python, etc).

If I cannot run a web server, why are you installing node modules (or a specific Ruby version) when I deploy my site?

You can use these languages (Node, Ruby, Python, PHP and many others) to build the site, but you can not use the language on the web server after the site is deployed.

Static site generators, gulp, grunt, webpack, etc - these can all be used to build a site at Netlify. After the build and deploy, though, the site is just static files (HTML, JavaScript, CSS, images, fonts, etc) served by Netlify’s CDN/ADN.

Okay, but I need to run node/ruby/php (or use a database) for my site to work. Now what?

This is where the A in JAMStack comes in (A = API). Any runtime/dynamic information the page needs is collected using API calls which originate from the end user’s web browser - not the web server.

JAMStack sites can be dynamic and present unique content to individual users. It is just that with the JAMStack, the users browser (not the web server) does this using API calls and javascript.

Netlify’s Functions are one way to make your own short-running API endpoints and easily deploy and access via your site at Netlify. You can also access backend services (such as API’s, databases, etc) that are running on other providers. (So, using serverless.com or Heroku for an API endpoint instead of Functions will work too!) Using third-party API’s (like Stripe) is a common practice as well.

If your backend service is hosted with another provider, Netlify can also proxy these API requests. Proxying API calls can be useful if there are Cross-Origin Resource Sharing (CORS) issues (or if you simply want to obfuscate where the API endpoint is - nobody has to know there’s a plain-http connection to your wordpress server happening).

How do I keep from exposing private API keys if the API call happens from the end user’s browser?

This is covered in this common issue in our forums.

What if I must run a server?

Often it is possible to refactor a server-based dynamic site as a JAMStack site. However, if this cannot be done, then it won’t be possible to host the site with Netlify.

For example, if your site requires Internet Information Server (IIS) and the .NET framework, you would have to use a different service.

Can I SSH or FTP into the server?

No, there is no direct access to the servers that make up the CDN nodes at Netlify.

We do offer a great deal of flexibility when deploying. You can deploy using the any of the following:

If you are looking to upload new versions of your site directly from your local system, the netlify CLI’s manual deploy method is the recommended way to do this and the “drag & drop” method in the web UI is even simpler.


Netlify is designed for a specific type of website: JAMStack sites. Part of the JAMStack design philosophy is that an application runtime isn’t used by the HTTP server. Quoting the JAMStack.org site again:

The thing that they all have in common is that they don’t depend on a web server.

We hope helps to clarify both that application servers and databases cannot be used (outside of APIs) with Netlify sites and why this is the case. If there are other questions about this, please reply here and we’ll do our best to answer. :+1:

Docker deployment
Can I deploy Django on netlify?
Deploy nodejs api failing - trying to deploy a server on netlify
How to access on phpmyadmin with netlify
Nodemailer works on local, but not works without displayunlockcaptcha on Netlify
Functions: node-cron fetch from external api and write results to file
Ionic App Support
[Support Guide] Netlify forms with custom success pages for Gatsby and Nuxt
Support Guides - Or, how to find answers for frequent questions!
Deploy failed due to intl extension for PHP not installed
Error From Node Modules Folder When Deploying From Github
How I can Create a free blog wordpress with netlify?
PHP versions do not match
Does Netlify support Gollum?
Vue.js form with prerender shows existing form, but keeps sending back 404, could be a redirect issue?
Create my first Typescript library and create also a demo page using Parcel and Netlify
My Netlify build is removing a necessary folder from my React app
Deploying a phoenix app on netlify
Can I move to Netlify?
Server Side Rendering with Nuxt.js and Netlify
Express endpoint issues
Rewrites Not Working When Using Express With Netlify Functions
Upload error after adding the ads.txt file
How to integrate Sitecake with my website on netlify?
How can I perform deploys through my java program?
Process is not defined error
React-responsive not working on first load
URL Path's display "Page Not Found"
Error: connect ECONNREFUSED on nuxtjs run generate
How to block access to the bot?
[Gatsby] How to store a json in Netlify?
Redirect to mincaft server
Where do i run netlify from
Starting node.js app
Load balancer of a static site
Deploying a website without HTML but with PHP
Starter Support for server-side ASP.NET Core Blazor
How to host php websites
My build is getting timed out for rails app. Not sure what the build command is
I cannot send the contact form through my php file
Uploading files that have a cms system with datatabse
Which framework makes it easy to run tensorflow.js code on backend then show result on website?
How to hide stripe secret key using lambda function
Axios POST Request works on localhost but no longer works after deploying on Netlify
Nuxt server (nuxt build && nuxt start) vs Netlify server (nuxt generate) performance?
Few questions about Netlify + Jekyll
Does Netlify support websocket programming?
Does netlify support Nuxt Server-Side Rendered Deployment (Universal SSR) mode websites?
Using Netlify for complex dynamic website?
How to deploy SpringBoot App in Netlify?
Site deploy failed Build script returned non-zero exit code: 1
What are the correct comands to deploy a maven project with spring boot?
Page not found after deploy PHP site
Success form not working
Page Not Found, and no build
PHP form on netlify!
Deploying goes wrong
Deploy help with enmap
PHP file not serving
Moving from glitch to netlify
Not able to get SSH key
How to deploy a Reactjs website backed with REST API and MySQL?
Email Service in Netlify
Can I use Golang to do post-processing of my Jekyll site?
How to access static file api server build on nodejs
When I try to deploy react app on netlify the error is throwing I don't know either the issue with netlify or its the issue with package.json on react and on localhost the code is working fine or I need to update any package versions
Failed to load resource: the server responded with a status of 404 () => php file and js file
How do i deploy a drupal website