Node.js

This guide includes examples of how to set up the following Node.js applications to deploy on Kinsta’s Application Hosting services from a GitHub repository:

Prerequisites

  • Kinsta’s quick start templates are stored and managed in GitHub; therefore, you need a GitHub account to access them.
  • You need to create a MyKinsta account to deploy the application.

Node.js

  1. Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – Node.js.
  2. In MyKinsta, click Applications > Add application > select GitHub, click Connect git provider > Authorize, and log in to your GitHub account.
  3. Choose the Hello World – Node.js repository and a Data center location. Leave all other settings as default and click Continue on each step.
  4. On the Summary step, click Deploy now.

During deployment, Kinsta automatically detects the Start command for the web process and installs dependencies defined in your package.json file. The app is available as soon as the deployment finishes, and the Kinsta Welcome page loads at your application’s URL.

Kinsta Welcome page after successful deployment of Node.js.
Kinsta Welcome page after successful deployment of Node.js.

Prefer to watch the video version?

Web Server Setup

Port

Kinsta automatically sets the PORT environment variable. You do not need to define it yourself or hard-code it into the application. Use process.env.PORT in your code when referring to the server port.

app.listen(process.env.PORT, () => {
console.log(`Hello World Application is running on port ${process.env.PORT}`)
})

Start Command

When you deploy an application, Kinsta automatically creates a web process with npm start as the Start command. Make sure you use this command to run your server. If you want to use a different command, you need to modify the web process in MyKinsta.

"scripts": {
"start": "node server.js"
},

Environment Variables

By default, the NODE_ENV environment variable is not set to production for Node.js applications; you must add this environment variable manually.

Deployment Lifecycle

Whenever a deployment is initiated (through creating an application or re-deploying due to an incoming commit), the npm build command is run, followed by the npm start command.

Node.js Application With a Dockerfile

  1. Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – Dockerfile – Node.js.
  2. In MyKinsta, click Applications > Add application > select GitHub, click Connect git provider > Authorize, and log in to your GitHub account.
  3. Choose the Hello World – Dockerfile – Node.js repository and a Data center location, leave all other settings as default and click Continue.
  4. On the Build environment step, select Use Dockerfile to set up a container image and click Continue > all other settings can remain as default, click Continue > Deploy now.

The Dockerfile must contain the Start command either in a CMD line or ENTRYPOINT instruction. The app is available as soon as the deployment finishes, and a Hello World page loads at your application’s URL.

Node.js with Dockerfile Hello World page after successful installation.
Node.js with Dockerfile Hello World page after successful installation.

Deployment Lifecycle

When you create the app, Kinsta creates a process from the CMD instruction in the Dockerfile:

CMD ["npm", "run", "start"]

If you change this command in the repository after deploying the application, the process is not automatically updated in MyKinsta, so you must also edit the Start command in your application’s Processes.

Node.js Application To Send Emails

This is an example of how to set up a Node.js application to send emails via SendGrid on Kinsta’s Application Hosting services, deployed from a GitHub repository.

Kinsta does not natively support outbound emails from servers. Sending emails through specialized outbound providers such as SendGrid or Mailchimp offers more flexibility and higher success rates for transactional and campaign emails.

  1. Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – Email Sending With Node.js.
  2. In MyKinsta, click Applications > Add application > select GitHub, click Connect git provider > Authorize, and log in to your GitHub account.
  3. Choose the Hello World – Email Sending With Node.js repository and a Data center location. In Environment variables, add the following:
    • SENDGRID_API_KEY: The API key from SendGrid.
    • TEST_EMAIL_TO_ADDRESS: The address you’d like to send the test email to.
    • TEST_EMAIL_FROM_ADDRESS: The address you’d like to send the test email from.
    • TEST_ENDPOINT: The endpoint you’d like to use as a trigger to send the test email. Use a random string of at least 8 characters.
  4. Leave all other settings as default and click Continue on each step. On the Summary step, click Deploy now.

The app is available as soon as the deployment finishes, and a Hello World page loads at your application’s URL.

Node.js email sending Hello World page after successful installation.
Node.js email sending Hello World page after successful installation.

Trigger an Email

This project does not require a build phase. The start command runs node server.js, which starts an Express server with two endpoints:

  • /: A simple page that returns the Hello World message
  • /${TEST_ENDPOINT}: A page that triggers a test email.

To trigger an email, find the URL of your deployment on the Deployments page, append your test endpoint to this URL, and visit the page. For example, if your TEST_ENDPOINT is set to o34nifnodhni4of and your latest deployment is at https://example.kinsta.app you can trigger a test email from https://example.kinsta.app/o34nifnodhni4of in your browser.

An “Email sent” message appears if the test email is successful.

Node.js email sent message.
Node.js email sent message.

If you verify this at SendGrid, you also get a successful message.

Test email received at SendGrid.
Test email received at SendGrid.
Was this article helpful?