Meteor on Scalingo

Meteor is a complete open source platform for building web and mobile apps in pure JavaScript. It focuses problematics around real time web to emphasize the most fluent experience possible.

Getting Started Tutorial

Deploy your first Meteor application: follow the guide.

Meteor App Detection

The directory .meteor should be present at the root of your project

Meteor Dependencies Installation

  • Using Meteor embedded dependency management (with meteor add and meteor update)
  • Using npm package manager (with meteor npm <command>)

For instructions on installing and using npm packages, see the official Meteor documentation.

Node and npm Versions

Specify the Node.js and npm versions in the engines section of your package.json file. Use the Node.js version required by your Meteor release, as listed in the compatibility table below.

For example, for Meteor 3.5:

{
  "name": "myapp",
  "engines": {
    "node": "24.x",
    "npm": "11.x"
  }
}

Meteor applications use the Node.js buildpack. The following table lists the required Node.js version and stack compatibility for each supported Meteor version, based on Meteor’s Node.js compatibility table.

Meteor version Node.js version scalingo-22 scalingo-24 scalingo-26
3.5.x 24.x Supported Supported Supported
3.4.x 22.x Supported Supported Supported

Meteor App Startup

A script named .start-meteor-app is automatically generated after the build of your application. Its role is to start correctly your application.

Generated .start-meteor-app:

cd .app-build/bundle
exec node $NODE_BOOT_FLAGS main.js

The buildpack also generates a .release file

default_process_types:
  web: ./.start-meteor-app

If no Procfile exists, the web type of the .release will be executed by default. If your wish to write your own Procfile don’t forget to keep this line for your web process, otherwise your application may not boot.

Configuration

Meteor Settings

If you have a settings.json or a config/settings.json file that you usually run with meteor --settings settings.json, you have nothing to do. It will be handled by our deployment system, but this method is deprecated.

Storing configuration data like credentials in a file present in your Git repository is not recommended. We advise you to use the environment variable METEOR_SETTINGS, the variable is automatically read by Meteor and it stays out of your code repository. You have to set the content of this environment variable (with our CLI or through your web dashboard) to match the content of your settings.json file. Furthermore, using this method allows you to manage easily multiple environment of the same app.

If you’re using a settings.json file, here is the method to migrate to an environment-based setup:

$ echo 'settings.json' >> .gitignore
$ git rm --cached settings.json
$ git add .gitignore
$ git commit -m "Add settings file to gitignore to avoid having credentials in code"
$ scalingo env-set METEOR_SETTINGS="$(cat settings.json)"
$ git push scalingo master

Custom Timezone

The default timezone of your containers is UTC. You can set it to a different value by setting the environment variable TZ with the desired timezone:

scalingo --app my-app env-set TZ=Europe/Paris

A list of existing timezones is available here.

Built-In Mobile Integration

If you need to use your application as a backend for your Android or iOS application, don’t worry. It is done by default by the platform. The flag --server-only will be used to build your app. Finally, your mobile apps will be able to communicate with it without any problem.

Debug Build

To create a debug build, set the following environment variable:

scalingo env-set METEOR_DEBUG_BUILD=true

How to Scale Meteor

As a real time framework, the number of scaling constraints is higher than another more classical framework. Each instance is keeping some stateful information and each instance has to be able to get instantly the most up-to-date data. To achieve that, the two common processes used are the sticky sessions and the oplog feature of MongoDB®.

Oplog

Oplog is a MongoDB® feature which logs all the operations achieved on a MongoDB® cluster. Meteor uses this feature to sync different instances of an application.

It can be enabled from the addon database dashboard. When activated it will automatically add the MONGO_OPLOG_URL in your application. This variable name is the standard name to configure Meteor. Restart your application for this variable to be taken into account.

Link to Dashboard

Sticky Sessions

Sticky sessions are enabled by default for Meteor applications. See Sticky Sessions — Session Affinity for details.

Basic Authentication

If you want to setup basic authentication in front of your app, you can use the kit:basic-auth package.

Buildpack

The deployment of Meteor application is handled by our Node.js Buildpack which has been modified to manage particularly Meteor application.

  1. It detects Meteor application
  2. Choose the good Node.js version
  3. Install Meteor runtime
  4. Build project
  5. Prepare runtime environment

Suggest edits

Meteor on Scalingo

©2026 Scalingo