Deploy Meteor Apps
Deploy your Meteor app on Galaxy with zero-downtime deploys and autoscaling.
Prerequisites
- A Galaxy account
- Your Meteor app in a Git repo
- A payment method added for identity verification
1. Prepare Your Settings
Galaxy uses settings.json to configure your Meteor app. At minimum, you need your MONGO_URL:
{
"galaxy.meteor.com": {
"env": {
"MONGO_URL": "mongodb://user:password@host/db"
}
}
}Don't have a database yet? You can toggle Add Free MongoDB during deployment to get a shared cluster for testing. If you don't have a settings.json file, Galaxy creates one for you and adds the MONGO_URL automatically.
Don't Commit Secrets
Paste your settings directly in Galaxy instead of committing settings.json to your repo. See the Secrets Management guide for best practices.
2. Deploy
Prefer the command line? See the Meteor CLI Deployment guide.
Connect your repo
Go to your Galaxy dashboard, click Create New, then Deploy New App. Select Meteor.js as the app type and connect your GitHub or Bitbucket account.
Select repo and branch
Pick your repository and the branch to deploy from (usually main).
Choose plan and container
Select a plan (Free for testing, Essentials for production, Professional for mission-critical apps) and a container size. Start small, scale later.
Choose Your Account, Plan, and Container
Now things get real. You're picking the resources for your app.
Which Account?
If you're working with an organization, select it here. Otherwise, your personal account is already selected.
Pick Your Plan
Galaxy has three plans to choose from: Free (great for testing), Essentials (for production apps), and Professional (for mission-critical work). Each supports different container sizes and resource allocations.
Not sure which one is right for you? Start with Essentials for production, or Free for testing. You can always upgrade or downgrade later based on what you actually need.
For a detailed breakdown of pricing, features, and what's included in each plan, check out the Billing documentation.
You can switch plans anytime after deployment. Don't overthink this choice.
Select Your Container Size
Each plan supports multiple container sizes. Container size determines how much RAM and CPU your app gets. Bigger containers handle more traffic and heavier workloads, but cost more to run.
Start with a medium-sized container and scale up if you hit performance limits. Most apps do just fine starting smaller and growing as needed.
For the complete breakdown of container sizes, CPU allocations, and pricing, see the Billing documentation.
Configure and Deploy
You're almost there. This final step is where you customize the deployment itself.
App Configuration
App Display Name: Give your application a friendly name. This is just for your reference in the Galaxy dashboard (it's not used in the URL).
Branch: Which branch should Galaxy watch and deploy from? Most teams deploy from main or master, but choose whatever branch makes sense for your workflow.
Custom Subdomain: Choose a memorable subdomain for your app. This becomes your default URL (like myapp.us.galaxycloud.app for paid apps or myapp.sandbox.galaxycloud.app for free apps). Don't worry too much about it, though, you can always add a custom domain later.
Region: Galaxy runs your application across multiple regions to reduce latency:
- us-east-1 (Virginia, United States): East Coast and general US traffic
- eu-west-1 (Roubaix, France): European users
- ap-southeast-2 (Sydney, Australia): Asia Pacific traffic
Region Selection by Plan
Free plan apps are deployed to us-east-1 by default and don't include region selection. Paid plans (Essentials and Professional) can choose any region during deployment. Want to change regions later? Upgrade to a paid plan from your app's dashboard.
Build Configuration
This section is specific to Meteor apps. Here's where you configure your build and Meteor settings.
Root Directory: If your Meteor app lives in a subdirectory of your repository (like apps/web), enter the path here. Leave it empty if your app is at the repo root.
Pre-Deploy Command: Runs after the build completes, before the new containers go live. Use it for tasks like database migrations. Your command runs within your private network and has access to your environment variables. If the command fails, the deployment stops.
Paid Plans Only
Pre-deploy commands are only available on paid plans. Free plan apps can't use this field.
Install Command: Defaults to meteor npm install. Switch to meteor npm ci for reproducible builds if you commit package-lock.json to your repository.
Settings File Path (Optional): If your settings.json file is committed to your repository, enter the path here (like private/settings.json). Leave this empty if you prefer to paste your settings directly or manage them in Galaxy.
Only use the Settings File Path for non-sensitive configuration. Never commit secrets like API keys, database passwords, or tokens to your repository. Use the Meteor Settings JSON field instead.
Meteor Settings JSON: This is where you paste your complete settings.json content. Galaxy provides a code editor with syntax highlighting and a size indicator (up to 1 MB).
Your settings should follow this structure:
{
"galaxy.meteor.com": {
"env": {
"MONGO_URL": "mongodb://user:password@host/db",
"MAIL_URL": "smtp://user:password@smtp.example.com:587"
}
},
"packages": {
"mongo": {
"options": {
"tlsAllowInvalidCertificates": true
}
}
},
"private": {
"stripeKey": "sk_live_xxx"
},
"public": {
"appName": "My App"
}
}This is the recommended approach for secrets and sensitive configuration. Your settings stay out of version control, keeping your repository safe.
Database
Want to add a MongoDB database right now? Toggle Add Free MongoDB to provision a shared cluster for testing and development. This is super convenient for getting up and running fast.
If you enable Free MongoDB, MONGO_URL will be automatically added to your settings. The free shared cluster is great for testing but not recommended for production workloads.
Already Have a MONGO_URL?
If you've already set a MONGO_URL in your environment variables or Meteor Settings, the Add Free MongoDB option will be disabled. Galaxy detects the existing connection string and skips provisioning a new database. Remove your existing MONGO_URL if you want to use the free shared cluster instead.
When you enable this option, the free database is linked directly to your app: it appears in the Databases tab of your dashboard alongside paid instances, and it shares the app's lifecycle (if you delete the app, the database goes with it).
This Applies to New Deployments Only
The Databases tab only shows free databases created through this toggle during deployment. If your account had a free MongoDB database provisioned before this feature was introduced, it won't appear there retroactively. Only databases linked to apps deployed on Galaxy Metal are listed.
If you already have a database or prefer to configure it separately, skip this option.
Environment Variables
Below the Meteor settings, you'll see an Environment Variables section. For Meteor apps, most configuration goes in the Meteor Settings JSON above. However, you can still add additional environment variables here if needed.
Galaxy pre-adds PORT (with a default value of 3000) and ROOT_URL (auto-calculated from your chosen subdomain). These variables are available alongside your Meteor settings.
Every push to your deploy branch triggers a new deployment automatically.
3. Configure (Optional)
Root directory: Set if your Meteor app is in a subdirectory (like apps/web).
Install command: Defaults to meteor npm install. Use meteor npm ci for reproducible builds.
Pre-deploy command: Run database migrations or other tasks before the new version goes live (paid plans only).
Free MongoDB: Toggle during deployment to get a shared cluster for testing. See the Meteor Reference for SSL configuration details.
For full settings structure, build options, and environment variables, see the Meteor Reference.

