├── .gitignore ├── .gitmodules ├── .nvmrc ├── README.md ├── _config.yml ├── assets └── theme-colors.less ├── netlify.toml ├── package-lock.json ├── package.json ├── scripts └── kapa.js └── source ├── api.md ├── apm-getting-started.md ├── app.md ├── background-jobs.md ├── base-image-packages.md ├── billing.md ├── cdn.md ├── changelog.md ├── collaborators.md ├── commands.md ├── container-environment.md ├── containers.md ├── custom-base-images.md ├── custom-domains.md ├── deploy-command-line.md ├── deploy-quickstart.md ├── deploy-region.md ├── deploy-setup.md ├── deploy-to-galaxy.md ├── deploy-troubleshooting.md ├── dns.md ├── dpa.md ├── encryption.md ├── environment-variables.md ├── error-types.md ├── file-storage.md ├── galaxy-database-mongodb-connect.md ├── galaxy-database-mongodb-general.md ├── galaxy-database-mongodb-migration.md ├── galaxy-database-mongodb-oplog.md ├── galaxy-database-mongodb-overview.md ├── gdpr.md ├── high-availability.md ├── image-1.png ├── image-2.png ├── image-3.png ├── image-4.png ├── image.png ├── images ├── apm-active-subs-average-lifetime.png ├── apm-average-pubsub-response-time-OLD.png ├── apm-average-pubsub-response-time.png ├── apm-average-response-time-ms.png ├── apm-bandwidth-selector.png ├── apm-cpu-usage.png ├── apm-created-observers.png ├── apm-dashboard-summary-OLD.png ├── apm-dashboard-summary.png ├── apm-error-rate-and-errors.png ├── apm-error-tracking-intro-1.png ├── apm-error-tracking-intro-2.png ├── apm-error-tracking-zones.png ├── apm-event-loop-utilization.png ├── apm-fetched-documents.png ├── apm-livequeries-summary.png ├── apm-livequery-publication.png ├── apm-memory-usage-host.png ├── apm-method-breadown-1.png ├── apm-method-breadown-2.png ├── apm-method-breadown-3.png ├── apm-methods-summary.png ├── apm-network-latency.png ├── apm-new-observers.png ├── apm-observer-changes.png ├── apm-oplog-notifications.png ├── apm-publication-breakdown.png ├── apm-pubsub-recommendations.png ├── apm-pubsub-summary.png ├── apm-response-time-traces-1.png ├── apm-response-time-traces-2.png ├── apm-sub-rate.png ├── apm-throughput-requests-per-minute.png ├── apm-throughput.png ├── apm-time-breakdown.png ├── apm-total-reused-observer-handles.png ├── apm-total-sessions.png ├── apm-view-app.gif ├── apm.dashboard.explain.png ├── app-protection-custom-settings.png ├── app-scaling-rps-cpu.png ├── container-item.png ├── container-upsize.gif ├── container-upsize.png ├── email-add-domain.png ├── email-enable-ssl.png ├── email-galaxy-performance-graphs-600x468.jpg ├── email-scale-up.gif ├── empty_circle_outlined.png ├── galaxy-api-key.png ├── galaxy-app-container.png ├── galaxy-app-logs-download.png ├── galaxy-app-logs.png ├── galaxy-app-overview-1.png ├── galaxy-app-overview.png ├── galaxy-container-filter.png ├── galaxy-databases-migration.png ├── galaxy-databases-mongodb-compass-connection-done.png ├── galaxy-databases-mongodb-compass-connection.png ├── galaxy-databases-mongodb-overview-1.png ├── galaxy-databases-mongodb-overview-2.png ├── galaxy-logo.png ├── galaxy-menu.png ├── gray_circle.png ├── green_circle.png ├── green_circle_outlined.png ├── instant-rollback-1.png ├── instant-rollback-3.png ├── instant-rollback-5.png ├── instant-rollback-6.png ├── instant-rollback-7.png ├── instant-rollback.png ├── ipv6-feature.png ├── logo-mongodb-leaf-24x48.png ├── logs_section.png ├── mlab-create-account.png ├── mlab-create-db-user.png ├── mlab-create-new-db.png ├── mlab-set-db-name.png ├── mlab-view-databases.png ├── mlab-view-db-details.png ├── notifications-activities.png ├── notifications-slack-settings.png ├── push-to-deploy-add-config-to-existing-app.png ├── push-to-deploy-edit-configuration.png ├── push-to-deploy-first-step.png ├── push-to-deploy-override-meteor-settings.png ├── push-to-deploy-second-step.png ├── push-to-deploy-third-step-advanced-options.png ├── push-to-deploy-third-step-existing-app.png ├── push-to-deploy-third-step.png ├── red_circle.png ├── ss-high-availability-on.png ├── triggers-00.png ├── triggers-01.png ├── triggers-02.png ├── triggers-03.png ├── triggers-04.png ├── triggers-05.png ├── triggers-06.png ├── triggers-07.png ├── upgrade-app-to-pro.png ├── upgrade-app.png ├── upgrade-apps-to-pro.png ├── upgrade-apps.png ├── upgrade-confirmation-to-pro.png ├── upgrade-confirmation.png ├── upgrade-congrats-to-pro.png ├── upgrade-congrats.png ├── upgrade-dashboard.png ├── upgrade-options.png ├── upgrade-signin.png ├── upgrade-success-to-pro.png ├── upgrade-success.png └── view-custom-domains.png ├── index.md ├── instant-rollback.md ├── logs.md ├── memory-issues.md ├── migrate-app.md ├── mongodb.md ├── notifications.md ├── protection.md ├── push-to-deploy.md ├── roadmap.md ├── scaling.md ├── security.md ├── seo.md ├── status.md ├── support.md ├── transfer-apps.md ├── triggers.md └── upgrade-app-plan.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | db.json 4 | *.log 5 | node_modules/ 6 | public/ 7 | .deploy*/ 8 | _multiconfig.yml 9 | .idea/* -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/.gitmodules -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.2 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # galaxy-docs 2 | 3 | ## Run HEXO Server 4 | To run: 5 | 6 | ``` 7 | npm install 8 | npm start 9 | ``` 10 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Galaxy Docs 2 | subtitle: Galaxy Docs 3 | versions: 4 | - "2.0" 5 | - "1.0" 6 | versioned-netlify-redirects: 7 | netlify_site_id: galaxy-docs 8 | github_repo: meteor/galaxy-docs 9 | 10 | logo: 11 | title: Galaxy 12 | subtitle: Guide 13 | nav_mobile: images/galaxy-logo.png 14 | 15 | sidebar_categories: 16 | null: 17 | - index 18 | - changelog 19 | - roadmap 20 | Deploy: 21 | - deploy-to-galaxy 22 | - deploy-command-line 23 | - deploy-setup 24 | - mongodb 25 | - deploy-region 26 | - migrate-app 27 | Containers: 28 | - container-environment 29 | - base-image-packages 30 | - custom-base-images 31 | Setup: 32 | - custom-domains 33 | - dns 34 | - encryption 35 | Manage: 36 | - upgrade-app-plan 37 | - instant-rollback 38 | - deploy-troubleshooting 39 | - error-types 40 | - memory-issues 41 | - scaling 42 | - high-availability 43 | - seo 44 | - cdn 45 | - file-storage 46 | - transfer-apps 47 | - commands 48 | Monitor: 49 | - app 50 | - containers 51 | - logs 52 | - status 53 | - triggers 54 | - notifications 55 | - api 56 | - protection 57 | Best Practices: 58 | - background-jobs 59 | - app-scaling 60 | Monti APM: 61 | - apm-getting-started 62 | - Monti APM Docs: 63 | href: https://docs.montiapm.com/getting-started 64 | title: Monti APM Docs 65 | 66 | Galaxy Databases: 67 | - galaxy-database-mongodb-general 68 | - galaxy-database-mongodb-migration 69 | - galaxy-database-mongodb-connect 70 | - galaxy-database-mongodb-overview 71 | - galaxy-database-mongodb-oplog 72 | Accounts: 73 | - billing 74 | - collaborators 75 | - support 76 | - security 77 | - gdpr 78 | - dpa 79 | 80 | nav_links: 81 | "Meteor.com": "https://www.meteor.com" 82 | 83 | url: https://cloud-guide.meteor.com/ 84 | -------------------------------------------------------------------------------- /assets/theme-colors.less: -------------------------------------------------------------------------------- 1 | // Haven't made any changes as we want the default Meteor colors 2 | @color-cloud: #101926; -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "public" 3 | command = "npm install && npm run build" 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-site", 3 | "version": "0.0.0", 4 | "private": true, 5 | "hexo": { 6 | "version": "3.9.0" 7 | }, 8 | "devDependencies": { 9 | "chexo": "1.0.7", 10 | "hexo": "3.9.0", 11 | "hexo-prism-plus": "1.1.0", 12 | "hexo-renderer-ejs": "1.0.0", 13 | "hexo-renderer-less": "0.2.0", 14 | "hexo-renderer-marked": "2.0.0", 15 | "hexo-server": "1.0.0", 16 | "hexo-versioned-netlify-redirects": "^1.1.0", 17 | "@meteorjs/meteor-hexo-config": "1.0.14", 18 | "@meteorjs/meteor-theme-hexo": "2.0.8" 19 | }, 20 | "scripts": { 21 | "build": "chexo @meteorjs/meteor-hexo-config -- generate", 22 | "clean": "hexo clean", 23 | "test": "npm run clean; npm run build", 24 | "start": "npm run build && chexo @meteorjs/meteor-hexo-config -- server" 25 | }, 26 | "volta": { 27 | "node": "14.21.3" 28 | }, 29 | "renovate": { 30 | "extends": [ 31 | "meteor-docs" 32 | ] 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /scripts/kapa.js: -------------------------------------------------------------------------------- 1 | hexo.extend.filter.register('after_render:html', function(html) { 2 | const scriptTag = ` 3 | 11 | `.trim(); 12 | 13 | if (html.indexOf('') !== -1) { 14 | return html.replace('', scriptTag + ''); 15 | } 16 | 17 | return html; 18 | }); -------------------------------------------------------------------------------- /source/api.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: API 3 | order: 35 4 | description: Learn how to use Galaxy's public API 5 | --- 6 | 7 | Galaxy's public API is a GraphQL endpoint that enables you to monitor your apps running on Galaxy and change their configurations. 8 | 9 |

Access

10 | 11 | Each Galaxy region has a different URL and so each region also has a different endpoint. 12 | 13 | - US East: `https://us-east-1.api.meteor.com/`. 14 | 15 | - EU West: `https://eu-west-1.api.meteor.com/`. 16 | 17 | - Asia-Pacific: `https://ap-southeast-2.api.meteor.com/`. 18 | 19 | To access the GraphQL HTTP endpoint you need to append `/graphql` to these URLs, for example, US East GraphQL endpoint is `https://us-east-1.api.meteor.com/graphql`. 20 | 21 | You can also access the Explorer (GraphiQL) appending `/explorer`, for example, US East Explorer endpoint is `https://us-east-1.api.meteor.com/explorer`. Last but not least you can also connect Apollo DevTools if you open your browser in the API base URL. 22 | 23 |

Authorization

24 | 25 | To authorize your requests you need to provide a header in your HTTP post requests to these endpoints. Each Galaxy region is independent and so you will have a different API Key for each region. 26 | 27 | Each account (organization or individual) can have one API Key to access the API. 28 | 29 | You can generate your API Key from your Account Settings tab in the Galaxy Dashboard by going to `https://galaxy.meteor.com/{username}/settings` and clicking on `Generate Key`. 30 | 31 | Galaxy API Key 32 | 33 | > API access is only available for professional apps. 34 | 35 | Once you generate your API Key you use our API providing this key in the header `galaxy-api-key`. See one example using cURL and Galaxy US. 36 | 37 | Replace `YOUR_API_KEY` with your key and `YOUR_USERNAME` with your username. 38 | 39 | ```shell script 40 | curl \ 41 | -X POST \ 42 | -H "Content-Type: application/json" \ 43 | -H "galaxy-api-key: YOUR_API_KEY" \ 44 | --data '{ "query": "{ user(username:\"YOUR_USERNAME\"){ _id username runningAppCount }}" }' \ 45 | https://us-east-1.api.meteor.com/graphql 46 | ``` 47 | 48 | You can set your API Key in the bottom right of Explorer. 49 | 50 | You can also provide your key as a variable called `galaxyApiKey` in your GraphQL requests, this can be useful in DevTools or if you have limitations in how to set a header in your http requests. 51 | 52 |

Examples

53 | 54 | Check this open-source version of interaction with Galaxy public API to see a few examples of usage: 55 | 56 | [@quave/galaxy-bot](https://github.com/quavedev/galaxy-bot/) 57 | 58 | -------------------------------------------------------------------------------- /source/apm-getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Getting Started with APM 3 | order: 51 4 | description: Learn how to start with Monti APM 5 | --- 6 | 7 | This guide will help you get started with Monti APM, to better understand how your app behaves and identify areas for improvement. 8 | 9 | ## Installation 10 | 11 | 1. Run `meteor add montiapm:agent` inside your Meteor project. 12 | 2. Once you have deployed your app, enable "Galaxy Professional" from the app settings page. 13 | 14 | ### Migrate from Meteor APM 15 | 16 | Your app cannot have both Meteor APM and Monti APM agents enabled at the same time. 17 | 18 | This means that you'll need to remove the `mdg:meteor-apm-agent` package from your app. 19 | 20 | 1. Run `meteor add montiapm:agent` inside your Meteor project to install the Monti APM agent. 21 | 2. Run `meteor remove mdg:meteor-apm-agent` inside your Meteor project to remove the old Meteor APM agent. 22 | 23 | ### Migrate from existing Monti APM configuration 24 | 25 | In order to use our provided Monti APM app, you will need to remove any existing Monti APM configuration from your app. 26 | 27 | To ensure that Monti APM will connect with our provided app, you will need to: 28 | 29 | 1. Ensure there's no `"monti"` settings in your Meteor settings file. 30 | 2. Ensuring you don't call `Monti.connect()` in your code. 31 | 32 | ## Monitoring your app 33 | 34 | After connecting your app to Monti APM following the steps above, your app will send information to Monti APM. Visit [Galaxy 2](https://galaxy-beta.meteor.com) to find links to your Monti APM dashboard. 35 | 36 | Links can be found in your app overview page. 37 | 38 | 39 | 40 | ## Learn More 41 | For more information on Monti APM and how to get started, visit the [Monti APM Docs](https://docs.montiapm.com/getting-started). -------------------------------------------------------------------------------- /source/app.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: App 3 | order: 30 4 | description: Learn how to monitor and manage your app 5 | --- 6 | 7 |

Overview

8 | 9 | Get a snapshot of the realtime status of your app and resource usage over time on the app overview page. 10 | 11 | 12 | 13 | You may also want to consider using [Monti APM](/apm-getting-started.html) for more insight. 14 | 15 |

Usage

16 | 17 | Your app's resource usage is determined by the size and number of containers. Galaxy combines the resources of all containers to determine the resources available to your app. Customers can view app resource usage on the app overview page. 18 | 19 | 20 | 21 |

Containers

22 | 23 | Galaxy containers are packaged environments for Meteor apps. Dive into individual container performance metrics on the container page. Read more in the [containers](/containers.html) and [container environment](/container-environment.html) articles. 24 | 25 | 26 | 27 |

Logs

28 | 29 | Galaxy records the output of your app's logs in addition to printing operational logs for your deployment. Logs are aggregated from all containers in your app and ordered chronologically. Read more in the [logs](/logs.html) article. 30 | 31 | 32 | 33 | You can [filter logs from a specific container](/containers.html#connect-logs) on the app container page. 34 | 35 |

Icons

36 | 37 | Icons in your app's dashboard will display the current state of your app. 38 | 39 | 40 | 41 | The green full circle indicates that your app's container set is running, and passed its health checks. For an app that should be running, this is the desired state. 42 | 43 | 44 | 45 | The outlined green full circle means that your app's container set status is starting, updating, or stopping. It should leave this state fairly quickly. 46 | 47 | 48 | 49 | The outlined green empty circle means that your app's container set has experienced an issue while starting. 50 | 51 | This means your app has never successfully run all its containers, or has not since the last time it was stopped, and your app is currently running containers fewer in number than the amount it is trying to run (the containers it is running may also be unhealthy). You will only see this icon upon your app's initial deploy, or when restarting it from a stopped state. 52 | 53 | Potential causes include a build failure caused by an inability to build your code as written, or a regular crash upon startup. The problem will need to be resolved before your app can successfully run. 54 | 55 | 56 | 57 | The red full circle indicates that all the containers your app is trying to run are unhealthy. Your app won't be able to load or run successfully until you resolve the issue. 58 | 59 | 60 | 61 | The gray full circle indicates that you stopped your entire app, and the process of stopping is complete. By extension, it also means that all the containers in your app's container set are stopped. 62 | 63 | If necessary, you can check the Activity Log in your account's right-hand sidebar to determine which user(s) completed this action. You can always restart your app, at any time. 64 | 65 |

Settings

66 | 67 |

Meteor Settings

68 | 69 | View the meteor settings and environment variables in your app's `settings.json` file. Learn more in the [environment variables article](/deploy-setup.html#env-variables). 70 | 71 |

Domains and SSL

72 | 73 | Manage the custom domains that you can use to access your app and SSL encryption. Learn more about adding [custom domains](/custom-domains.html) and [enabling SSL encryption](/encryption.html). 74 | 75 |

Container Size

76 | 77 | Scale vertically by adjusting the size of your containers. Learn more about [scaling your app](/scaling.html). 78 | 79 |

Stopping & deleting apps

80 | 81 | **Stopping an app** shuts down all of its containers. When stopped, the app's settings are preserved and organization members may continue to view app logs and performance metrics. 82 | 83 | **Deleting an app** shuts down all containers and removes the app from your Galaxy account. 84 | -------------------------------------------------------------------------------- /source/background-jobs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Background jobs 3 | order: 15 4 | description: Learn how to have background jobs without affecting your connected users 5 | --- 6 | 7 | Meteor is using Node.js in the server and Node.js by default is single-threaded, or at least almost single-threaded except for things it defers to the OS. 8 | 9 | In a single-threaded environment like Node.js if you perform long-running tasks in the same containers that you are processing your connected users actions they are going to compete using the event-loop. This competition could cause many problems, like slowness or even the feeling that your app is down even when it is not down. In these cases your app is really busy. 10 | 11 | > If you want to learn more about event-loop and "single-threaded" we recommend the following content: 12 | > - JavaScript VM internals, EventLoop, Async and ScopeChains - Arindam Paul on [YouTube](https://www.youtube.com/watch?v=QyUFheng6J0) 13 | > - Event Loop - Jake Archibald on [YouTube](https://www.youtube.com/watch?v=cCOL7MC4Pl0) 14 | > - What the heck is the event loop anyway? - Philip Roberts on [YouTube](https://www.youtube.com/watch?v=8aGhZQkoFbQ) 15 | > - Everything You Need to Know About Node.js Event Loop - Bert Belder on [YouTube](https://www.youtube.com/watch?v=PNa9OMajw9w) 16 | > - The Node.js Event Loop: Not So Single Threaded - Bryan Hughes on [YouTube](https://www.youtube.com/watch?v=zphcsoSJMvM) 17 | > - Node's Event Loop From the Inside Out - Sam Roberts on [YouTube](https://www.youtube.com/watch?v=P9csgxBgaZ8) 18 | 19 | Let's focus now on how you could solve this competition in your Meteor app. 20 | 21 |

Split into multiple apps

22 | 23 | Every Meteor app has a settings file, the settings file is used in runtime, but it's not use at build time. This means that you have the opportunity to use the settings json file to change some behaviors of your system even if you have a single code base. 24 | 25 | The idea here is to use the same code to provide a different environment for long-running tasks (like background jobs) and another environment for your connected users (web), so you don't need to worry about shared dependencies, multiple apps to update Meteor packages, multiple apps to update npm dependencies and so on. 26 | 27 | > It is ok if you want to have two independent apps with some shared code but in most cases we believe using the same code is the most effective way. 28 | > 29 | > But in some companies they already have many different apps so it makes sense to create an app just for long-running tasks. 30 | 31 | Here is how we would do, in our settings file we would have a boolean like `runJobs` and in the settings for our connected users app (web) we would use (`settings-web.json`): 32 | ```json 33 | { 34 | "runJobs": false 35 | } 36 | ``` 37 | In the app for running long tasks we would use (`settings-jobs.json`): 38 | ```json 39 | { 40 | "runJobs": true 41 | } 42 | ``` 43 | 44 | So we have enabled the jobs just in the jobs app. So in the file jobs file that is imported from your server `mainModule` you would have (`server/main.js`): 45 | 46 | ```js 47 | // server/main.js 48 | 49 | import '../infra/jobs.js'; 50 | ``` 51 | 52 | You would have a logic to decide based on your settings if you should run your long-running tasks or not: 53 | ```js 54 | // infra/jobs.js 55 | import { Meteor } from 'meteor/meteor'; 56 | import { SyncedCron } from 'meteor/littledata:synced-cron'; 57 | import { NotificationsCollection } from '../data/NotificationsCollection'; 58 | 59 | Meteor.startup(() => { 60 | console.time('jobs'); 61 | 62 | // we want to run jobs in development as well, no matter the settings 63 | if (!Meteor.isDevelopment && !Meteor.settings.runJobs) { 64 | logger.log('** APP: SyncedCron are not started on app instance **'); 65 | console.timeEnd('jobs'); 66 | return; 67 | } 68 | 69 | SyncedCron.add({ 70 | name: 'send notifications', 71 | schedule: parser => parser.text('every minute'), 72 | job: () => NotificationsCollection.sendNotifications(), 73 | }); 74 | 75 | SyncedCron.start(); 76 | console.timeEnd('jobs'); 77 | }); 78 | ``` 79 | 80 | In this example we are using `synced-cron` package to communicate between the apps using MongoDB. But you could use a different package or create your own solution. 81 | 82 | Another idea that you could use with this double app set up is to send data from one app to the other using DDP calls, some clients use this setup, so they can defer almost all the work for the jobs app, like processing an image, generating an Excel file, so everything that takes more than a few milliseconds is not going to cause slowness in the containers that are responding to user direct actions. 83 | 84 |

Deploying apps

85 | 86 | Now that you have your code ready and also your settings ready we need to think about the deploy. 87 | 88 | As you have the same code base you don't need to build twice, and this is possible using a deploy flag `--cache-build`. 89 | 90 | Here is how we would do it: 91 | ```shell 92 | # deploy.sh 93 | 94 | # build and deploy the jobs app 95 | meteor deploy jobs.yourdomain.com --settings settings-jobs.json --cache-build 96 | 97 | # deploy the web app 98 | meteor deploy app.yourdomain.com --settings settings-web.json --cache-build 99 | ``` 100 | 101 | The second deploy command is going to skip the build part, it is just going to upload your bundle and deploy your second app much faster. 102 | 103 | See that they are two different apps on Meteor Cloud (Galaxy), which is really great as you can isolate them, use different [triggers](./triggers.html), analyze their performances in different APM dashboards, everything is isolated in runtime, except your database. 104 | 105 | The jobs app for example could be just a backend app, without any domain accessing it. You just leave it without a CNAME pointing to it in your DNS configurations. 106 | 107 |

Monitoring

108 | 109 | As you have two different apps now it's simple to customize your app for a specific type of workload. 110 | 111 | For example, if your jobs app is using Worker Threads you could use container sizes that will allow you to have more than one core. That would probably don't make a lot of sense in your web app if you are not using Worker Threads there. 112 | 113 | Another important aspect is to analyze APM, Galaxy Metrics and logs independently. Including Galaxy notifications, so you will receive specific notifications if something is happening in the app, for example, maybe you know that your jobs app is going to be unhealthy with heavy jobs and this is ok, you can even turn off this notification if you want. 114 | 115 | And of course, all Galaxy configurations will independent for each app, as such, triggers, app protection, grace period, unhealthy container replacement, etc. 116 | 117 |

Costs

118 | 119 | Running two different apps with the same load is not going to increase your costs. Actually it could reduce your costs as you can use different container sizes instead of the large possible for all workloads. You could also use different triggers and scale down more aggressively as you are going to have more control of the tasks that are running in which app. 120 | 121 |

Alternative approaches

122 | 123 | - You could use different apps with different code bases, this is fine as well, as we explained above the only downside is that you need to manage two Meteor apps, two package.json, two of everything, so maybe it's more work. Also, you need to have a way to share packages what is fine but one more thing to be concerned about. 124 | 125 | - You could use `GALAXY_CONTAINER_ID` to try to control what is running in each container, but it's hard to manage your containers relying on Galaxy internals. Also, you would need to make sure you always have the container assigned to a specific job available. Another problem would be to avoid long-running task containers from user access as Galaxy proxy is managing the balance for you and that is what you want to avoid in the first place: mixing user requests and long-running tasks. The monitoring of our app will be harder as well you are going to have metrics from different work loads mixed up in the same app. 126 | 127 |

Example

128 | 129 | To wrap up we also have an [example](https://github.com/meteor/examples/#double-app) app implementing this approach. 130 | 131 | We use this approach a lot internally as well, and we are sharing here as a best practice as we really believe it is a very effective way to solve this problem. 132 | -------------------------------------------------------------------------------- /source/base-image-packages.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Default base image 3 | order: 16 4 | description: Learn about the default Galaxy base image 5 | --- 6 | 7 | Most Galaxy users run their app with the default base image. (For full control over the system libraries available to your app and its precise runtime environment, you can create a [custom base image](/custom-base-images.html) instead.) 8 | 9 | A base image is a [Docker](https://www.docker.com/) image. The default base image is stored in the repository [`meteor/galaxy-app`](https://hub.docker.com/r/meteor/galaxy-app/) on Docker Hub and is itself based on the repository [`meteor/ubuntu`](https://hub.docker.com/r/meteor/ubuntu/). The source for these packages can be found in the [`galaxy-images` GitHub repository](https://github.com/meteor/galaxy-images). 10 | 11 |

Base image Updates

12 | 13 |

August 04th, 2021

14 | 15 | Galaxy base Docker image is going to be upgraded by default in all new deploys starting on August 04th, 2021. 16 | 17 | It does include dependencies removal for minimizing the size and speed up deploys and scale ups. 18 | 19 | If you can’t update your app, check out the next section for a how to, but we recommend that you plan to do it soon! 20 | 21 | #### Breaking Changes 22 | 23 | If you don’t use the libraries below in your code you don’t need to worry about these breaking changes. 24 | 25 | The following libraries have been removed from the default base image: 26 | 27 | `libcairo2-dev imagemagick xfonts-base xfonts-75dpi graphicsmagick libjpeg-dev poppler-utils wkhtmltox` 28 | 29 | If you depend on it, you have two options: 30 | 31 | 1. Use the previous fixed base image (20210423T151822Z_93d0399) by changing your settings.json with this: 32 | 33 | ```json 34 | "galaxy.meteor.com": { 35 | "baseImage": { 36 | "repository": "meteor/galaxy-app", 37 | "tag":"20210423T151822Z_93d0399" 38 | } 39 | } 40 | ``` 41 | 2. Create a new custom image including the dependencies you need. For more info, read the docs [here](https://cloud-guide.meteor.com/custom-base-images.html). 42 | 43 | #### Migration Steps 44 | We recommend that you test first your app with the new base image in your staging environment on Galaxy first! Just change your settings.json to include the baseImage (20210727T191118Z_088ba36): 45 | 46 | ```json 47 | "galaxy.meteor.com": { 48 | "baseImage": { 49 | "repository": "meteor/galaxy-app", 50 | "tag":"20210727T191118Z_088ba36" 51 | } 52 | } 53 | ``` 54 | 55 | 56 | 57 |

April 30th, 2021 - Ubuntu Upgrade

58 | 59 | 60 | 61 | Galaxy base Docker image is going to be upgraded by default in all new deploys starting on April 30th, 2021. 62 | 63 | It includes a major update to `Ubuntu 20.04 Focal`, with a lot of security patches and improvements on stability and performance. 64 | 65 | If you can't update your app, check out the next section for a how to, but we recommend that you plan to do it soon! 66 | 67 | #### Breaking Changes 68 | 69 | If you don't use the libraries below in your code you don't need to worry about these breaking changes. 70 | 71 | - `wkhtmltox` was upgraded to `v0.12.6-1` 72 | 73 | 74 | - `PhantomJS` and `poppler` were both removed from the base image. If you depend on it, you have two options: 75 | 1. Use the previous fixed base image (`20180509T213223Z_b6ad5bc`) by changing your settings.json with this: 76 | ```json 77 | "galaxy.meteor.com": { 78 | "baseImage": { 79 | "repository": "meteor/galaxy-app", 80 | "tag":"20180509T213223Z_b6ad5bc" 81 | } 82 | } 83 | ``` 84 | Be careful, as you are opting out from new updates! 85 | 2. Create a new custom image including the dependencies you need. For more info, read the docs [here](./custom-base-images.html). 86 | 87 | #### Migration Steps 88 | 89 | - We recommend that you test first your app with the new base image in your staging environment on Galaxy first! Just change your settings.json to include the `baseImage` (`20210423T151822Z_93d0399`): 90 | ```json 91 | "galaxy.meteor.com": { 92 | "baseImage": { 93 | "repository": "meteor/galaxy-app", 94 | "tag":"20210423T151822Z_93d0399" 95 | } 96 | } 97 | ``` 98 | After deploying, you will be using the same image we are going to use as default starting on 30/April/21. 99 | 100 | - Don't change your baseImage property using Galaxy Edit Settings UI, it's not going to have any effect. It needs to be a new full deploy to force a new image creation. 101 | 102 | - If you don't deploy a new version of your app you will continue to use the previous base image. 103 | 104 | - After testing in a staging environment you have two options to apply this change to your production environment: 105 | 1. Keep this setting in your app and you are ready to go, this base image will be always used. 106 | 2. Starting from April 30th, 2021 you can remove this part of your settings as this base image is going to be the default. 107 | 108 |

Installed packages

109 | 110 | The current Galaxy default base image runs Ubuntu 20.04 LTS and comes with a set of packages pre-installed. Please note that in theory the package versions are not frozen and may be updated at any time. However, in practice, we know that many of our users may implicitly rely on the (increasingly outdated) versions of packages in the default base image. As of now, we plan to continue our implicit policy of never upgrading the Ubuntu packages on the default base image. Users who want newer versions of these packages should create a [custom base image](/custom-base-images.html) instead. 111 | 112 | Packages useful as part of the build process: 113 | - [build-essential](http://packages.ubuntu.com/trusty/build-essential) 114 | - [curl](http://packages.ubuntu.com/trusty/amd64/curl) 115 | - [wget](http://packages.ubuntu.com/trusty/wget) 116 | - [rsync](http://packages.ubuntu.com/trusty/rsync) 117 | - [git](http://packages.ubuntu.com/trusty/git) 118 | - [xz-utils](http://packages.ubuntu.com/trusty/xz-utils) 119 | - [ca-certificates](http://packages.ubuntu.com/trusty/ca-certificates) 120 | - [libssl-dev](http://packages.ubuntu.com/trusty/libssl-dev) 121 | 122 | 123 | In addition, the default base image contains several popular versions of Node preinstalled in directories with names like `/node-v12.22.0-linux-x64`. (Including these versions makes the container build and start process more efficient.) Galaxy uses the official binary distribution of Node from nodejs.org, not the Ubuntu package. 124 | 125 |

Build time behavior

126 | 127 | When you run `meteor deploy`, your local `meteor` command-line tool builds your app, bundles it into a [tarball](https://en.wikipedia.org/wiki/Tar_(computing%29), and uploads it to Galaxy. Galaxy then builds a Docker image for your app based on the default base image by running the `/app/setup.sh` script inside the image. This section describes exactly what the default base image's `/app/setup.sh` script does. 128 | 129 | First, it extracts your uploaded tarball into the `/app` directory. The tarball's contents are all nested under a directory called `bundle`, so this puts your built app into the `/app/bundle` directory. 130 | 131 | Next, it figures out which version of Node your app was built with. If that version isn't already part of the image, it downloads and installs it. In either case, it sets the `$PATH` environment variable to ensure that the correct version of Node is used for the rest of the build process. 132 | 133 | Next, it figures out which version of npm your app was built with, and installs that version of npm. 134 | 135 | Next, it runs `npm install --unsafe-perm` inside `/app/bundle/programs/server`. When building your app, the `meteor` tool includes the contents of most npm packages in the tarball, but if those packages contain binary code, they may need to be rebuilt for the 64-bit Linux server environment, which is what this command does. 136 | 137 | Finally, if the scripts `/app/bundle/programs/server/setup.sh` or `/app/bundle/setup.sh` exist, they are executed. (Current versions of Meteor do not make it easy to include these files in your bundle.) 138 | 139 | After running all these commands, the Galaxy image builder saves the state of the image to an internal Docker registry. 140 | 141 |

Run time behavior

142 | 143 | When Galaxy runs an app image based on the default base image, it executes a script called `/app/run.sh`. 144 | 145 | This script adds the proper version of Node to `$PATH`, just like at [build time](#build). It also makes the version of Node available in `$NODE_VERSION`. 146 | 147 | If the script `/app/bundle/run.sh` exists, then this script is executed with `bash`. (Current versions of Meteor do not make it easy to include this file in your bundle.) 148 | 149 | Otherwise, the script runs `node $GALAXY_NODE_OPTIONS main.js` inside the `/app/bundle` directory. You can set `$GALAXY_NODE_OPTIONS` to a flag or space-separated series of flags [in your settings.json file](/deploy-setup.html#env-variables) if you need fine-grained control over how Node runs your server, such as setting [garbage collection flags](/scaling.html#garbage-collection). 150 | -------------------------------------------------------------------------------- /source/cdn.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: CDN 3 | order: 43 4 | description: Learn how to configure a CDN with Galaxy 5 | --- 6 | 7 | Configuring a CDN with Galaxy is largely the same as [using a CDN with Meteor in any context](http://guide.meteor.com/deployment.html#cdn). 8 | 9 | In general, you don’t want to forward cookies from your CDN, as it leads to overcaching. Specifically, you should not forward the `galaxy-sticky` cookie, as it will result in caching one copy of every asset per container that your application runs. However, you do want to configure your CDN to forward query string parameters. 10 | 11 | Once you’ve set up the CDN with your application as its origin (for example, a [CloudFront](https://aws.amazon.com/cloudfront/) distribution named d12345678.cloudfront.net which proxies for www.exampleapp.com), you can tell Meteor to serve static JS and CSS assets from the CDN with 12 | 13 | ``` 14 | WebAppInternals.setBundledJsCssUrlRewriteHook((url) => { 15 | return `https://d12345678.cloudfront.net${url}&_g_app_v_=${process.env.GALAXY_APP_VERSION_ID}`; 16 | }); 17 | ``` 18 | 19 | The `_g_app_v_` query parameter tells Galaxy to only send this request to containers running the same version as the container that served the app HTML to you. Since different versions of your app are likely to have different versions of JS and CSS (and thus different bundled filenames), you want to ensure that the CDN looks at a container that will actually contain the file in question. 20 | 21 | This isn't a concern without a CDN, because Galaxy uses cookies to ensure that the JS/CSS request is routed to the same container as the HTML if possible, and Meteor knows to refresh the whole page if that's no longer possible. But because you should not configure your CDN to forward cookies, the normal mechanism does not work and the `_g_app_v_` technique is necessary. 22 | 23 | If you have static assets such as images used in your templates (for example ``) that you would also like to have cached by the CDN, you'll need to include the CDN prefix and `_g_app_v_` query parameter in the image tag too. Combined with the previous example, the image would tag become ``. We recommend you create a helper that does this for you only in production. 24 | -------------------------------------------------------------------------------- /source/changelog.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Changelog 3 | description: List of changes on Meteor Cloud 4 | --- 5 | 6 | ## New Changelog (2022/11/21) 7 | 8 | Now you can follow our updates closely and stay informed about everything Meteor Cloud related! 9 | 10 | Subscribe to our new Changelog on https://cloud-news.meteor.com and receive our news by email. 11 | 12 | *This Changelog page will not receive new updates.* 13 | 14 | ## v3.2.1 15 | 16 | - Updated Whitelisting IPs. To find out more, go to your app settings. 17 | 18 | ## v3.2 19 | 20 | - Updated Override Meteor Settings (previously Next auto deploy settings) 21 | 22 | ## v3.1 23 | 24 | - One Time Password on Meteor Accounts 25 | - [Read more](https://forums.meteor.com/t/2fa-otp-support-in-meteor-accounts-meteor-cloud/57248) 26 | 27 | ## v3.0 (2021/12/16) 28 | 29 | - Push to Deploy 30 | - [Read more](https://blog.meteor.com/introducing-push-to-deploy-6ea464ee5f33). 31 | - Improvements to Apps List page 32 | - Improvements to App Details page 33 | 34 | ## v2.5 (2021/11/12) 35 | 36 | - Logs 37 | - Download logs button now exports all the logs from your app. As we store 7 days of logs you can download them all in a single click. Before the same button was limited to download 10,000 lines of logs. 38 | 39 | ## v2.4 (2021/08/19) 40 | 41 | - Security 42 | - Always forcing HTTPs and generating LetsEncrypt certificate to a domain, by default, when deploying an app for the first time. 43 | 44 | ## v2.3 (2021/07/23) 45 | 46 | - Triggers 47 | - Improve the triggers to avoid scaling down during deploys. 48 | 49 | ## v2.2 (2021/06/18) 50 | 51 | - Free deploys 52 | - Increase Cold Start timeout to 30 minutes 53 | 54 | ## v2.1 (2021/05/09) 55 | 56 | - Security 57 | - Update PEM package for new openssl executable on Ubuntu 20.04 58 | 59 | ## v2.0 (2021/04/23) 60 | 61 | - Deploy 62 | - new Docker default base image. [read more](./base-image-packages.html#v2.0) 63 | 64 | ## v1.22 (2021/04/23) 65 | 66 | - API 67 | - new `startApp` and `stopApp` mutations. 68 | 69 | ## v1.21 (2021/02/17) 70 | 71 | - Logs 72 | - Filter logs between two dates. 73 | 74 | ## v1.20 (2021/01/16) 75 | 76 | - Cloud UI Update 77 | 78 | ## v1.19 (2020/11/12) 79 | 80 | - Security: 81 | - New app protection features, fine tune how many requests do you want to accept and control each block individually. 82 | 83 | ## v1.18 (2020/11/04) 84 | 85 | - API: 86 | - new `createdAt` field on Container type. 87 | 88 | ## v1.17 (2020/11/03) 89 | 90 | - Core: 91 | - Free deploy with Cold start (meteor deploy --free). 92 | - MongoDB included (meteor deploy --mongo). 93 | 94 | ## v1.16 (2020/10/27) 95 | 96 | - UI: 97 | - It's now possible to set the minimum supported version of TLS on each app by going to: 98 | Settings -> Security -> SSL TLS Protocol support 99 | - Proxy: 100 | - The proxy layer now blocks requests based on TLS app security configuration. 101 | 102 | ## v1.15 (2020/09/30) 103 | 104 | - UI: 105 | 106 | - Search by container id on containers tab inside your app 107 | 108 | 109 | - See your app ID in the tooltip of app status green circle 110 | 111 | - Containers: 112 | - New container sizes: Octa (8 ECUs and 8 GBs of RAM) and Dozen (12 ECUs and 12 GBs of RAM) 113 | 114 | ## v1.14 (2020/09/27) 115 | 116 | - API: 117 | - Support custom certificates 118 | 119 | ## v1.13 (2020/09/17) 120 | 121 | - UI: 122 | - Bug fix on loops with notifications resulting in a better performance in the UI as well. 123 | - Deploys: 124 | - Better performance 125 | - Timeouts were increased as well 126 | - Build cache support (Meteor 1.11) 127 | 128 | ## v1.12 (2020/09/08) 129 | 130 | - UI: 131 | - Support for private cluster in the UI, now clients with private clusters can move their apps back and forth to the public clusters using the UI 132 | 133 | ## v1.11 (2020/08/26) 134 | 135 | - Logs: 136 | - Better performance when loading the logs 137 | 138 | ## v1.10 (2020/08/20) 139 | 140 | - Domains: 141 | - Enable unicode domains on galaxy - change regexp for turkish characters 142 | 143 | ## v1.9 (2020/08/13) 144 | 145 | - API: 146 | - Domains: Adds a new mutation to Galaxy GraphQL API that enables the upsert of domains with automatic certificate generation. For more details, please refer to the graphql docs API on [API Explorer](https://us-east-1.api.meteor.com/explorer) - saveDomain(domain: DomainInput!): Domain. 147 | 148 | ## v1.8 (2020/08/07) 149 | 150 | - Logs: 151 | 152 | - Adds option to go back in date with a date picker 153 | - Improves performance for long logs listing by virtualization 154 | - Adds a shortcut on the timestamp of a log to quickly jump to a date 155 | - More details on the video below: 156 | 157 | [![](https://img.youtube.com/vi/WPYyHeWM21Q/0.jpg)](http://www.youtube.com/watch?v=WPYyHeWM21Q) 158 | 159 | ## v1.7 (2020/07/30) 160 | 161 | - Security: 162 | - 2FA 163 | - App Protection 164 | 165 | ## v1.6 (2020/07/16) 166 | 167 | - Triggers: 168 | - Kill container trigger 169 | 170 | ## v1.5 (2020/07/02) 171 | 172 | - Activities: 173 | - Hides app unavailable activities from the right side bar 174 | 175 | ## v1.4 (2020/06/29) 176 | 177 | - Activities: 178 | - Hides container unhealthy activities from the right side bar 179 | 180 | ## v1.3 (2020/06/25) 181 | 182 | - Notifications: 183 | - Fixes link to Notifications doc 184 | - Fixes the state of Notifications settings after save 185 | - Misc: 186 | - Exposes all the states on invoices list in the account settings page 187 | 188 | ## v1.2 (2020/06/05) 189 | 190 | - Triggers: 191 | - Labels changed: Series to Sample duration, Metrics quantity to Sample quantity and Seconds interval to Run every (seconds). 192 | - Fixed alignments and spacing. 193 | - Fixed validation between min and max containers. 194 | 195 | ## v1.1 (2020/06/04) 196 | 197 | - Triggers: 198 | - Changed the color to indicate when a day of week is enabled. 199 | - Fixed validations on Advanced Settings and Rules. 200 | 201 | ## v1.0 (2020/06/03) 202 | 203 | - Released [Triggers (Autoscaling)](./triggers.html) 204 | 205 | ## v0.0 206 | 207 | - We started to use this change log at 2020/06/03. 208 | -------------------------------------------------------------------------------- /source/collaborators.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Collaborators 3 | order: 71 4 | description: Learn how to add collaborators to your app 5 | --- 6 | 7 | You can add collaborators to an app by creating an Meteor Cloud organization and transferring the app to that organization. 8 | 9 | Meteor Cloud organization accounts allow you to deploy, scale, and monitor apps with a team of developers. Note that you always log in as an individual user (organizations don't have passwords). 10 | 11 |

Get Meteor Cloud for organizations

12 | 13 | 1. Create a new organization at in your Meteor Cloud account under ["Organizations"](https://www.cloud.meteor.com/organizations) 14 | 2. Add your collaborator[s] to the new organization 15 | 3. Access your organization by toggling the "organization tab" on your Meteor Cloud dashboard. Your dashboard view will change depending on the organization you select. 16 | 6. Enter payment details for your organization by selecting the "billing" link for you [organization](https://cloud.meteor.com/organizations) 17 | 7. [Deploy new apps](/deploy-command-line.html#account-selection) or [transfer existing apps](/transfer-apps.html) to this organization. 18 | 19 | And you're done! 20 | -------------------------------------------------------------------------------- /source/commands.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Commands 3 | order: 46 4 | description: A reference for Galaxy's commands 5 | --- 6 | 7 |

meteor CLI: Frequently Used Commands

8 | 9 |

deploy

10 | 11 |

Mac and Unix

12 | 13 | `meteor deploy` can be used for creating new apps and updating existing ones. 14 | 15 | The full command is: 16 | 17 | `DEPLOY_HOSTNAME=[region] meteor deploy [hostname] --settings [path-to-settings-file]` 18 | 19 | - `region` should be us-east-1.galaxy.meteor.com for the US region, eu-west-1.galaxy.meteor.com for the EU region or ap-southeast-2.galaxy.meteor.com for the Asia-Pacific region. 20 | - `hostname` is the fully qualified domain name where you’re planning to host your application (for example, ‘www.facebook.com’). 21 | - `path-to-settings-file` is the path to your JSON settings file (for example, ‘./settings.json’). 22 | 23 | You don't have to specify `DEPLOY_HOSTNAME` if: 24 | 25 | - your Meteor version is 1.3.3 or higher, and you are deploying to the US region 26 | - your Meteor version is 1.3.3 or higher, you are deploying to the EU region and have already configured your hostname's DNS settings 27 | 28 | If your app satisfies these conditions, the deployment command can be simplified to: 29 | 30 | `meteor deploy [hostname] --settings [path-to-settings-file]` 31 | 32 |

Windows

33 | 34 | On Windows, the deploy command should be split into two separate commands, occupying two separate lines. 35 | 36 | `DEPLOY_HOSTNAME=...` should be changed to `SET DEPLOY_HOSTNAME...` and should occupy one line. 37 | `meteor deploy` should occupy another line. 38 | 39 | You don't have to set `DEPLOY_HOSTNAME` if you app meets the conditions described above. 40 | 41 |

authorized transfer

42 | 43 | `meteor authorized` can be used to transfer applications with the `--transfer` flag. 44 | 45 | - Transfer with Meteor 1.3 or higher versions: `DEPLOY_HOSTNAME=galaxy.meteor.com meteor authorized [your_existing_hostname] --transfer [new_account_name]` 46 | 47 | - Transfer with Meteor 1.2 or lower versions: `DEPLOY_HOSTNAME=galaxy.meteor.com meteor authorized [your_existing_hostname] --add [new_account_name]` 48 | 49 | For this to work, you must have deploy privileges to the account `new_account_name`. 50 | 51 |

whoami

52 | 53 | `meteor whoami` will tell you which user you are logged in as. 54 | 55 | This can be important for troubleshooting, if you are a member of one or more organizations and are having access issues. 56 | 57 |

login

58 | 59 | `meteor login` will prompt you for a username and password to log you in, given the correct credentials. 60 | 61 |

login with token

62 | 63 | `METEOR_SESSION_FILE=[token-file] meteor login` will ask you for your username and password, then create a deployment token you can use to issue other commands, such as the deploy command. 64 | 65 | This token will be good for 90 days from the time of generation. 66 | 67 | - `token-file` is the path to your JSON deployment token file (for example, ‘./token.json’). 68 | 69 |

logout

70 | 71 | `meteor logout` will log you out as the current user. 72 | 73 |

list sites

74 | 75 | `meteor list-sites` lists all the apps you have access to, across all your organizations. 76 | 77 |

update

78 | 79 | `meteor update` allows you to update your Meteor version. You can use the `--release` flag to specify a version. 80 | 81 | This can resolve issues involving deployment and application uptime, especially if the Meteor version used to deploy your app significantly predates the most recent Meteor version. 82 | -------------------------------------------------------------------------------- /source/containers.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Containers 3 | order: 31 4 | description: Learn how to monitor and manage containers 5 | --- 6 | 7 | Galaxy containers are packaged environments that are optimized to run Meteor. Each container runs one copy of an app. 8 | 9 |

Usage

10 | 11 | Each container has CPU and Memory allowance. Galaxy combines the pooled resources of all containers to track overall app performance. You can dive into individual container performance using the graphs on the app's containers page. 12 | 13 | 14 | 15 |

Container sizes

16 | 17 | Since every app has unique architecture and performance characteristics, adjusting the container size helps you meet the specific resource needs of your app. 18 | 19 | - Compact: 512 MB/0.5 ECU 20 | - Standard: 1 GB/1 ECU 21 | - Double: 2 GB/2 ECU 22 | - Quad: 4 GB/4 ECU 23 | 24 | [ECU](https://aws.amazon.com/ec2/faqs/#hardware-information) is defined by Amazon and is designed to provide a relative measure of processing power. The abbreviation stands for EC2 Compute Unit. 25 | 26 | The Galaxy CPU graphs show your CPU usage as a percentage of your container's allocated CPU cap (or as a percentage of the total of all your containers' CPU caps for the graph on your app's overview page). Note that this is different from the CPU percentage shown in graphs in [Monti APM](./apm-getting-started.html); APM does not known about container sizes and shows CPU as a percentage of a single underlying CPU core. 27 | 28 |

View logs from a specific container

29 | 30 | Accessing the logs from a specific container can help you diagnose any unexpected behavior. Click on the icon near the container name to see the logs from this container. 31 | 32 |

Connect to a specific container

33 | 34 | If you suspect a container is misbehaving or would like to access container-specific information, you may want to connect to that specific container to learn more. From your app's containers page, click on the icon near the container's name to see your app as served by this container. 35 | 36 | Since we re-route to a new container when your container is unavailable, you should verify which container subscriptions and remote method calls are being routed through. 37 | 38 | You can inspect the `X-Galaxy-Container` [response header](https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/resource-loading#http-headers) for the `websocket` resource using [Chrome DevTools](https://developer.chrome.com/devtools) or the equivalent in your browser. 39 | 40 |

Kill a container

41 | 42 | In instances when application code behaves unexpectedly you may want to kill a container. This forcefully stops the running process and launches your Meteor app in a fresh container. 43 | 44 | You can kill a container by going to the designated container on your app's containers page and clicking the kill button below the title. 45 | 46 |

Container restarts

47 | 48 | Containers may be restarted for several reasons, such as: 49 | 50 | 1. A bug in an app caused memory to spike, which caused its container to be killed and then restarted. 51 | 2. The app was working correctly, but it was overwhelmed by the number of connections or the load placed on it. Consequently, its container ran out of memory, was killed and restarted. 52 | 3. Your app exited. 53 | 4. An unavoidable hardware or network problem spontaneously caused the underlying machine to break. (This is rare but impossible to avoid 100% of the time.) 54 | 5. Galaxy had a need to replace the underlying machine on which your container is runnning (for security upgrades or to maintain cluster size). 55 | 56 | If constant uptime is a core requirement, we recommend running your app on more than 1 container. This will protect your uptime against your app crashing or spontaneous hardware/network failures. When an app runs on multiple containers, traffic can be routed elsewhere when a single container fails or becomes unresponsive. (Automated machine replacements generally do not cause downtime, as we will start a new instance of your container on a new machine and wait for it to become healthy before stopping your existing container.) 57 | 58 | Please note that, if you do choose to run a 1 container app, downtime will be unavoidable in the event of a container crash or a machine failure. Single container apps are not appropriate for apps with strong uptime requirements. 59 | -------------------------------------------------------------------------------- /source/custom-base-images.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Custom base images 3 | order: 17 4 | description: Learn how to customize your app's environment 5 | --- 6 | 7 | Most Galaxy users run their app with the [default base image](/base-image-packages.html). This provides a basic environment for running most Meteor apps. 8 | 9 | For full control over your app's environment, you can provide a custom base image instead. This allows you to precisely control the set of system packages available to your app, customize exactly what happens when Galaxy builds your app's image at deploy time and when Galaxy runs your app, and even allows you to run non-Meteor software on Galaxy. 10 | 11 | A base image is a [Docker](https://www.docker.com/) image. Base images must live on [Docker Hub](https://hub.docker.com/) and be publicly readable. (This means they should not contain any secrets.) 12 | 13 | You build your base image using a Dockerfile. You should use the Dockerfile to choose an operating system for your base image (such as `ubuntu:16.04`) and install packages. You can look at the [source of the Galaxy default base image](https://github.com/meteor/galaxy-images) for inspiration. The Dockerfile should also add a file called `/app/setup.sh` and specify a command to run with the `CMD` or `ENTRYPOINT` directives. For more details, see the [Docker documentation](https://docs.docker.com/). 14 | 15 | Once you've built your base image and pushed it to Docker Hub, specify it in your settings.json file under `baseImage` inside `galaxy.meteor.com` (next to `env`). You need to specify both the Docker repository (which generally includes your username) and the tag you want to use. For example, your settings file may look like: 16 | 17 | ``` 18 | { 19 | "galaxy.meteor.com": { 20 | "env": { "MONGO_URL": "mongodb://..." }, 21 | "baseImage": { 22 | "repository": "username/my-galaxy-base-image", 23 | "tag": "v23" 24 | } 25 | } 26 | } 27 | ``` 28 | 29 | Docker allows you to push a new image to an existing tag. Currently, if you do this, Galaxy will not rebuild your app until you perform another `meteor deploy`. We may change this policy in the future. We recommend that you use a new tag each time your change your base image, and specify that tag rather than a mutable tag like `latest` in your `baseImage` specification. 30 | 31 |

Build time behavior

32 | 33 | When you run `meteor deploy`, your local `meteor` command-line tool builds your app, bundles it into a [tarball](https://en.wikipedia.org/wiki/Tar_(computing%29), and uploads it to Galaxy. 34 | 35 | Galaxy then builds a Docker image for your app based on the default base image by running the `/app/setup.sh` script inside the image using `/bin/bash`. Every custom base image must contain `/bin/bash` and `/app/setup.sh`. (We may relax this requirement in the future to allow `/app/setup.sh` to work with any shell, so you must make sure that `/app/setup.sh` has the executable bit set and that it has a proper [shebang line](https://en.wikipedia.org/wiki/Shebang_(Unix%29).) 36 | 37 | Galaxy provides a single argument to your setup script: an URL to your app's tarball. Note that this URL is not guaranteed to work forever: your setup script should download the tarball during the build phase rather than storing the URL for the run phase. We suggest you download and expand the tarball with a command like 38 | 39 | ``` 40 | cd /app && curl -sS "$1" | tar xz -m 41 | ``` 42 | 43 | (The `-m` flag ignores timestamps from the computer used to run `meteor deploy`; if that computer has clock skew, some build systems can get confused, so it's safer to just set timestamps inside the image builder.) 44 | 45 | The script should do whatever other build-time behavior is required, such as invoking `npm install` or other build systems. 46 | 47 | 48 |

Run time behavior

49 | 50 | To run your app, Galaxy invokes whatever command is specified in your Dockerfile via the [`CMD` or `ENTRYPOINT` directive](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). It does not provide any additional arguments to the command. Galaxy sets the environment variables documented under [container environment](/container-environment.html). 51 | 52 | Your command is expected to run a server that listens on the port specified by the `$PORT` environment variable. Even if you are using Galaxy to run code that isn't a traditional web server (for example, some sort of helper process for your main app), Galaxy expects to see a functioning web server in order to consider your app to be healthy. If you choose to deploy software on Galaxy which does not have a web server, you should disable unhealthy container replacement on your app's settings page. However, we recommend you expose a web server so that you can tell if your container is healthy or not. 53 | 54 | Your container continues to run until its specified command completes or Galaxy stops it. 55 | 56 | 57 |

Puppeteer

58 | 59 | This image [(meteor/galaxy-puppeteer)](https://github.com/meteor/galaxy-images/tree/master/galaxy-puppeteer) bundles every library puppeteer needs to be able to run. You can use it by doing the follow on your settings.json: 60 | 61 | ```json 62 | { 63 | "galaxy.meteor.com": { 64 | "env": { "MONGO_URL": "mongodb://..." }, 65 | "baseImage": { 66 | "repository": "meteor/galaxy-puppeteer", 67 | "tag": "latest" 68 | } 69 | } 70 | } 71 | ``` 72 | It's also expected that your usage of puppeteer uses the following flags: 73 | 74 | ```js 75 | const browser = await puppeteer.launch({ 76 | args: [ 77 | '--no-sandbox', 78 | '--disable-setuid-sandbox', 79 | '--disable-dev-shm-usage' 80 | ] 81 | }); 82 | const page = await browser.newPage(); 83 | await page.goto("https://www.google.com"); 84 | ``` 85 | -------------------------------------------------------------------------------- /source/custom-domains.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Domains 3 | order: 20 4 | description: Learn how to make an application accessible via a custom domain name 5 | --- 6 | 7 | You can specify one or more hostnames for an application. Galaxy will make the app available on those hostnames. These hostnames can be on a custom domain, or can use the Galaxy-provided .meteorapp.com, eu.meteorapp.com domains and au.meteorapp.com; for the US East, EU West and Asia-Pacific regions, respectively. 8 | 9 |

When first deploying

10 | 11 | When first deploying specify the hostname through the command line: 12 | 13 | `DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy [hostname] --settings path-to-settings.json` 14 | 15 | Once your app is successfully deployed to Galaxy, [configure your DNS](/dns.html) to make the hostname accessible. Galaxy-provided meteorapp hostnames are automatically configured for you. 16 | 17 | If you want to change the primary hostname of your app then deploy a new app at the designated hostname. Once that's deployed, you can safely delete the old app. 18 | 19 | `DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy [new_hostname] --settings path-to-settings.json` 20 | 21 |

Included .meteorapp.com domain

22 | 23 | Galaxy allows subdomains on .meteorapp.com for use by any app deployed to Galaxy. 24 | 25 | For apps deployed to Galaxy's US East region, deploy to `.meteorapp.com`. 26 | 27 | For apps deployed to Galaxy's EU West region, deploy to `.eu.meteorapp.com`. 28 | 29 | For apps deployed to Galaxy's Asia-Pacific region, deploy to `.au.meteorapp.com`. 30 | 31 |

Adding additional custom domains

32 | 33 | You can access the same app from multiple domains by adding custom domains. Practically speaking, this means you can add as many additional domain names as you want to an existing app. 34 | 35 | To do this, navigate to the **Domains & HTTPS** section of your app's settings page and add new domains via the user interface. 36 | 37 | The domain must be one of the following: 38 | * A fully qualified domain name such as foo.mydomain.com 39 | * A wildcard domain name such *.mydomain.com 40 | 41 | If you specify a wildcard domain, then all subdomain.mydomain.com requests will be routed to that app. 42 | 43 | 44 | 45 |

Troubleshooting

46 | 47 | - `This host domain is already in use on Galaxy` The specified domain is being utilized by another application on Galaxy. Deploy your application to a different domain name, or write in to support@meteor.com if you believe you have the rights to the name. 48 | 49 | - `hostname: Requested domain contains invalid characters.` The specified domain name has invalid characters. Domain names need to consist of lowercase letters & numbers. The top level domain can only be lowercase letters. Remove the offending letters, and try again. 50 | -------------------------------------------------------------------------------- /source/deploy-command-line.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deploy with command-line 3 | order: 11 4 | description: Learn how to deploy an application to Galaxy with an alternative way. 5 | --- 6 | 7 | Galaxy makes it simple to deploy, scale, and monitor your Meteor application. This guide provides step-by-step instructions for deploying your application using Meteor command-line. 8 | 9 |

Deploy a new app

10 | 11 | You can use the Meteor CLI tool to deploy applications to Galaxy. Make sure that you are signed in into an authorized Meteor Developer Account that has permission to deploy to Galaxy. Use the CLI command `meteor whoami` to verify which Meteor Developer Account you are signed into. 12 | 13 | The value of DEPLOY_HOSTNAME will depend on which region you are deploying to: 14 | 15 | - To deploy to US East: DEPLOY_HOSTNAME=galaxy.meteor.com 16 | 17 | - To deploy to EU West: DEPLOY_HOSTNAME=eu-west-1.galaxy.meteor.com 18 | 19 | - To deploy to Asia-Pacific: DEPLOY_HOSTNAME=ap-southeast-2.galaxy.meteor.com 20 | 21 |

Select a hostname

22 | 23 | Choose a hostname that the public can use to access your application. You can use a custom domain or you can use the included *.meteorapp.com domain. 24 | 25 | If you are using the included domain, use `.meteorapp.com` for apps deployed to the US East region, `.eu.meteorapp.com` for apps deployed to the EU West region or `.au.meteorapp.com` for apps deployed to the Asia-Pacific region. 26 | 27 | If you have a custom domain name, then you need to point your DNS to `galaxy-ingress.meteor.com`. More instructions on DNS configuration can be found [here](/dns.html). 28 | 29 |

Mac and Linux

30 | 31 | On the command line, within your application's directory, type: 32 | ``` 33 | DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy [hostname] --settings path-to-settings.json 34 | ``` 35 | 36 | - `hostname` is the fully qualified domain name where you're planning to host your application (for example, `www.yourappname.com`). 37 | - `path-to-settings.json` is the path to your settings file (for example, './settings.json'). 38 | 39 |

Windows

40 | 41 | If you are using Windows, you need to set the environment variable first, then run the deployment command second (the syntax is the same as everything you'd write for meteor deploy). The commands will look like this: 42 | 43 | ``` 44 | $ SET DEPLOY_HOSTNAME=galaxy.meteor.com 45 | $ meteor deploy [hostname] --settings path-to-settings.json 46 | ``` 47 | 48 |

Cost

49 | 50 | There is no cost for using the command-line deployment, as in this way you are using your own machines to build and deploy your apps. 51 | 52 | > If you want to use our push to deploy feature, read our [main deployment guide](/deploy-to-galaxy.html). 53 | 54 |

Deployment options

55 | 56 |

Cache your build

57 | 58 | You can use the option `--cache-build` to reuse your build in multiple deploys. 59 | 60 | This is useful if you want to deploy the same bundle to different environments and also if your upload is failing so you can just upload again without a new build. 61 | 62 | The cache checks the current git commit of your repository so you need to be deploying from a folder that is a Git repository. 63 | 64 | ``` 65 | DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy [hostname] --settings path-to-settings.json --cache-build 66 | ``` 67 | 68 | > This was introduced on Meteor 1.11 69 | 70 |

Build Only

71 | 72 | You can use the option `--build-only` to stop the process after the build. 73 | 74 | This is useful if you want to deploy the same bundle to different environments but first you want to build without deploying the bundle yet. 75 | 76 | It's recommend to use this option with `--cache-build` so your bundle is not deleted after the process. If you want to just check if your build is working then you don't need to use `--cache-build`. 77 | 78 | ``` 79 | DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy --cache-build --build-only 80 | ``` 81 | 82 | > This was introduced on Meteor 2.3 83 | 84 |

Specify an account to deploy

85 | 86 | Galaxy utilizes the following policy to select the account to deploy your application to: 87 | 88 | 1. If an application with the specified hostname already exists in an account, Galaxy deploys to the same account. 89 | 2. If it is a new application, Galaxy chooses the individual user account if it exists. 90 | 3. If it is a new application, and individual user account does not exist, Galaxy chooses the first Galaxy organization account that you are a member of. 91 | 92 | If you are a member of two or more accounts, you can specify an owner username (available in Meteor 1.3) with `--owner [username]`. 93 | 94 | ``` 95 | DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy [hostname] --settings path-to-settings.json --owner [username] 96 | ``` 97 | 98 | Where `username` is the Galaxy account username the application should deploy into. You need to have deploy privileges to the account. Note: this only applies for new applications, as any subsequent deploys will already be attached to an account and re-use the same account. 99 | 100 |

Using a deployment token

101 | 102 | Galaxy can also accept deployment tokens, which are good for 90 days. You can pass `METEOR_SESSION_FILE=token.json` before meteor login to generate a login session token so you don’t have to share your login credentials with third-party service providers. This solution is recommended for continuous integration service providers. 103 | 104 | You can use a deployment token as an alternative to typing in your username and password. You'll need to specify it both when running `meteor login` on your machine to generate the file, and when actually running `meteor deploy` in CI. Please note that your organization choice does not affect your deployment token. 105 | 106 |

Learn more

107 | 108 | - Learn how to [configure your apps](/deploy-setup.html) on Galaxy. 109 | - Read our main [guide for deploying applications](/deploy-to-galaxy.html) on Galaxy. 110 | -------------------------------------------------------------------------------- /source/deploy-quickstart.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deploy quickstart 3 | description: Learn how to quickly deploy an app to Galaxy with these step-by-step instructions. 4 | --- 5 | 6 | The content of this page was moved to this [new deployment guide](/deploy-to-galaxy.html) and [deployment with command-line](/deploy-command-line.html) pages. 7 | -------------------------------------------------------------------------------- /source/deploy-region.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Regions 3 | order: 18 4 | description: Learn how to deploy your app to regions around the world 5 | --- 6 | 7 | We recommend deploying your app to region(s) where your customers reside for low latency and optimal performance. 8 | 9 | Galaxy allows you to deploy your app to the following regions: 10 | 11 | - AWS `us-east-1` in Virginia, USA (default region) 12 | 13 | - AWS `eu-west-1` in Dublin, Ireland 14 | 15 | - AWS `ap-southeast-2` in Sydney, Australia 16 | 17 | - AWS `af-south-1` in Cape Town, Africa 18 | 19 | View the [deployment guide](deploy-to-galaxy.html) for specific instructions on how to deploy to the region of your choice. 20 | 21 |

US East Region

22 | 23 | Galaxy management interface URL: [galaxy.meteor.com](https://galaxy.meteor.com) 24 | DEPLOY_HOSTNAME: `galaxy.meteor.com` 25 | Ingress URL for custom domain CNAME: `galaxy-ingress.meteor.com` 26 | 27 |

EU West Region

28 | 29 | Galaxy management interface URL: [eu-west-1.galaxy.meteor.com](https://eu-west-1.galaxy.meteor.com/) 30 | DEPLOY_HOSTNAME: `eu-west-1.galaxy.meteor.com` 31 | Ingress URL for custom domain CNAME: `eu-west-1.galaxy-ingress.meteor.com` 32 | 33 |

Asia-Pacific Region

34 | 35 | Galaxy management interface URL: [ap-southeast-2.galaxy.meteor.com](https://ap-southeast-2.galaxy.meteor.com) 36 | DEPLOY_HOSTNAME: `ap-southeast-2.galaxy.meteor.com` 37 | Ingress URL for custom domain CNAME: `ap-southeast-2.galaxy-ingress.meteor.com` 38 | 39 |

New Regions

40 | Not seeing the region you’re looking for? Submit a request for a new region! 41 | -------------------------------------------------------------------------------- /source/deploy-setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deployment configurations 3 | order: 11 4 | description: Learn how to configure an application on Galaxy. 5 | --- 6 | 7 | This guide provides instructions for configuring your application on Galaxy. You can learn how to configure your domain name, MongoDB, and common environment variables. 8 | 9 |

Configure your domain name

10 | 11 | The first thing you should do is verify that the deployment was successful. Check to see if the application is accessible by navigating to its URL. Then check the application logs in Galaxy at `galaxy.meteor.com/app//logs` to see if there are any errors that are affecting the deployment. 12 | 13 | Once your application is successfully deployed, head on over to your [Galaxy dashboard](http://galaxy.meteor.com) to configure your application by adding a custom domain name and enabling SSL encryption. 14 | 15 | Add a domain in your application’s settings and point your DNS to: 16 | 17 | - `galaxy-ingress.meteor.com` for applications in the US East region. 18 | 19 | - `eu-west-1.galaxy-ingress.meteor.com` for applications in the EU West region. 20 | 21 | - `ap-southeast-2.galaxy-ingress.meteor.com` for applications in the Asia-Pacific region. 22 | 23 | If you are deploying to a root domain (for example mydomain.com), then follow the advanced instructions [here](/dns.html). 24 | 25 | 26 | 27 | [Enable encryption](/encryption.html) to secure sensitive data by generating a free [Let’s Encrypt](https://letsencrypt.org) certificate by clicking on `Generate Certificate` or uploading your own custom certificate. 28 | 29 | 30 | 31 |

Configure your MongoDB

32 | 33 | If your Meteor application has a package that requires Mongo, then you'll need a Mongo database configured for your application. Most users will want to use a hosted database provider instead of running it yourselves, such as [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) or [ScaleGrid](https://console.scalegrid.io/users/register?partnerID=meteor.com). 34 | 35 | For optimum performance, we recommend that you setup a database in the same AWS region as your app deployment. 36 | 37 | Many MongoDB providers expect you to tell them what IP addresses your app will be connecting from and forbids all connections from outside those addresses. To accomplish this on Galaxy, you'll need to [run your app in IP whitelisting mode](/container-environment.html#network-outgoing). 38 | 39 |

Create a settings file for Galaxy

40 | 41 | Create a Meteor settings file that will define the set of configurations needed for your application to deploy and run on Galaxy. At a minimum, the settings file needs to contain the connection URL to the MongoDB database. 42 | 43 | In your application directory, create a file named settings.json. Put the Mongo URI in the file, using this format: 44 | 45 | ``` 46 | { 47 | "galaxy.meteor.com": { 48 | "env": { 49 | "MONGO_URL": "mongodb://:@:/" 50 | } 51 | } 52 | } 53 | ``` 54 | 55 | > You can contact support to obscure your settings.json file. Once this is done, all app settings will be hidden across your account. A user with access to any of your app's dashboards will not be able to view the information in your settings.json file from within the associated dashboard after this feature is enabled. 56 | 57 |

Environment variables

58 | 59 | Environment variables in Galaxy are managed using your app's `settings.json` file. Galaxy interprets key/value pairs found in the `{"galaxy.meteor.com": {"env": { ... }}` section of your settings as environment variables. 60 | 61 | Note that your entire `settings.json` file has a size limit of approximately 32KB. If your settings file is larger than this, your containers will not run successfully. Unfortunately, there will be no clear error message in this case pointing at the root cause of the problem. 62 | 63 |

Common environment variables

64 | 65 | The following environment variable are commonly set for Galaxy apps: 66 | 67 | - `MONGO_URL`: If you have any Meteor packages that requires a Mongo database, then this environment variable must be set. See your database provider instructions to determine the correct format and content for the URL. An example format would be `"MONGO_URL": "mongodb://:@:/"` 68 | - `MONGO_OPLOG_URL`: This is an optional environment variable if you are using MongoDB for your application. This is a performance optimization that we recommend for production applications. Read more in our [detailed documentation](https://github.com/meteor/docs/blob/master/long-form/oplog-observe-driver.md#oplogobservedriver-in-production). An example format would be `"MONGO_OPLOG_URL": "mongodb://:@:/?authSource=admin"` 69 | - `ROOT_URL`: This is an optional environment variable. If you have any Meteor packages that need to generate a URL, then those packages will use `ROOT_URL` to identify the URL where the app is hosted. The default value for this is the primary hostname that your app is deployed to. This variable hooks up to the `Meteor.absoluteUrl()` API. 70 | - `MAIL_URL`: This is required if you have the `email` package in your application. In order to send email from the application, the `MAIL_URL` environment variable needs to be set. An example format would be `"MAIL_URL": "smtp://postmaster%40your.mailserver.address.com:password@mailserver.smtp.address.com:587"` 71 | - `GALAXY_NODE_OPTIONS`: This is for any Node settings that can be controlled at the command line. 72 | - `USER_LOG_DESTINATION`: This allows you to configure [custom log storage](./logs.html#custom-storage). 73 | 74 | If you're using MongoDB, you'll have to configure a database and a user account with rights to access that database with your database provider. 75 | 76 |

Learn more

77 | 78 | - Learn how to [configure your MongoDB](/mongodb.html) provider for Galaxy. 79 | - Deployment-specific configuration using [Meteor.settings](http://docs.meteor.com/#/full/meteor_settings). 80 | -------------------------------------------------------------------------------- /source/deploy-to-galaxy.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deploy to Galaxy 3 | order: 19 4 | description: Learn how to deploy on Galaxy by setting up Push to Deploy. The easiest and fastest way of deploying your Meteor app. 5 | --- 6 | 7 | Galaxy makes it simple to deploy, scale, and monitor your apps. This guide will walk new users through deploying new and existing Meteor apps. 8 | 9 |

Sign up for Meteor Cloud

10 | 11 | You need a Meteor Cloud account in order to deploy your apps. If you don't have one yet, you can [sign up here](https://cloud.meteor.com/?isSignUp=true). 12 | 13 |

Deploy a new app

14 | 15 | Start by going to your [Meteor Cloud account](https://cloud.meteor.com/). Then go to _Apps_ > _Deploy new app_. Once there, you'll see this configuration page: 16 | 17 | 18 | 19 | Go ahead and click on the GitHub/Bitbucket button. An authentication popup, from GitHub/Bitbucket, will show up. On this popup, you can choose the individual account or organization that you want to give us access to. You don't need to give access to all your repositories if you don't want to. Later you can go on GitHub/Bitbucket and change your permissions to authorize more repositories. 20 | 21 | > If you don't use GitHub/Bitbucket, please let us know your favorite Git provider in the link below the git provider options button. 22 | 23 | After connecting to your git provider you'll automatically go to the second step. In the second step you need to chose your account from the git provider and then choose the repository where is the Meteor app that you want to deploy. 24 | 25 | 26 | 27 | Now just click on _Next Step_ and you'll get on the third and last step. 28 | 29 | 30 | 31 | In this step you just need to configure the last details, so you can have your app deployed. Starting by the _Account_ which defines to which Meteor Cloud account your app will be deployed to. 32 | 33 | Then you get to select which _Plan_ you want to use. You can check everything about the plans on our [pricing page](https://www.meteor.com/cloud#pricing-section). 34 | 35 | > We do not recommend deploying production applications to the Free plan as it provides only a limited container which is turned off when your app is not being used. 36 | 37 | The **Container Size** needs to be selected as well, for paid apps we recommend that you start from the Compact. You can change this at any time, just go to your app page on Galaxy and select a different size. 38 | 39 | You also need to select a _Region_. This is really important and your database should be in the same region to avoid latency and slowness in your app. 40 | 41 | Now is the time to choose your **hostname**, the domain of your app. If you are using the free plan you need to use `meteorapp.com` as the main domain, and you can choose only the subdomain. If you are using a paid plan you can use any domain you like. In this case, you also need to set up your DNS, learn how [here](https://cloud-guide.meteor.com/dns.html). 42 | 43 | In the **Deploy Options** section, you can choose which branch you'll use as your deploy branch. Every commit done on this branch will trigger a new deployment. 44 | In this section, you can also choose to use our shared [MongoDB Cluster](https://docs.meteor.com/commandline.html#meteordeploy). Make sure you are not using this shared database for production apps. 45 | 46 | There is another section for **Advanced Options**, where you can configure these options: 47 | 48 | - **Build Container RAM**: It defines how much memory you want to use to deploy your app. 49 | - **Meteor Settings**: Your initial app settings (in a JSON format) when deploying an app. 50 | - **Root Directory**: Directory on your repository where the root of your Meteor app is. 51 | - **Pre Deploy Command**: This is the command that you run to install the apps dependencies, usually being `meteor npm install --production`. 52 | - **Deploy Arguments**: Some argument that you can provide to your [deploy command line](https://docs.meteor.com/commandline.html#meteordeploy). 53 | - **Environment Variables**: You can, for example, specify the region where your app will be deployed to. 54 | 55 | 56 | 57 | With all configured you just need to hit _Deploy App_ and the first version of your app will be deployed! 58 | 59 | > You need to have a GitHub/Bitbucket repository with a Meteor project on it. The following Meteor versions are supported: `1.12.2`, `2.0.1`, ` 2.1.2`, `2.2.4`, `2.3.7`, and any version from `2.4.1` to the latest. Otherwise you are going to see an error in the logs of your app on Galaxy. 60 | 61 |

Deploy an existing app

62 | 63 | On the app details page you can click on the button _Set up push to deploy_. 64 | 65 | 66 | 67 | The first two steps on this case are the same as deploying a new app. You will just have to connect your Git Provider, and then choose the repository. 68 | For the last step, all you need to do is to make sure that everything is correct on the **Deploy Options** section. As the app is already deployed, all the other fields are already defined. 69 | 70 | 71 | 72 | After configuring everything, in case you need to edit it, you can click the _Set up push to deploy_ button on the app details page. 73 | 74 | 75 | 76 |

Override Meteor Settings

77 | 78 | > Previously called as `Next auto deploy settings`. 79 | 80 | After configuring Push to Deploy to an app, you can find in Galaxy, on the settings tab, the title `Override Meteor Settings`. When you toggle the `Override Settings` and fill the field below, on the next deploy, its content will be used instead of the `settings.json` file. After this deployment, if you change the settings.json file from the app and deploy it again, the JSON file from the app will still be ignored, and Galaxy will continue using the value from the field. To read the settings from the JSON file, you must untoggle the `Override Settings`. 81 | 82 | 83 | 84 |

Cost

85 | 86 | The cost for deployments varies depending on which plan you are using on Galaxy. 87 | 88 | - **Free plan**: there is no cost for deploys, but it is limited to 10 deploys per month. 89 | - **Essentials plan**: the cost is the amount of **time deploying** x **amount of GBs** of memory x **$0.08**. 90 | - **Professional plan**: the cost is the amount of **time deploying** x **amount of GBs** of memory x **$0.11**. 91 | 92 | So, for example, if you spend 15 minutes on deployments using 3GBs of memory for an app in the Essential plan. 93 | The cost added to your invoice would be: **0.25h** x **3GBs** x **$0.08** = **$0.06**. 94 | 95 | > If you want to use your own machines to build and deploy your apps, you can use the [command-line](/deploy-command-line.html). 96 | 97 |

FAQ

98 | 99 | 1 - **How to trigger new deploys?** 100 | 101 | After you finish setting up everything, every commit you do to the chosen branch will trigger a new deploy. Also, every time you save the configuration a new deploy will be triggered. 102 | 103 | 2 - **Can I use the repository and branch to different apps?** 104 | 105 | Yes, you can. So be careful when setting up your apps, so you don't deploy the wrong code to an app. 106 | 107 | 3 - **What happens if a new commit is pushed before the previous deploy is completed?** 108 | 109 | The previous deploy will be canceled and the new one will start. 110 | 111 | 4 - **How I cancel a deploy that is in progress?** 112 | 113 | You can't. At least for now the only way a deploy is cancelled is if a new commit arrives, or if the deploy fails. 114 | 115 | 5 - **What docker error 137 means?** 116 | 117 | This error means there was an Out Of Memory error. To solve this you should increase the amount of memory you use to deploy your app. You can do this on the third step of the Push to Deploy screen, on the section _Deploy options_ > _Build Container RAM_. 118 | 119 |

Learn More

120 | 121 | - Learn how to [deploy applications with the command-line](/deploy-command-line.html). 122 | - Learn how to [configure applications](/deploy-setup.html) on Galaxy. 123 | - Learn in what [environment Galaxy runs your app](/container-environment.html). 124 | -------------------------------------------------------------------------------- /source/deploy-troubleshooting.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Troubleshooting 3 | order: 37 4 | description: Learn how to troubleshoot your deploy and get answers to frequently asked questions 5 | --- 6 | 7 |

General Advice

8 | 9 | Check these items if you're having trouble with uptime, performance or deployment. 10 | * Your Meteor version. More current versions may resolve issues found in older Meteor versions. While the reverse is rare and generally shouldn't happen, if you're recently upgraded Meteor versions and start having difficulties, consider reverting to your last Meteor version. 11 | * Your container's memory and CPU usage. If your app is running [out of memory](/memory-issues.html), you may need to switch to a larger container, use more containers, or refactor your app to use less memory. In the short term, the only guaranteed solution is to scale up and use enough Galaxy resources to exceed your app's memory needs. 12 | * Your app's [logs](/logs.html). While 'All' shows all output, consider breaking it down by tab. If your app is running and struggling before failing, check the 'App' tab. If your app fails when Galaxy tries to build it into a container image, check the 'Service' tab. Note that both can happen simultaneously: the earlier version of your app may be throwing errors, while the recent version created to fix the problem may have a code issue preventing deployment. If you find a specific error, check our [error types](/error-types.html) article for more information. 13 | * Consider using [meteor logout](/commands.html) and [meteor login](/commands.html), if your username should be able to deploy but cannot. If you're using a [deployment token](/deploy-command-line.html#deployment-token), considering reissuing yours, in case it has expired. 14 | * Check status.meteor.com in case Galaxy issues are affecting your deployment. 15 | * Check GitHub to see if any related Meteor issue lists workarounds or solutions. 16 | * Check the forums for related issues and solutions. 17 | * Consider running more than 1 container, or 3 containers to qualify for [high-availability](/high-availability.html) status. If you run only one container, that makes the machine your container is running on a single point of failure. In the event of a hardware failure, your app will be down until Galaxy starts it on a new machine. 18 | * Contact [support](/support.html#galaxy-support). To minimize the back-and-forth, please send in the name of the affected app, the conditions that trigger the issue (confirmed or suspected), steps to reproduce, and relevant logs. Try to resolve errors listed in the logs before writing in. If your app's container is running with the error, please try to leave it in the running state for our team to examine. 19 | 20 | Note that code-level review lies outside the [scope](/support.html#scope) of Galaxy's support. If this is important to you, consider [Meteor Development Support](/support.html). 21 | 22 |

502 errors

23 | 24 | You may see a 502 error with the message `Registered endpoints failed to handle the request` when you try to visit your URL. This means that the request failed, despite the fact that our system thought there was a healthy container at the beginning of the request. See our [error types](/error-types.html) article for more information. 25 | 26 |

503 errors

27 | 28 | Your app may throw a 503 error and show `Service Unavailable: No healthy endpoints to handle the request` when you try to visit your URL. This means no healthy containers are currently available to serve your app. See our [error types](/error-types.html) article for more information. 29 | 30 |

Deployment failures

31 | 32 | A deployment failure means that you or your system cannot build a container to deploy your app. 33 | 34 | If you should be able to deploy but cannot, try using the [commands](/commands.html) `meteor logout` and `meteor login`. 35 | 36 | If our system tried to build a container to deploy your app but failed, the failure will be noted in your logs. 37 | 38 | Check the [Logs](/logs.html) tab to see if your app is crashing. The 'Service' tab may show you important build errors, in addition to the stopping and starting of containers. 39 | 40 | Most of the time, the key to a solution will be found in the exception or error messages. Keep iterating on code fixes and deployments until the error goes away, a new error appears, or your app deploys successfully. 41 | 42 |

If none of the above worked

43 | 44 | Consider if [Monti APM](/apm-getting-started.html) might help you to identify your issue. 45 | 46 | Try adding more exception handlers, as an uncaught exception may be causing your app to crash. 47 | 48 | Confirm you're able to run your app locally. If possible, try to duplicate the issues in your app. This may involve running your app locally for longer than usual and simulating traffic, to recreate real-world conditions. 49 | 50 | A recommended method for emulating Galaxy is to run locally with --production. The way node_modules are pulled in is different on a remote deployment to a server (including Galaxy) than when building locally. The --production setting will minimize and concatenate all the JS into one file. 51 | 52 | Finally, try printing more information to your [logs](/logs.html). If you can't spot any error messages or warnings in your app's current form, printing more information may help you to troubleshoot. Any minor changes to your code to enable can always be disabled once you've diagnosed the issue. You can find specific error types in our [error types](/error-types.html) article. 53 | 54 | If you believe your issue is related to Meteor, you can [file a bug](https://github.com/meteor/meteor/blob/devel/Contributing.md#reporting-a-bug-in-meteor) or add a comment to an existing bug to pursue resolution. 55 | 56 | Search [Stack Overflow](https://stackoverflow.com/questions/tagged/meteor) for a solution, if applicable. 57 | -------------------------------------------------------------------------------- /source/dpa.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Data Processing Agreement 3 | order: 75 4 | --- 5 | 6 |

Data Processing Agreement

7 | 8 | By checking our [DPA](https://meteor.com/legal/data-processing-agreement), you agree to it. 9 | 10 | Contact support (support@meteor.com) if you have further questions or if you need the SCC (DC to DP) attachment. 11 | -------------------------------------------------------------------------------- /source/encryption.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Encryption 3 | order: 22 4 | description: Learn how to enable SSL encryption to secure sensitive data 5 | --- 6 | 7 | SSL encryption is a security protocol to encrypted connections between servers and clients. We highly recommend that you enable SSL encryption to secure your app's sensitive data and to avoid issues with websockets connecting from behind certain firewalls. Galaxy provides two ways to enable encryption: generating a Let's Encrypt certificate or uploading your own custom certificate. Additionally, a "Force HTTPS" option can be enabled on each domain to ensure connections over HTTP are redirected to HTTPS. 8 | 9 |

Before you begin

10 | 11 | Encryption is automatically enabled for all apps deployed to the .meteorapp.com subdomain. To enable encryption for custom domains, you must first [add a custom domain](/custom-domains.html) on your app settings page and [configure your DNS](/dns.html) to point at Galaxy's DNS. Once added, click on your custom domain to see SSL encryption options. 12 | 13 |

Let's Encrypt

14 | 15 | To enable encryption painlessly, we recommend generating a free [Let's Encrypt](https://letsencrypt.org/) certificate via Galaxy. In just one click Galaxy generates an SSL certificate and configures it for your custom domain. 16 | 17 | In order for Galaxy to generate a certificate for your site, we need to be able to convince the LetsEncrypt certificate authority that we are the legitimate host for that site. We do that by serving up special data in response to special URLs under your domain. This works great if you configure your domain's DNS to point directly to Galaxy via a CNAME but can get more complex if you put another proxy layer like Cloudflare in front. 18 | 19 | Specifically, we expect to be able to fetch the URL `http://example.com/.well-known/acme-challenge/_g_selfcheck_` and get a 200 with a certain random-looking body. You can see this working by looking at `http://www.meteor.com/.well-known/acme-challenge/_g_selfcheck_`. Galaxy serves this special URL automatically for you, so you need to ensure that any proxy layer you put in front of Galaxy passes requests starting with `/.well-known/acme-challenge` through to Galaxy. 20 | We do follow redirects. You can test that your site will pass the test by running `curl -i -L http://example.com/.well-known/acme-challenge/_g_selfcheck_` (substituting the name of your domain for `example.com`). 21 | 22 | 23 | 24 | Galaxy does not support auto-renewing Let's Encrypt certificates for wildcard (\*.) domains, because the mechanism for obtaining those certificates would require you to delegate DNS management for your domain to Galaxy. 25 | 26 |

Custom certificate

27 | 28 | You can also upload a custom key and certificate. Private keys and certificates should be in the PEM format (this is the same format used by nginx). If intermediate certificates are used in addition to the primary certificate, they should be placed in the same file as the primary certificate. The primary certificate should come first, followed by the intermediate certificates. 29 | -------------------------------------------------------------------------------- /source/environment-variables.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Setting environment variables 3 | description: Learn how to adjust Galaxy environment variables 4 | --- 5 | 6 | The content of this page was moved to this new [section page](/deploy-setup.html#env-variables). 7 | -------------------------------------------------------------------------------- /source/error-types.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Error Types 3 | order: 38 4 | description: Learn how to deal with common error types 5 | --- 6 | 7 |

502 errors

8 | 9 | You may see a 502 error with the message `Registered endpoints failed to handle the request` when you try to visit your URL. This means that the request failed, despite the fact that our system thought there was a healthy container at the beginning of the request. 10 | 11 | This often happens because your backend wasn't able to respond, when communicating with our proxy servers. You may need to profile your app to determine the cause of this error. Check the [Logs](/logs.html) tab to potentially find out more information about the issue. 12 | 13 |

503 errors

14 | 15 | Your app may throw a 503 error and show `Service Unavailable: No healthy endpoints to handle the request` when you try to visit your URL. This means no healthy containers are currently available to serve your app. 16 | 17 | Potential reasons for this include: 18 | - all containers are unhealthy, because they are all stuck in a CPU loop 19 | - no containers are running, because they are stopped or because every container crashed (especially if the total number of your containers is 1, and your app hasn't had time to restart) 20 | - your build failed, if this is the first time you're deploying a container for that app or if the only other available containers built successfully but are unhealthy 21 | 22 | The most common cause of the 503 error is a problem in your code that prevents deployment - a [deployment failure](#deployment-failure). Check the [Logs](/logs.html) tab to potentially find out more information about the issue. 23 | 24 | A common reason that your app may be crashing on startup is that your `MONGO_URL` variable is missing or is set incorrectly. You can verify what `MONGO_URL` Galaxy is using by going to the app's dashboard and choosing the settings tab. To learn how to set it correctly, check the following resources: 25 | 26 | * [Environment variables](/deploy-setup.html#env-variables) will show you how to set up your `settings.json` file. 27 | * [This compose.io article](https://www.compose.io/articles/meteors-new-galaxy-and-the-perfectly-composed-companion/) explains the settings for `MONGO_URL` and `MONGO_OPLOG_URL` in detail. 28 | 29 | If you believe your `MONGO_URL` is set correctly, try the following: 30 | 31 | * Check the app dashboard and verify the app status is green (healthy). 32 | * Run `dig +show [your app's domain]` in the terminal and verify that its CNAME points to Galaxy. You can learn how to set up DNS [here](/dns.html). 33 | * If you are in the US region, your CNAME should point to `us-east-1.galaxy-ingress.meteor.com` 34 | * If you are in the EU region, your CNAME should point to `eu-west-1.galaxy-ingress.meteor.com` 35 | * If you are in the Asia-Pacific region, your CNAME should point to `ap-southeast-2.galaxy-ingress.meteor.com` 36 | 37 | If you recently changed your DNS settings, you may need to wait for the new records to propagate. DNS changes often propagate within 30 minutes (depending on the TTL configured for the record set), but in some cases it can take up to 24 hours. Contact your DNS provider if you think there is a problem. 38 | 39 |

Module missing or npm error

40 | 41 | This usually indicates that the module or package working locally in your application is not working after deployment. While we don't offer support for the use of specific third-party packages, an explanation may help you to troubleshoot. 42 | 43 | When you deploy an app, we bundle node_modules into it; npm packages that are required on the client side get built into the bundle uploaded to Galaxy. Galaxy doesn't need to run `npm install` for client side bundling to work. 44 | 45 | Note that dynamic requires may cause issues. An example would be using `require(variable)` instead of `require("fixed-name")`. To avoid this, put `require("react/package.json")` somewhere in your app's code to ensure it gets bundled. 46 | 47 | You may find the `meteor npm install --save package` command to be helpful, where `package` should be replaced with the name of the package you are trying to install. This will add the package to your package.json file, using the latest version and any needed dependencies. 48 | 49 | Alternatively, you can specify the package name directly in your package.json file, with the version number and any necessary dependencies. 50 | 51 | A common type of npm error will show up during the build process, in the 'All' or 'Service' tab of your logs. If you were deploying an example package using version number 1.0.0, it would show up as follows: 52 | 53 | `Failed at the example@1.0.0 install script 'prebuild --install'` 54 | 55 | This means that this package failed to install, using that version. A long term solution may involve either communicating with the package maintainer, or the Meteor release manager, to massage the issue. In the short term, the best immediate solution usually involves changing the version - either of the package version, or of the Meteor version, if builds suddenly start failing upon upgrading to a new Meteor version. 56 | 57 | If you happen to be using an older version of Meteor, consider updating to a more recent version, as that has been known to resolve issues in the past. 58 | 59 | If you've been using `npm`, consider using `meteor npm` instead, as you may run into conflicts in the former case. 60 | 61 | If neither of these solutions work, try removing the package entirely, and making any necessary adjustments to your app to accommodate this change. 62 | 63 | A recommended method for emulating Galaxy is to run locally with `--production`. The way node_modules are pulled in is different on a remote deployment to a server (including Galaxy) than when building locally. The `--production` setting will minimize and concatenate all the JS into one file. 64 | 65 |

Package not compatible

66 | 67 | Apps that contain local packages with NPM dependencies which include binary components will fail to deploy to Galaxy by default. You'll know you've run into this issue when a `meteor deploy` to Galaxy fails with `[package] is not compatible with architecture 'os.linux.x86\_64` (where [package] is replaced by the package name that is causing the issue). 68 | 69 | Version 1.2.1 of Meteor (and higher) provides the `METEOR_BINARY_DEP_WORKAROUND` environment variable for Galaxy deployment. To deploy your app to Galaxy using the workaround: 70 | 71 | 1. Upgrade your app to Meteor version 1.2.1 or higher with `meteor update` 72 | 2. Next, deploy to galaxy by setting the `METEOR_BINARY_DEP_WORKAROUND=t` environment variable. An example deploy command would look like `METEOR_BINARY_DEP_WORKAROUND=t DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy ...` , replacing `...` with the rest of your deployment command (URL, settings, etc.). 73 | 74 | If you are uncertain if this matches your situation, you can use [this test app](https://github.com/zol/meteor-bignum-test) to reproduce the error and confirm a fix. 75 | 76 | -------------------------------------------------------------------------------- /source/file-storage.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: File storage 3 | order: 44 4 | description: File storage for application containers 5 | --- 6 | Galaxy provides temporary file storage for application containers to use. Galaxy does not provide persistent file storage for application containers to use. 7 | 8 | If you need persistent file storage for your application, you should use a robust cloud storage solution like Amazon S3. 9 | 10 | With each container, you should be able to use up to 512 MB of disk space for temporary local file storage. 11 | 12 | Application containers are given read/write access to the `/tmp` directory and `/tmp` sub-directories. Application containers do not have read/write access to the `/root` directory or to the `$HOME` directory. 13 | 14 | In your application, when deploying to Galaxy, ensure that no package or application code tries to write to the `/root` directory on the local filesystem. 15 | 16 | -------------------------------------------------------------------------------- /source/galaxy-database-mongodb-connect.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MongoDB - Connect Database with MongoDB Compass 3 | order: 17 4 | description: Step-by-step guide to connect to a MongoDB database instance using MongoDB Compass, provided by Galaxy Databases. 5 | --- 6 | 7 |

Objective

8 | 9 | This guide provides detailed instructions on how to connect to a MongoDB database instance using MongoDB Compass, a popular Open Source (SSPL) management tool for MongoDB. 10 | 11 |

Requirements

12 | 13 | - Access to the Galaxy Control Panel. 14 | - Request a MongoDB database from the Galaxy team. 15 | - MongoDB Compass installed (stable version) and an internet connection. 16 | 17 |

Instructions

18 | 19 | #### Installation 20 | 21 | 1. **To install MongoDB Compass:** 22 | Follow the [official documentation](https://docs.mongodb.com/compass/current/install/). 23 | 24 | #### Connect with MongoDB Compass 25 | 26 | 1. **Open MongoDB Compass:** 27 | Launch MongoDB Compass on your computer. 28 | 29 | 2. **Enter Connection Details:** 30 | - In the connection field, enter the Service URI provided by the Galaxy team. 31 | 32 | 3. **Establish Connection:** 33 | - Click "Connect" to establish a connection to the MongoDB instance. 34 | 35 |

Detailed Steps

36 | 37 | 1. **Access the Control Panel:** 38 | Ensure you have access to the Galaxy Control Panel to obtain the credentials and the database service URI. 39 | 40 | 2. **Request the Database:** 41 | Contact the Galaxy team and request the creation of a MongoDB database. 42 | 43 | 3. **Install MongoDB Compass:** 44 | If MongoDB Compass is not installed, visit the [official website](https://www.mongodb.com/try/download/compass) and follow the installation instructions for your operating system. 45 | 46 | 4. **Obtain the Service URI:** 47 | - In the Galaxy Control Panel, navigate to “Galaxy Database” and locate the service URI for your MongoDB database. 48 | 49 | 5. **Connect in MongoDB Compass:** 50 | - Open MongoDB Compass. 51 | - Copy the provided service URI and paste it into the connection field in MongoDB Compass. 52 | 53 | 54 | 55 | - Click the "Connect" button to establish a connection to the database. 56 | 57 | 58 | 59 |

Security Considerations

60 | 61 | - Ensure secure handling of MongoDB credentials and URIs. 62 | - Use strong, unique passwords for database access. 63 | - Regularly review access permissions and audit logs for security purposes. 64 | 65 | By following these steps, you will be able to efficiently connect to and manage your MongoDB database instance using MongoDB Compass, facilitated by Galaxy Databases. -------------------------------------------------------------------------------- /source/galaxy-database-mongodb-general.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MongoDB - General 3 | order: 14 4 | description: Information about supported regions, MongoDB versions, types, hardware resources, storage management, disk type, backup policies, logs and metrics, and users for Galaxy Databases. 5 | --- 6 | 7 |

Supported regions

8 | 9 | The Galaxy Databases offer is available in the following regions: 10 | 11 | - VIR (Virginia, USA) 12 | - FRA (Frankfurt, Germany) 13 | - SYD (Sydney, Australia) 14 | 15 |

MongoDB versions

16 | 17 | The Galaxy Databases offer supports the following MongoDB versions: 18 | 19 | - MongoDB 4.0.19 20 | - MongoDB 4.2.23 21 | - MongoDB 4.4.17 22 | - MongoDB 5.0.14 23 | - MongoDB 6.0.5 24 | - MongoDB 7.0.4 25 | 26 |

Types

27 | 28 | - **Standalone**: A single instance of MongoDB that operates independently. 29 | - **ReplicaSet**: A set of MongoDB instances that offers high availability and data replication. 30 | 31 | > Standalone does not support Oplog 32 | 33 |

Hardware resources

34 | 35 | Here are the plan types you can choose from: 36 | 37 | | Type | Plan | RAM | gCPU | Storage | 38 | |------------|---------|--------|-------|---------| 39 | | Standalone | Basic | 512 MB | 0.5 | 5 GB | 40 | | | Starter | 1 GB | 1 | 10 GB | 41 | | | Standard| 2 GB | 2 | 20 GB | 42 | | | Pro | 4 GB | 4 | 40 GB | 43 | | | Plus | 8 GB | 6 | 80 GB | 44 | | | Ultra | 16 GB | 8 | 160 GB | 45 | | | Custom | 32 GB | 16 | 240 GB | 46 | | Replicaset | Basic | 512 MB | 0.5 | 5 GB | 47 | | | Starter | 1 GB | 1 | 10 GB | 48 | | | Standard| 2 GB | 2 | 20 GB | 49 | | | Pro | 4 GB | 4 | 40 GB | 50 | | | Plus | 8 GB | 6 | 80 GB | 51 | | | Ultra | 16 GB | 8 | 160 GB | 52 | | | Custom | 32 GB | 16 | 240 GB | 53 | 54 |

Storage Management

55 | 56 | The disk size indicated above represents the total disk capacity of the underlying machine. However, a portion of this capacity is allocated for the operating system installation. 57 | 58 | We make concerted efforts to prevent "disk full" scenarios that could jeopardize the health of the cluster. Therefore, the customer will: 59 | 60 | - Receive an initial email alert when the cluster's storage capacity reaches 80%. 61 | - Receive a subsequent email alert when the cluster's storage capacity reaches 90%. 62 | - Experience their database instance being transitioned into "read-only" mode once the storage capacity reaches its limit. In this mode, no further write operations can be performed. 63 | 64 |

Disk type

65 | 66 | Here in Galaxy Databases, we use SSD NVMe drives, which are high-performance solid-state drives optimized for rapid data access. They offer low latency and high transfer speeds, making them ideal for applications requiring superior performance. 67 | 68 |

Backup Policies

69 | 70 | - For **General plan** clusters, automatic daily backups are conducted, with a retention period of 4 days. 71 | - For **Advanced plan** clusters, automatic daily backups are executed, with a retention period of 14 days. 72 | - For **Enterprise plan** clusters, automatic daily backups are performed, with a retention period of 30 days. Here there is the possibility of making a personalized backup and saving it in several different locations. 73 | 74 | Contact our team to learn more about Advanced and Enterprise backup plans. 75 | 76 | > Backups are performed daily at 5:00 AM (UTC). To adjust the backup time, please contact support. 77 | 78 |

Logs and Metrics

79 | 80 | Logs and metrics can be accessed through the Galaxy Database. Soon, you will be able to connect your observability tools to capture metrics and logs. 81 | 82 | - **Log Retention**: Up to 10,000 lines of logs are retained. 83 | - **Metrics Retention**: Metrics are retained for one calendar month. 84 | 85 | Please note that if the database instance is deleted, both logs and metrics are automatically removed. 86 | 87 |

Users

88 | 89 | To effectively manage your MongoDB cluster, the Galaxy Database team sets up several MongoDB users within your clusters: 90 | 91 | - **admin@admin**: This is your initial user with administrative privileges. 92 | - **galaxyadmin@admin**: This is a technical user required for automation purposes. 93 | - **galaxybackup@admin**: This user is designated for performing backups. 94 | - **galaxymonitor@admin**: This user is also used for monitoring. -------------------------------------------------------------------------------- /source/galaxy-database-mongodb-migration.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MongoDB - Simplify migration to Galaxy Database 3 | order: 16 4 | description: Step-by-step guide for using a Docker image to migrate MongoDB databases to Galaxy Databases, including creating a new user post-migration for improved security and access control. 5 | --- 6 | 7 |

Usage

8 | 9 | #### Prerequisites 10 | 11 | Before using this Docker image, make sure you have the following: 12 | 13 | - Docker installed on your machine. 14 | - Source and target MongoDB URIs ready and tested. 15 | - IP whitelist configured on MongoDB Atlas if applicable. 16 | 17 | #### Step-by-Step Guide 18 | 19 | #### Get the MongoDB URIs 20 | 21 | 1. Obtain the source MongoDB URI in the format: `mongodb+srv://:@` 22 | 2. Get the MongoDB target URI from the Galaxy Database team in the format: `mongodb://:@:` 23 | 24 | 25 | 26 | #### Run the Docker Container 27 | 28 | Use the following command to run the migration container: 29 | 30 | ```bash 31 | docker run --rm \ 32 | -e SOURCE_URI="" \ 33 | -e TARGET_URI="" \ 34 | -e DB_NAME="example_db_name" \ 35 | meteor/galaxy-mongodb-migrate:202405222003 36 | ``` 37 | 38 | Replace `SOURCE_URI`, `TARGET_URI`, and `DB_NAME` with your actual values. 39 | 40 | #### Example 41 | 42 | ```bash 43 | docker run --rm \ 44 | -e SOURCE_URI="mongodb+srv://username:password@source-cluster.mongodb.net" \ 45 | -e TARGET_URI="mongodb://username:password@destination-host-01.mongodb.net:27017,destination-host-02.mongodb.net:27017,destination-host-03.mongodb.net:27017/admin?replicaSet=replicaSetName" \ 46 | -e DB_NAME="example_db_name" \ 47 | meteor/galaxy-mongodb-migrate:202405222003 48 | ``` 49 | 50 |

Creating User for the Database

51 | 52 | We recommend creating a new user specifically for the database after migration to enhance security and access control. 53 | 54 | #### Recommended Steps 55 | 56 | 1. **Database Migration:** 57 | Execute the database migration ensuring all data is successfully transferred to the new environment. 58 | 59 | 2. **Connect to the Destination Database:** 60 | Use our compass guide on connecting to MongoDB. 61 | 62 | 3. **Select the Database:** 63 | Select the migrated database (e.g., `use example_db_name`). 64 | 65 | 4. **Create the New User:** 66 | Create a new user specific to this database. For example: 67 | 68 | ```javascript 69 | db.createUser({ 70 | user: "newuser", 71 | pwd: "", 72 | roles: ["readWrite"] 73 | }) 74 | ``` 75 | 76 | Replace `` with the password for the new user. 77 | 78 | 5. **Verify the New User:** 79 | Ensure the new user has been successfully created: 80 | 81 | ```javascript 82 | db.getUsers() 83 | ``` 84 | 85 | #### Now you can use a URI like this in your Meteor app: 86 | `mongodb://newuser:pass@destination-host-01.mongodb.net:27017,destination-host-02.mongodb.net:27017,destination-host-03.mongodb.net:27017/example_db_name?replicaSet=NameOfYourReplicaSet&readPreference=secondary` 87 | 88 |

Security Considerations

89 | 90 | - Use secure passwords for your users. 91 | - Assign only necessary permissions. 92 | - Regularly review user privileges. 93 | 94 |

Troubleshooting

95 | 96 | - Check connection details and permissions. 97 | - Review logs for errors. 98 | 99 |

Users

100 | 101 | To effectively manage your MongoDB cluster, the Galaxy Database team sets up several MongoDB users within your clusters: 102 | 103 | - **admin@admin:** Initial user with administrative privileges. 104 | - **galaxyadmin@admin:** Technical user required for automation. 105 | - **galaxybackup@admin:** User designated for performing backups. 106 | - **galaxymonitor@admin:** User used for monitoring. 107 | 108 | **Please do not delete these users.** 109 | 110 | 111 |

Creating a MongoDB user for Oplog

112 | 113 | To set up an oplog user, configure a MongoDB replica set: 114 | 115 | 1. Connect to your database using our compass guide. 116 | 2. Open your console and run: 117 | 118 | ```javascript 119 | db.createUser({ 120 | user: "oplogger", 121 | pwd: "PasswordForOplogger", 122 | roles: [{ role: "read", db: "local" }] 123 | }) 124 | ``` 125 | 126 | The oplog user must be created in the admin database with read permissions to the local database. 127 | 128 | 3. Your new MongoDB connection string will be: 129 | 130 | ``` 131 | mongodb://oplogger:PasswordForOplogger@mongo-1.example.com,mongo-2.example.com,mongo-3.example.com/local?authSource=admin&replicaSet=replicaSetName 132 | ``` 133 | 134 | Ensure `authSource=admin` is included at the end. 135 | 136 | --- 137 | 138 | 139 |

Support

140 | 141 | For migrations without downtime, contact our team at [sales@meteor.com](mailto:sales@meteor.com). 142 | 143 | This documentation provides a comprehensive guide for using Docker to migrate MongoDB databases to Galaxy Databases, along with best practices for creating and managing users post-migration. -------------------------------------------------------------------------------- /source/galaxy-database-mongodb-oplog.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MongoDB - Oplog user Setup 3 | order: 18 4 | description: Guide to setting up oplog tailing for MongoDB databases in Galaxy Database, enabling real-time data synchronization and integration with third-party tools. 5 | --- 6 | 7 | ## Overview 8 | 9 | Connect your MongoDB deployments to third-party tools by setting up oplog tailing to read events from the MongoDB oplog. The oplog (operations log) is a special capped collection that keeps a rolling record of all operations modifying the database data. Oplog tailing is particularly beneficial for Meteor apps, ensuring real-time data synchronization. 10 | 11 | 12 | ## Oplog Functionality 13 | 14 | Oplog functionality in Galaxy Database is available exclusively for replicaset implementations. This feature allows operations to be replicated and integrated with third-party tools, providing real-time notifications for database changes. 15 | 16 | ## Creating a MongoDB User for Oplog Tailing 17 | 18 | Once your MongoDB cluster is set up, create a new user for oplog tailing: 19 | 20 | 1. Log in to the Galaxy Database Console. 21 | 2. Navigate to your cluster and connect using the admin user. 22 | 3. Execute the following command to create the oplog user: 23 | ```bash 24 | use admin; 25 | db.createUser({user: "oploguser", pwd: "PasswordForOplog", roles: [{role: "read", db: "local"}]}); 26 | ``` 27 | 28 | ## Connecting to the MongoDB Oplog 29 | 30 | To connect to the oplog, ensure your connection string's authSource is set to the admin database where the oplog user is created, pointing to the local database where the oplog resides. 31 | 32 | #### Oplog User Credentials 33 | 34 | - **Username:** oploguser 35 | - **Password:** PasswordForOplog 36 | 37 | #### Connection String Example 38 | 39 | ```plaintext 40 | mongodb://oploguser:PasswordForOplog@galaxyhostingdb.meteor.com/local?authSource=admin&replicaSet=replicaSetName 41 | ``` 42 | 43 | Find your MongoDB Connection String under the Overview tab of your MongoDB cluster details page in the Galaxy Database console. 44 | 45 | This documentation provides guidance on setting up oplog tailing for MongoDB databases using Galaxy Database. -------------------------------------------------------------------------------- /source/galaxy-database-mongodb-overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MongoDB - Database Management Overview 3 | order: 15 4 | description: Overview of managing a MongoDB database instance in Galaxy Databases, including details on database type, plan information, access credentials, and usage instructions. 5 | --- 6 | 7 | ## Overview 8 | 9 | After creating a MongoDB database, users will have access to a comprehensive interface providing all necessary information to manage and access their database. The interface is structured into several main sections, including database type, plan details, access credentials, and additional configuration and support options. 10 | 11 | 12 | To access details of the created database, click open. 13 | 14 | #### User Interface 15 | 16 | #### Sidebar Menu 17 | 18 | In the sidebar menu (located on the left), users will find the following options: 19 | 20 | - **Databases:** Options related to databases. 21 | 22 | 23 | 24 | - **Overview:** Details of the selected database. 25 | 26 | #### Main Section 27 | 28 | In the main section of the interface, the following information is presented: 29 | 30 | 31 | 32 | #### Database Details 33 | 34 | - **Database Name:** amazonprime 35 | - **Type:** STANDALONE 36 | - **Region:** us-east-1 37 | 38 | #### Plan Information 39 | 40 | - **Plan:** Standard 41 | - **MongoDB Version:** v7.0 42 | - **Resources:** 43 | - RAM: 2 GB 44 | - CPUs: 2 45 | - Storage: 20 GB 46 | - **Status:** Running 47 | - **Containers in Use:** 1 48 | 49 | #### Credentials 50 | 51 | The credentials section provides necessary information to access the database: 52 | 53 | - **Username:** admin 54 | - **Password:** password 55 | - **Connection String:** 56 | `mongodb://:@philippeaquino92_amazonprime-01.mongodb.meteor.io:31002/admin` 57 | 58 | ## Usage Instructions 59 | 60 | #### Accessing the Database 61 | 62 | 1. Use the provided credentials: 63 | - Copy the username and password. 64 | - Use the provided connection string to connect to the database. 65 | 66 | 2. Connection Example: 67 | ```bash 68 | mongo "mongodb://:@philippeaquino92_amazonprime-01.mongodb.meteor.io:31002/admin" 69 | ``` 70 | 71 | - Replace `` and `` accordingly. 72 | 73 | #### Managing the Database 74 | 75 | - **Create Specific Users for Applications:** 76 | It is recommended to create users with specific permissions for each application that will access the database. 77 | 78 | - **Access Documentation:** 79 | Use the documentation link in the sidebar menu to get detailed information about using and connecting to MongoDB. 80 | 81 | - **Monitor Status:** 82 | Regularly check the service status to ensure the database is operating as expected. 83 | 84 | - **Request Support:** 85 | Use the support option in the sidebar menu to resolve any issues or questions that may arise. 86 | 87 | This documentation provides comprehensive guidance for users to understand and effectively use the MongoDB creation system interface in Galaxy Databases. -------------------------------------------------------------------------------- /source/gdpr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GDPR Readiness FAQ 3 | order: 74 4 | --- 5 | 6 | Effective May 25, 2018, the General Data Protection Regulation (GDPR) expands European Union (EU) residents’ (Data Subjects) rights concerning their personal data. Meteor Software Ltd. (“Meteor Software") stands ready to assist our customers to become or remain compliant with GDPR after this crucial transition. 7 | 8 |

What is GDPR?

9 | 10 | GDPR standardizes EU regulations and expands the rights of Data Subjects pertaining to personal data while expanding the definition of what constitutes personal data. GDPR provides Data Subjects with increased rights to control and delete their personal data, and it broadly prohibits the processing of special categories of personal data. 11 | 12 |

How has Meteor Software prepared for GDPR?

13 | 14 | We have been complying with GDPR since before it became enforceable on May 25, 2018. We are enhancing our products, processes, and procedures to meet our obligations as a data processor (Processor). 15 | 16 |

How will GDPR affect the way companies use Meteor Software's products or services?

17 | 18 | Our products and services are not intended to be used for processing personal data. Our products and services are focused on software, systems, and applications - not individuals. If a customer wishes to set up a custom API, custom attribute, or custom event to track such data, it may do so. Our processing is data agnostic and automated, so all data will be processed in the same way in accordance with a customer’s configuration. If, however, a customer believes that it has included personal data in the information processed by Meteor Software, we will assist the customer in meeting its obligations in accordance with the requirements of GDPR and the terms of our Data Processing Agreement. 19 | 20 |

How can Meteor Software assist customers in meeting their obligations under GDPR?

21 | 22 | As a Processor, we will assist customers in fulfilling their obligations as data controllers (Controllers) by: 23 | 24 | - supporting customers in complying with requests from Data Subjects 25 | - aggregating applicable personal data for customers replying to complaints from Data Subjects 26 | - replying to investigations and inquiries from supervisory authorities concerning processing activities on behalf of a customer 27 | - conducting Data Protection Impact Assessments 28 | 29 |

How can Meteor Software help address requests from Data Subjects?

30 | 31 | Meteor Software is implementing a process to intake, review, and fulfill customer requests arising from Data Subject Access Requests (DSAR) they receive. As a result of a DSAR, customers might request that Meteor Software securely delete or return the Data Subject’s personal data. Due to their sensitivity, such requests will be handled by Meteor Software on a case-by-case basis. 32 | 33 |

Where can I learn more about Meteor Software's security and privacy policies?

34 | 35 | The legal terms and policies that apply to Meteor Software can be found on our [Terms of Service](https://meteor.com/legal/terms-of-service) and [Privacy Policy](https://meteor.com/legal/privacy-policy) pages. 36 | 37 |

Where can I get more help?

38 | 39 | If you have any questions or encounter any issues, please reach out to [support](/support.html). 40 | -------------------------------------------------------------------------------- /source/high-availability.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: High-availability 3 | order: 41 4 | description: Learn how to make your app fault tolerant by enabling high-availability 5 | --- 6 | 7 | High-availability increases the likelihood that your app stays up in the event of unforeseen container, machine, or availability zone failures. We recommend high-availability for all business critical and production apps. Galaxy supports high-availability by default. 8 | 9 | Just run three or more Standard containers to enable it for your app. You'll see "HA" in a golden box next to any apps where high-availability is enabled. 10 | 11 |

Turn high-availability on

12 | 13 | 1. Check if your app has enabled high-availability on the app overview page. 14 | 15 | 16 | 17 | 2. Change the container size to Standard or larger in your app settings. 18 | 19 | 20 | 21 | 3. Add three or more containers on the app overview page 22 | 4. Verify that it's enabled via the UI 23 | 24 |

How we do it

25 | 26 | For deployments with three or more Standard containers, Galaxy will distribute an app's containers to a different availability zones in the same region. Dividing infrastructure across multiple data centers ensures that high-availability apps are fault tolerant. 27 | -------------------------------------------------------------------------------- /source/image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/image-1.png -------------------------------------------------------------------------------- /source/image-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/image-2.png -------------------------------------------------------------------------------- /source/image-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/image-3.png -------------------------------------------------------------------------------- /source/image-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/image-4.png -------------------------------------------------------------------------------- /source/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/image.png -------------------------------------------------------------------------------- /source/images/apm-active-subs-average-lifetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-active-subs-average-lifetime.png -------------------------------------------------------------------------------- /source/images/apm-average-pubsub-response-time-OLD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-average-pubsub-response-time-OLD.png -------------------------------------------------------------------------------- /source/images/apm-average-pubsub-response-time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-average-pubsub-response-time.png -------------------------------------------------------------------------------- /source/images/apm-average-response-time-ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-average-response-time-ms.png -------------------------------------------------------------------------------- /source/images/apm-bandwidth-selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-bandwidth-selector.png -------------------------------------------------------------------------------- /source/images/apm-cpu-usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-cpu-usage.png -------------------------------------------------------------------------------- /source/images/apm-created-observers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-created-observers.png -------------------------------------------------------------------------------- /source/images/apm-dashboard-summary-OLD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-dashboard-summary-OLD.png -------------------------------------------------------------------------------- /source/images/apm-dashboard-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-dashboard-summary.png -------------------------------------------------------------------------------- /source/images/apm-error-rate-and-errors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-error-rate-and-errors.png -------------------------------------------------------------------------------- /source/images/apm-error-tracking-intro-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-error-tracking-intro-1.png -------------------------------------------------------------------------------- /source/images/apm-error-tracking-intro-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-error-tracking-intro-2.png -------------------------------------------------------------------------------- /source/images/apm-error-tracking-zones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-error-tracking-zones.png -------------------------------------------------------------------------------- /source/images/apm-event-loop-utilization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-event-loop-utilization.png -------------------------------------------------------------------------------- /source/images/apm-fetched-documents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-fetched-documents.png -------------------------------------------------------------------------------- /source/images/apm-livequeries-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-livequeries-summary.png -------------------------------------------------------------------------------- /source/images/apm-livequery-publication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-livequery-publication.png -------------------------------------------------------------------------------- /source/images/apm-memory-usage-host.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-memory-usage-host.png -------------------------------------------------------------------------------- /source/images/apm-method-breadown-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-method-breadown-1.png -------------------------------------------------------------------------------- /source/images/apm-method-breadown-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-method-breadown-2.png -------------------------------------------------------------------------------- /source/images/apm-method-breadown-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-method-breadown-3.png -------------------------------------------------------------------------------- /source/images/apm-methods-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-methods-summary.png -------------------------------------------------------------------------------- /source/images/apm-network-latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-network-latency.png -------------------------------------------------------------------------------- /source/images/apm-new-observers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-new-observers.png -------------------------------------------------------------------------------- /source/images/apm-observer-changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-observer-changes.png -------------------------------------------------------------------------------- /source/images/apm-oplog-notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-oplog-notifications.png -------------------------------------------------------------------------------- /source/images/apm-publication-breakdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-publication-breakdown.png -------------------------------------------------------------------------------- /source/images/apm-pubsub-recommendations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-pubsub-recommendations.png -------------------------------------------------------------------------------- /source/images/apm-pubsub-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-pubsub-summary.png -------------------------------------------------------------------------------- /source/images/apm-response-time-traces-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-response-time-traces-1.png -------------------------------------------------------------------------------- /source/images/apm-response-time-traces-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-response-time-traces-2.png -------------------------------------------------------------------------------- /source/images/apm-sub-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-sub-rate.png -------------------------------------------------------------------------------- /source/images/apm-throughput-requests-per-minute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-throughput-requests-per-minute.png -------------------------------------------------------------------------------- /source/images/apm-throughput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-throughput.png -------------------------------------------------------------------------------- /source/images/apm-time-breakdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-time-breakdown.png -------------------------------------------------------------------------------- /source/images/apm-total-reused-observer-handles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-total-reused-observer-handles.png -------------------------------------------------------------------------------- /source/images/apm-total-sessions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-total-sessions.png -------------------------------------------------------------------------------- /source/images/apm-view-app.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm-view-app.gif -------------------------------------------------------------------------------- /source/images/apm.dashboard.explain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/apm.dashboard.explain.png -------------------------------------------------------------------------------- /source/images/app-protection-custom-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/app-protection-custom-settings.png -------------------------------------------------------------------------------- /source/images/app-scaling-rps-cpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/app-scaling-rps-cpu.png -------------------------------------------------------------------------------- /source/images/container-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/container-item.png -------------------------------------------------------------------------------- /source/images/container-upsize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/container-upsize.gif -------------------------------------------------------------------------------- /source/images/container-upsize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/container-upsize.png -------------------------------------------------------------------------------- /source/images/email-add-domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/email-add-domain.png -------------------------------------------------------------------------------- /source/images/email-enable-ssl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/email-enable-ssl.png -------------------------------------------------------------------------------- /source/images/email-galaxy-performance-graphs-600x468.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/email-galaxy-performance-graphs-600x468.jpg -------------------------------------------------------------------------------- /source/images/email-scale-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/email-scale-up.gif -------------------------------------------------------------------------------- /source/images/empty_circle_outlined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/empty_circle_outlined.png -------------------------------------------------------------------------------- /source/images/galaxy-api-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-api-key.png -------------------------------------------------------------------------------- /source/images/galaxy-app-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-app-container.png -------------------------------------------------------------------------------- /source/images/galaxy-app-logs-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-app-logs-download.png -------------------------------------------------------------------------------- /source/images/galaxy-app-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-app-logs.png -------------------------------------------------------------------------------- /source/images/galaxy-app-overview-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-app-overview-1.png -------------------------------------------------------------------------------- /source/images/galaxy-app-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-app-overview.png -------------------------------------------------------------------------------- /source/images/galaxy-container-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-container-filter.png -------------------------------------------------------------------------------- /source/images/galaxy-databases-migration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-databases-migration.png -------------------------------------------------------------------------------- /source/images/galaxy-databases-mongodb-compass-connection-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-databases-mongodb-compass-connection-done.png -------------------------------------------------------------------------------- /source/images/galaxy-databases-mongodb-compass-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-databases-mongodb-compass-connection.png -------------------------------------------------------------------------------- /source/images/galaxy-databases-mongodb-overview-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-databases-mongodb-overview-1.png -------------------------------------------------------------------------------- /source/images/galaxy-databases-mongodb-overview-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-databases-mongodb-overview-2.png -------------------------------------------------------------------------------- /source/images/galaxy-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-logo.png -------------------------------------------------------------------------------- /source/images/galaxy-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/galaxy-menu.png -------------------------------------------------------------------------------- /source/images/gray_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/gray_circle.png -------------------------------------------------------------------------------- /source/images/green_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/green_circle.png -------------------------------------------------------------------------------- /source/images/green_circle_outlined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/green_circle_outlined.png -------------------------------------------------------------------------------- /source/images/instant-rollback-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/instant-rollback-1.png -------------------------------------------------------------------------------- /source/images/instant-rollback-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/instant-rollback-3.png -------------------------------------------------------------------------------- /source/images/instant-rollback-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/instant-rollback-5.png -------------------------------------------------------------------------------- /source/images/instant-rollback-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/instant-rollback-6.png -------------------------------------------------------------------------------- /source/images/instant-rollback-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/instant-rollback-7.png -------------------------------------------------------------------------------- /source/images/instant-rollback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/instant-rollback.png -------------------------------------------------------------------------------- /source/images/ipv6-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/ipv6-feature.png -------------------------------------------------------------------------------- /source/images/logo-mongodb-leaf-24x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/logo-mongodb-leaf-24x48.png -------------------------------------------------------------------------------- /source/images/logs_section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/logs_section.png -------------------------------------------------------------------------------- /source/images/mlab-create-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/mlab-create-account.png -------------------------------------------------------------------------------- /source/images/mlab-create-db-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/mlab-create-db-user.png -------------------------------------------------------------------------------- /source/images/mlab-create-new-db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/mlab-create-new-db.png -------------------------------------------------------------------------------- /source/images/mlab-set-db-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/mlab-set-db-name.png -------------------------------------------------------------------------------- /source/images/mlab-view-databases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/mlab-view-databases.png -------------------------------------------------------------------------------- /source/images/mlab-view-db-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/mlab-view-db-details.png -------------------------------------------------------------------------------- /source/images/notifications-activities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/notifications-activities.png -------------------------------------------------------------------------------- /source/images/notifications-slack-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/notifications-slack-settings.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-add-config-to-existing-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-add-config-to-existing-app.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-edit-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-edit-configuration.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-first-step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-first-step.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-override-meteor-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-override-meteor-settings.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-second-step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-second-step.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-third-step-advanced-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-third-step-advanced-options.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-third-step-existing-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-third-step-existing-app.png -------------------------------------------------------------------------------- /source/images/push-to-deploy-third-step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/push-to-deploy-third-step.png -------------------------------------------------------------------------------- /source/images/red_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/red_circle.png -------------------------------------------------------------------------------- /source/images/ss-high-availability-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/ss-high-availability-on.png -------------------------------------------------------------------------------- /source/images/triggers-00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-00.png -------------------------------------------------------------------------------- /source/images/triggers-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-01.png -------------------------------------------------------------------------------- /source/images/triggers-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-02.png -------------------------------------------------------------------------------- /source/images/triggers-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-03.png -------------------------------------------------------------------------------- /source/images/triggers-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-04.png -------------------------------------------------------------------------------- /source/images/triggers-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-05.png -------------------------------------------------------------------------------- /source/images/triggers-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-06.png -------------------------------------------------------------------------------- /source/images/triggers-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/triggers-07.png -------------------------------------------------------------------------------- /source/images/upgrade-app-to-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-app-to-pro.png -------------------------------------------------------------------------------- /source/images/upgrade-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-app.png -------------------------------------------------------------------------------- /source/images/upgrade-apps-to-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-apps-to-pro.png -------------------------------------------------------------------------------- /source/images/upgrade-apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-apps.png -------------------------------------------------------------------------------- /source/images/upgrade-confirmation-to-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-confirmation-to-pro.png -------------------------------------------------------------------------------- /source/images/upgrade-confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-confirmation.png -------------------------------------------------------------------------------- /source/images/upgrade-congrats-to-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-congrats-to-pro.png -------------------------------------------------------------------------------- /source/images/upgrade-congrats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-congrats.png -------------------------------------------------------------------------------- /source/images/upgrade-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-dashboard.png -------------------------------------------------------------------------------- /source/images/upgrade-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-options.png -------------------------------------------------------------------------------- /source/images/upgrade-signin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-signin.png -------------------------------------------------------------------------------- /source/images/upgrade-success-to-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-success-to-pro.png -------------------------------------------------------------------------------- /source/images/upgrade-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/upgrade-success.png -------------------------------------------------------------------------------- /source/images/view-custom-domains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meteor/galaxy-docs/08cee71d3bc6f7157b1a2cab6edd519b03afe02f/source/images/view-custom-domains.png -------------------------------------------------------------------------------- /source/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | order: 0 4 | description: The guide for deploying, scaling, and managing Meteor apps on Meteor Cloud 5 | --- 6 | 7 | This is the official documentation for Meteor Cloud. 8 | 9 |

What is Meteor Cloud?

10 | 11 | Meteor Cloud is the only full service cloud offering to host, monitor and manage Meteor Applications. Get access to Monti APM, Atmosphere and Galaxy Hosting all from one centralized dashboard with Meteor Cloud. 12 | 13 | 14 | 15 |

Why Choose Meteor Cloud?

16 | 17 | By creating a Meteor Cloud account you get access to: 18 | 19 | - **Meteor specific hosting**: Get access to premium hosting features like triggers and notifications, as well as advanced security measures like IP whitelisting, app protection and much more. [See more info on Plans and Pricing](/billing.html) 20 | 21 | - **Organizations**: Collaborate with fellow developers throughout the extensive Meteor Ecosystem 22 | 23 | - **Free deploy**: Deploy your application quickly for free using our Free plan and MongoDB auto-configuration. Great for staging environments and early iterating with Meteor 24 | 25 | - **Atmosphere**: Immediately get access to the community library of open source packages built and used by thousands of Meteor Developers for almost a decade 26 | 27 | - **Peace of mind**: Have the peace of mind that comes having experts in Meteor architecture supporting your application 28 | 29 | 30 | 31 |

What is Atmosphere?

32 | 33 | [Atmosphere](https://atmospherejs.com/) is the directory of community built packages available for download, completely free and accessible through your Meteor Cloud account. Rather than start from scratch, the Meteor community has solved many problems for you (such as user login and data synchronization). We highly recommend you take advantage of their hard work! 34 | 35 | To learn more about creating and publishing packages, please visit the [Meteor Guide](https://guide.meteor.com/writing-atmosphere-packages.html). 36 | 37 | 38 | 39 |

What is Monti APM?

40 | 41 | Monti APM is a service to help you understand what is happening inside your Meteor apps to make them faster, more reliable, and error free. You can see how your app is performing, when there are problems or errors, and diagnose the cause of issues. 42 | 43 | Monti APM is available for apps on the [Meteor Cloud Professional plans](/billing.html). 44 | For more information on Monti APM and how to get started, visit [Getting Started with APM](/apm-getting-started.html). 45 | 46 | 47 |

What is Galaxy Hosting?

48 | 49 | Run your apps with confidence. Galaxy is easy to start, excellent to grow your app and fully-featured to support your needs as you scale. 50 | 51 | - **Push To Deploy**: update your app directly from your Git repository 52 | 53 | - **Auto-scaling**: Customize the size and number of containers to meet your apps requirements and triggers to scale automatically 54 | 55 | - **Simple management**: Use a unified interface to manage, understand usage characteristics, and adjust settings for all your Meteor apps 56 | 57 | - **Notifications**: Receive in your Slack or Email what is happening in real-time 58 | 59 | - **Integrated Monti APM**: Use Monti APM to optimize the performance of your production application 60 | 61 | - **Meteor expert support**: Have answers to all your questions 62 | 63 |

Get Started

64 | 65 | - Use the [deploy guide](/deploy-to-galaxy.html) to learn how to deploy your apps to Galaxy. 66 | 67 | - Follow the [command-line guide](/deploy-command-line.html) for deploying your apps using your own machines. 68 | 69 | 70 |

Contribute

71 | 72 | Ongoing Meteor Cloud documentation development takes place in the [open on GitHub](https://github.com/meteor/galaxy-docs). We encourage pull requests and issues to discuss changes that can improve the clarity and quality of content. 73 | -------------------------------------------------------------------------------- /source/instant-rollback.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Instant Rollback 3 | order: 37 4 | description: Learn how to roll back or restore to a previously deployed version 5 | --- 6 | 7 | For a variety of reasons, you might need to recover from an incident in production — for example, due to a bug. In that case, Meteor Cloud allows you to restore your deployments and quickly revert back to a previously deployed production deployment. 8 | 9 |

How to roll back deployments?

10 | 11 | 1- From Galaxy, open the app to which you'd like to restore a deployment version. 12 | 13 | 14 | 15 | 2- Go to the `Versions` tab. From there, you can see your Version History with the version number, when it was activated, by who this version was deployed, its status, and which is the currently deployed version. 16 | 17 | 18 | 19 | 3- Click on the version row to show more details. 20 | 21 | 22 | 23 | 4- Click on `Restore Version {number}`, and confirm your selection by clicking on `Restore`. 24 | 25 | 26 | 27 | 5- Wait a few moments and your version will be restored. You can notice in the `Activity` panel that your version has been restored. And also notice in the `Containers` tab that your containers will be updated to the selected version. 28 | 29 | 30 | 31 |

Why there are archived versions?

32 | 33 | You can instantly restore the last 10 versions. If you have more than 10 deployments, we will archive those deployed more than 30 days ago. You can still restore archived versions, just click the link right there next to the Restore button to ask our support to make this version available for you. 34 | 35 | -------------------------------------------------------------------------------- /source/memory-issues.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Memory Issues 3 | order: 39 4 | description: Learn how to troubleshoot memory issues 5 | --- 6 | 7 |

Memory issues or Out-of-Memory errors

8 | 9 | Memory issues are a common but often poorly understood problem. In order to effectively resolve them, you may need to profile your app and iterate on your code in order to improve memory usage. 10 | 11 | Memory issues are frequently indicated in your [logs](/logs.html). Check your logs for clues about the source of the issue. 12 | 13 | If you see the log message `The container has run out of memory. A new container will be started to replace it,` this means that the container running your application tried to get more memory than was allocated to it. Containers in this state are automatically killed. 14 | 15 | If you continue to run your app as is, the only way to prevent it from dying is to allocate resources with more than enough memory. A working solution may include more containers, bigger containers, or both. 16 | 17 | You can see memory utilization in the [container view](/containers.html) of your app. If you see memory spiking to 90% or more, that is almost certainly a problem you'll need to troubleshoot. 18 | 19 | Your app may be experiencing memory issues even if your metrics never reach this level, if your container is running out of memory and crashing before our metrics can register the increase. 20 | 21 | You can upgrade to Galaxy Professional and use [Monti APM](/apm-getting-started.html) in order to get a more exact sense of your app's memory usage over time, among other things. Using Monti APM, your app's memory usage can be profiled for periods as short as 1 hour, and as long as 30 days. 22 | 23 | You can also use npm modules to profile your memory usage and pinpoint erratic memory usage. The heapdump npm module is one such module, though you'll need to transfer the file it creates to a place like S3 for download and closer examination. Another such module is memwatch-next. While Galaxy does not officially support specific third-party modules, the community has found the use of modules of this type to be helpful. 24 | 25 | In the short term, you may need to [scale up](/scaling.html). You can always scale back down after refactoring your app to consume less memory. 26 | -------------------------------------------------------------------------------- /source/migrate-app.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Migrate your app to Galaxy 3 | order: 12 4 | description: Learn how to migrate your app to Galaxy 5 | --- 6 | 7 | Welcome to Galaxy, the best place to host your Meteor app! 8 | 9 | When migrating your app you'll want to deploy a new instance of your app to Galaxy, ensure it works, and then switch over DNS from your prior hosting provider to Galaxy. This way you'll minimize any disruption to your users during your app migration. 10 | 11 |

Deploy on Galaxy

12 | 13 | Learn how to deploy on Galaxy by following our [main deployment guide](/deploy-to-galaxy.html). This is the easiest and fastest way of deploying your Meteor app. 14 | 15 |

Get support

16 | 17 | If you aren't able to complete your app migration, contact [Galaxy Support](https://support.portal.meteor.com/servicedesk/customer/portal/1/group/-1) and we'll assist you. 18 | -------------------------------------------------------------------------------- /source/mongodb.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MongoDB configurations 3 | order: 13 4 | description: Learn how to configure your MongoDB provider for Galaxy 5 | --- 6 | 7 | Although Galaxy provides a free MongoDB service, it is not suitable for production usage. Because of that, we advise you to host one yourself. We recommend using a dedicated database hosting service such as [ScaleGrid](https://console.scalegrid.io/users/register?partnerID=meteor.com) or [MongoDB Atlas](https://www.mongodb.com/cloud/atlas). 8 | 9 | To configure MongoDB for your Meteor application, see the detailed steps in the [Deployment guide](/deploy-setup.html#mongo-configure). 10 | 11 | For optimum performance, please ensure your database is running in the same region. 12 | 13 |

Configuring the app settings file

14 | 15 | MongoDB is configured using environment variables in your `settings.json` file. Refer to the [environment variables](/deploy-setup.html#common-env-variables) section to find a complete example. 16 | 17 | Note that a valid `MONGO_URL` is required unless you have removed the `mongo` package from your app. A missing/invalid `MONGO_URL` is a common cause of failed deployments. 18 | 19 |

Connecting to your database

20 | 21 | Galaxy is agnostic about how you talk to MongoDB, as long as you provide the appropriate credentials. If you can't connect, follow these steps: 22 | 23 | 1. Review the settings and examples on the [Environment variables](/deploy-setup.html#common-env-variables) section. 24 | 2. Try connecting without a Mongo Oplog URL to see if that is causing the issue. 25 | 3. Verify the URL and username/password by connecting through a MongoDB tool or CLI. 26 | 27 | If it still isn't working, you may want to check GitHub and the forums, or write to your database provider. They'll usually have more visibility into the issue than anyone in Galaxy support. 28 | 29 |

Configuring Oplog Tailing

30 | 31 | Meteor can get real time updates from MongoDB by using [oplog tailing](https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver). Oplog tailing involves reading the MongoDB 'operations log' - a special Mongo collection that records all the write operations as they are applied to your database. 32 | 33 | To use Oplog tailing, the database must be a Replica set enabled database. Refer to the [environment variables](/deploy-setup.html#common-env-variables) section to find an example. 34 | 35 |

Learn more

36 | 37 | - Learn how to [configure your apps](/deploy-setup.html) on Galaxy. 38 | - Read our main [guide for deploying applications](/deploy-to-galaxy.html) on Galaxy. 39 | - Read this [OK GROW! article](https://github.com/meteor/guide/files/4450467/okgrow-oplog.tailing.pdf) to connect your Meteor app to MongoDB Atlas with Oplog tailing 40 | - Learn in what [environment Galaxy runs your app](/container-environment.html). 41 | -------------------------------------------------------------------------------- /source/notifications.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Notifications 3 | order: 34 4 | description: Learn how to set Galaxy's notification to your account and apps 5 | --- 6 | 7 | Galaxy notifications are the best way to stay informed about your apps running on Galaxy. We support notifications via Slack and Email. 8 | 9 |

Activity Types

10 | 11 | Notifications are sent when actvitiy occurs in your account: 12 | 13 | 14 | 15 | We recommend activating notifications for at least these types: 16 | - Deploy failed 17 | - Build failed temporarily 18 | - Build failed permanently 19 | - App automatically stopped 20 | - Certificate generation error 21 | 22 | In order for you to ensure minimal disruption, should critical issues occur. 23 | 24 | It could be also important to enable these types below if your app can consume too much CPU or Memory, then you can receive notifications when this starts to affect your users, these activities also produce logs in the service tab but they are not displayed in the timeline of activities: 25 | - Container unhealthy 26 | - App unavailable 27 | 28 |

Usage

29 | 30 |

Account settings

31 | 32 | Let's begin configuring your account settings. Go to your Galaxy dashboard and click in the Settings tab of your account. Below the section PLAN, you will see the section NOTIFICATIONS. 33 | 34 | When you click on CHANGE, if your account was created before Notifications existed on Galaxy, everything will be disabled. If your account was created when Notifications were already on Galaxy, the email option will be enabled with some type of activities already checked. 35 | 36 |

Email Settings

37 | 38 | Enabling email notifications is simple. You just need to click on ENABLE EMAIL NOTIFICATIONS and choose which types of activity you want to receive an email about, then click SAVE at the end of the section. 39 | 40 | If you have an individual account, nothing more needs to be done. If you have an organization account, you'll have to set which members of your organization should receive the emails. 41 | 42 | You can do this by going to your Galaxy dashboard and clicking in the MEMBERS tab. Below EMAIL NOTIFICATIONS you will see all members of your organization. If you just created the account, your card will be green, meaning you are already enabled to receive the emails by default. If you already have an account, all members will be disabled. To enable or disable a member just click on their card, then hit the save button. 43 | 44 | Then you're good to go! All chosen members will receive the notifications by email. 45 | 46 |

Slack Settings

47 | 48 | First, you will need to add an Incoming WebHooks to a channel in your Slack. To do this, please go to [this page](https://slack.com/intl/en-br/help/articles/202035138-Add-an-app-to-your-workspace). 49 | 50 | Once you get your URL (that will be something like this: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX ), go to your Galaxy dashboard. In the NOTIFICATION SETTINGS, click in ENABLE SLACK NOTIFICATIONS. 51 | 52 | You can go ahead and paste your URL in the Slack Incoming WebHooks URL field. In the table below this field you can choose which activities you want to receive notifications for, and you also can fill the Custom Slack Channel with a name of an existing channel that you have in you slack account. With this, you can receive different activity notifications to different channels. If you don't fill this field, we will send the notification to the channel that you first used to install the Incoming WebHooks app in your Slack. 53 | 54 | 55 | 56 | After setting everything up, just hit the save button! 57 | 58 |

App Settings

59 | 60 | The settings above will be applied to every app in your account. However, you can customize these settings for each app. 61 | 62 | To do so, choose an app that you want to have a custom notification settings, then go to settings. Below DOMAINS & ENCRYPTION you'll see NOTIFICATIONS. When you click on CHANGE the button ENABLE CUSTOM APP NOTIFICATIONS will appear. When you click this button, the same options from your account's notification setting will be displayed. From now on all notifications for this app will behave respecting the app settings and not the account settings. 63 | 64 | Now, for example, if you click on ENABLE CUSTOM APP NOTIFICATIONS, keeping the Email and Slack options disabled, and hit SAVE, you will be disabling the notifications for that app. This means you have control over the notifications on each app. Each application configuration is independent, you can customize everything at the app level! 65 | 66 | The way to set up the Email and Slack option here is the same from Account Settings. 67 | -------------------------------------------------------------------------------- /source/protection.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: DDoS Mitigation 3 | order: 36 4 | description: Learn how Galaxy protects your app 5 | --- 6 | 7 | Galaxy's Network layer has a custom proxy tailored to work with Meteor apps. 8 | 9 | Our proxy servers handle the HTTP and WebSocket requests to your app by always selecting the best container to serve each specific request, taking into consideration how many connections are already open on each container. 10 | 11 | It also allows you to use multiple domains in our apps. 12 | 13 |

Attacks

14 | 15 | DoS and DDoS attacks are attempts to make your app overloaded and unavailable for legitimate requests. 16 | 17 | Galaxy proxy servers are in front of every request going to your app. This is a very important security measure, as our proxy servers can isolate eventual attack attempts on your apps. We call this "DDoS Mitigation", and it is automatically enabled for all Galaxy clients. 18 | 19 | Galaxy provides out-of-the-box protection against attacks by analyzing all requests that are coming to our servers, aggregating the data across all servers, then making decisions about which type of requests are over our expected limits. 20 | 21 | When a type of request is classified as abusive we stop sending these requests to your app, and we start to return HTTP 429 (Too Many Requests). 22 | 23 | We also have some rules to define for how long this type of request will be blocked. If you have specific use cases that may need different limits please reach out to (support@meteor.com). 24 | 25 | We are not going to explain here in details how we identify abusive requests and what are our rules are, as it may make it easier for attackers to workaround them. We will improve our App Protection feature every time we identify new opportunities for protection. 26 | 27 | If you are going to perform load testing, please contact us at least 2 business days in advance explaining how you are doing so -- which IPs and targeting which hosts (domains). 28 | 29 | > Attacks can happen in different scales. We cannot promise that we can prevent any kind of attack, but we can prevent most of them as our proxy layer is robust and can handle a large amount of requests. We also use standard AWS protection in front of our servers. 30 | 31 | You should configure your app as well to limit the messages received via WebSockets, as our proxy servers are only acting in the first connection and not in the WebSocket messages after the connection is established. 32 | 33 | Meteor provides [rate limits](https://docs.meteor.com/api/methods.html#ddpratelimiter) so you can use it to protected your app further. 34 | 35 |

Settings

36 | 37 | On your app settings you can customize your DDoS Mitigation settings. You will be able to set a threshold of the maximum number of requests that you want to allow your app to receive in a window of 5 seconds. 38 | 39 | Once you enabled the custom DDoS Mitigation, you will also be able to see the list of IPs that are currently blocked, if any, and you will have the power to disable a block or even delete it. 40 | 41 | When you delete you eliminate this record completely, so it could be blocked again in the future. When it is disabled it's never going to be blocked again. 42 | 43 | 44 | -------------------------------------------------------------------------------- /source/push-to-deploy.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Push To Deploy 3 | description: Learn how to setup Push to Deploy, so you can update your app directly from your repository. 4 | --- 5 | 6 | The content of this page was moved to this [new deployment guide](/deploy-to-galaxy.html). 7 | -------------------------------------------------------------------------------- /source/roadmap.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Roadmap 3 | description: Describes the high-level features and actions for Meteor Cloud in the near-to-medium term future. 4 | --- 5 | 6 | ## New Feature Request and Roadmap 7 | 8 | **Updated October 3, 2023** 9 | 10 | We've launched a new feedback platform where you can follow our roadmap and submit feature requests for Meteor Cloud (Galaxy, Meteor APM, and Atmosphere)! 11 | 12 | Follow https://cloud-news.meteor.com and receive our news by email. 13 | 14 | This Roadmap page will not receive new updates. 15 | 16 | ## Recently completed 17 | 18 | ### Push To Deploy 19 | Support **Bitbucket** as a Git provider and automatically deploy an application version based on a selected branch. 20 | 21 | Support **GitLab** as a Git provider and automatically deploy an application version based on a selected branch. 22 | 23 | ### New Changelog system 24 | Create a new Changelog system with email notifications to improve our communication about new features and service upgrades which may impact applications. 25 | 26 | ### DNS Services 27 | Support configuration for DNS root domain and SSL certificate. 28 | 29 | ### Improve Cloud UI 30 | Provide a better UX across Meteor Cloud features. 31 | 32 | ### One Time Password on Meteor Accounts 33 | [Read more](https://forums.meteor.com/t/2fa-otp-support-in-meteor-accounts-meteor-cloud/57248) 34 | 35 | ### Deploy from Git push 36 | [Read more](https://blog.meteor.com/introducing-push-to-deploy-6ea464ee5f33) 37 | 38 | ## Candidate items 39 | We need to discuss further to decide whether or not to proceed with these new features. 40 | 41 | ### Monitoring system 42 | Offer the APM for apps not hosting with Meteor Galaxy, smart alerts specific for Meteor apps, and integrations with Galaxy metrics. 43 | 44 | ### Serverless Meteor Methods 45 | Ability to run servers for Meteor Methods only when needed and scales automatically. 46 | 47 | ### File Storage 48 | Secure and durable Cloud Storage, easy to use with Meteor packages. 49 | 50 | ### Service for Communications 51 | Provide services to enable clients to send email and text messages using very friendly Meteor packages. 52 | -------------------------------------------------------------------------------- /source/scaling.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Scaling 3 | order: 40 4 | description: Learn how to improve your app’s performance by scaling 5 | --- 6 | 7 | Scaling and sizing your application is specific to the architecture and performance characteristics of your app. As apps grow they often require more resources to perform well. Galaxy accommodates growth by offering vertical and horizontal resource scaling. 8 | 9 | Scaling with Galaxy happens without downtime; your users will not experience service interruption, as long as you maintain at least one continuously running container at all times. 10 | 11 |

What to look for

12 | 13 | We recommend that you scale when your app’s container usage exceeds either 70% memory, 80% CPU, or consistently spikes to 100% CPU. Use Galaxy’s performance graphs to track your resource usage over time. 14 | 15 | 16 | 17 |

How to scale

18 | 19 | By default, new applications are deployed to Compact containers. Compact containers are appropriate for small apps. For large codebases, we recommend that you run your app on Standard containers. 20 | 21 | **Vertical scaling** increases your app's available resources by expanding the size of each container. Use this method of scaling when your app requires more CPU or RAM than the current container size can handle. If handling a single user/connection needs more memory/CPU than will fit in the currently used container size, you'll need to vertically scale, even if the usage doesn't last for long. 22 | 23 | Consider changing your [garbage collection settings](#garbage-collection), to take full advantage of larger-sized containers. 24 | 25 | Vertical scaling works best for one-time changes, when you won't need to change container sizes often. 26 | 27 | Vertical scaling restarts all your containers. If you adjust the container size of a container, that container will restart. 28 | 29 | 30 | 31 | > Note that larger containers may take slightly longer to restart. 32 | 33 | **Horizontal scaling** increases your app’s available resources by adding more containers. This is useful when sudden increases in usage or traffic cause your app to be less performant. 34 | 35 | 36 | 37 | Horizontal scaling is recommended if you need to scale up and down, gradually and frequently. 38 | 39 | A good rule of thumb is to use the smallest container size that can handle a single user's load, and scale horizontally beyond this. 40 | 41 | > Horizontal scaling does not restart your containers. 42 | 43 |

Garbage collection

44 | 45 | You may need to change Node's garbage collection settings for optimal performance. Garbage collection, in this context, refers to automatic memory management. Memory occupied by objects that are no longer in use by your code will be freed up for general use within your container, though the required checks can come at a performance cost. 46 | 47 | Node, the JavaScript engine that powers Meteor, has a powerful garbage collector which can be tuned via various command-line options. One of the most important knobs is the "max old space size" setting, which tells Node how much memory to allow the largest part of the memory heap to grow to. Node's default, in our environment, is to allow slightly over 1 GB (1400 MB) of memory for this space. 48 | 49 | You can control this option (and more generally, any Node setting that can be controlled at the command-line) by setting the environment variable `$GALAXY_NODE_OPTIONS` in your [settings.json file](/deploy-setup.html#env-variables). The value of the --max-old-space-size flag is an integer number of megabytes. For example, to allow 2000MB for the old space size, set `GALAXY_NODE_OPTIONS` to `--max-old-space-size=2000`. (We previously used the `NODE_OPTIONS` variable for this purpose, but Node 8 (in Meteor 1.6) uses that name for a similar purpose which does not allow the garbage collection parameters to be adjusted.) 50 | 51 | Note that while this is generally the largest part of a Node process's memory usage, it does not control the Node process's entire memory footprint. Additionally, if your process forks other subprocesses, they will use their own memory within your container's memory limits. 52 | 53 | Users of Double and Quad containers may want to set this flag higher than its default of 1400 MB to take full advantage of their container's memory. 54 | 55 | Conversely, users of Standard and Compact containers may want to lower this setting to ensure that their Node processes do their best to collect enough garbage to stay inside their container limits. 56 | 57 | We are currently investigating the best default values for each container type, in order to set defaults for our users. We welcome your feedback as to what works best, in your own experience. 58 | 59 | 60 | -------------------------------------------------------------------------------- /source/security.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Security & Systems Policy 3 | order: 73 4 | description: Learn about Galaxy's Security and Systems Policy 5 | --- 6 | 7 |

Galaxy's Security Practices

8 | 9 | Galaxy is committed to ensuring that the application code and data stored in the Meteor Galaxy platform is accessible only by authorized individuals. Security best practices are employed consistently and evolve to meet the needs of our customers. 10 | 11 | When you sign up for a Galaxy Account you agree to our standard SLA, found [here](https://galaxy-sla.s3.amazonaws.com/Meteor%2BSoftware%2BLtd.%2B-%2BService%2BLevel%2BAgreement.pdf). If you need a customized SLA for your account, please reach out to [Galaxy Support](https://support.portal.meteor.com/servicedesk/customer/portal/1/group/-1). 12 | 13 | 14 |

Platform Architecture

15 | 16 | Galaxy's physical infrastructure is hosted and managed within Amazon's secure data centers and utilize the Amazon Web Service (AWS) technology. 17 | 18 | Galaxy consists of Platform services built and run on top of Amazon's Elastic Container Service and Amazon Web Services. 19 | 20 | Galaxy utilizes Amazon EC2 virtual machine and Docker isolation mechanisms. Each application instance is run in its own Docker container on an Amazon EC2 virtual machine. 21 | 22 |

Risk Assessment

23 | 24 | Amazon continually manages risk and undergoes recurring assessments to ensure compliance with industry standards. 25 | 26 | Amazon's data center operations have been accredited under: 27 | - ISO 27001 28 | - SOC 1 and SOC 2/SSAE 16/ISAE 3402 (Previously SAS 70 Type II) PCI Level 1 29 | - FISMA Moderate 30 | - Sarbanes-Oxley (SOX) 31 | 32 | Galaxy itself has not pursued independent certifications. 33 | 34 |

Policy around Software Security Updates

35 | 36 | System configuration and consistency is maintained through standard images, configuration management software, and the replacement of select systems with updated deployments. 37 | 38 | Systems are deployed using up-to-date images that are updated with configuration changes and security updates before deployment. Once deployed, existing systems are decommissioned and replaced with up-to-date systems. 39 | 40 |

Customer Data Security

41 | 42 | Customer application configuration secrets are stored in a Galaxy system database. This database is secured by standard system and authorization policies. Access to the database is restricted to authorized personnel only, for purposes of administration and support. 43 | 44 | Customer application certificates and keys are stored in encrypted form in the Galaxy system database. These certificates are only decrypted on the Galaxy Proxy machines, and are not exposed to application containers. 45 | 46 | Access to private information is protected using Docker isolation in the application container. 47 | 48 |

Application Data

49 | 50 | Galaxy provides SSL encryption to protect data transmission over the wire from external entities to the Galaxy Proxy layer. Internally in Galaxy, Amazon EC2 virtual machine and Docker container network isolation is utilized to protect data transmission over the wire. 51 | 52 | Galaxy does not maintain databases that are utilized for production application use. These databases are provisioned, configured and maintained by the customer. 53 | 54 | Galaxy free MongoDB databases are only available for hobby projects and open-source demos. 55 | 56 |

Application Logs

57 | 58 | Galaxy captures and stores Application Logs in an off-site database. This database is secured by standard system and authorization policies. Access to the database is restricted to authorized personnel for the purposes of administration and support only. 59 | 60 |

Operational Policies

61 | 62 | Galaxy employees do not access customer data or customer environments as part of day-to-day operations. When customers need support, authorized employees are able to view customer data when specifically requested. 63 | 64 | All company employees are trained to understand that customer data privacy and confidentiality is paramount. Under no circumstances is customer data ever disclosed to a third-party. Only a limited subset of employees have the ability to view customer environments and stored data. 65 | 66 | Access is routinely evaluated to ensure those rights are retained only when necessary by job function. Galaxy maintains a policy and operational checklist for removing access for employees that are no longer associated with its operations. 67 | 68 |

Two-Factor Authentication

69 | 70 | Meteor Developer Accounts support Two-Factor Authentication, so we recommend that all members of your organization have it enabled. 71 | 72 | You can check if all members of your organization have this enabled in your Members tab on your account page on Galaxy, you will see a lock icon on each member with Two-Factor Authentication enabled. 73 | 74 | Each member can enable Two-Factor Authentication on cloud.meteor.com/security in the Security section. 75 | 76 | It's important to save the backup codes in a safe place as well. 77 | 78 | Our two-factor authentication works via email, so you are going to receive an email when you authenticate with your confirmation code. 79 | 80 | If you authenticate with GitHub the confirmation code is not going to be send as you should have two-factor on GitHub as well. So our two-factor is not going to do anything in the GitHub authentication. 81 | 82 |

DNSSEC

83 | Starting from 22/June/2021, meteor.com is a domain with DNSSEC enabled. Check what DNSSEC is, and why it's important here. 84 | 85 |

Changes

86 | 87 |

Sep 25th, 2021

88 | 89 | Galaxy applied the following changes to its infrastructure. 90 | 91 | - Disable HTTP 1.0 protocol support 92 | - Galaxy Sticky cookie will have a secure flag for force-ssl enabled domains 93 | - HSTS will be sent for every force-ssl enabled domains 94 | - Removal of some supported ciphers. The updated list will only include the ciphers listed below: 95 | - TLS_AES_128_GCM_SHA256 96 | - TLS_AES_256_GCM_SHA384 97 | - TLS_CHACHA20_POLY1305_SHA256 98 | - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 99 | - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 100 | - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 101 | - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 102 | - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 103 | - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 104 | - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 105 | - TLS_RSA_WITH_AES_128_GCM_SHA256 106 | - TLS_RSA_WITH_AES_128_CBC_SHA 107 | 108 | This can affect clients older than 5 years, like old browsers. 109 | -------------------------------------------------------------------------------- /source/seo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: SEO with Prerender 3 | order: 42 4 | description: 5 | --- 6 | 7 |

Prerender.io integration

8 | 9 | Galaxy provides an integrated pre-rendering service, Prerender.io, to optimize your Meteor app for search engines (SEO). The Prerender.io service is included as part of Galaxy at no additional cost. See [https://prerender.io/](https://prerender.io/) for more information about the Prerender.io service. 10 | 11 |

Add prerendering

12 | 13 | Type `$ meteor add mdg:seo` in your app's directory to add the prerender package. Galaxy will automatically enable the Prerender.io service when you deploy your app. 14 | 15 | If you're using the spiderable package, please remove it, since the prerender and spiderable packages are not compatible with each other. 16 | 17 |

Confirmation

18 | 19 | You can check to see if your changes took hold by running the curl command. If the URL of your app is www.example.com, you would run this command: 20 | 21 | `curl 'https://www.example.com/?_escaped_fragment_='` 22 | 23 | Confirm that the output contains the text that your site shows once the JS is run. If you only see a header and a reference to a script file, you may need to troubleshoot. 24 | 25 |

Testing

26 | 27 | It's easy to run a test prerender server on your machine to check for errors. [As descibed at prerender](https://prerender.io/documentation/test-it), first run these commands: 28 | 29 | ``` 30 | git clone https://github.com/prerender/prerender.git 31 | cd prerender 32 | npm install 33 | node server.js 34 | ``` 35 | 36 | If your site is named example.com, then open another shell and use the command: 37 | 38 | `curl 'http://localhost:3000/https://example.com'` 39 | 40 | You should then see any relevant error messages, if you're experiencing an issue. 41 | 42 |

Administration and Cache Freshness

43 | 44 | The prerendering service offered by Galaxy is designed to provide a shared service across all apps in Galaxy, with pre-determined caching policies and no need for per app management or administration through the service. 45 | 46 | We currently offer a guarantee of at most 4 days as the cache freshness policy. There is no login available to users. 47 | 48 | If you need to trigger your recaches for specific pages, or need to recache more frequently, we recommend that you set up your own prerender.io service. 49 | 50 |

Using your own Prerender service

51 | 52 | You can use your own Prerender service by configuring it in the application settings file (settings.json). If Galaxy finds a pre-configured Prerender service, then Galaxy will not configure the application to use Galaxy's integrated Prerender.io service. 53 | 54 | The token and service URL can be configured via your application's settings.json like so: 55 | ``` 56 | { 57 | "PrerenderIO": { 58 | "token": "yourtoken" 59 | } 60 | } 61 | ``` 62 | 63 | Refer to the [package documentation](https://github.com/meteor/galaxy-seo-package) for more information. 64 | -------------------------------------------------------------------------------- /source/status.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Status 3 | order: 33 4 | description: Learn how to check and follow Galaxy's status 5 | --- 6 | 7 | Galaxy's status is available from the status page at [status.meteor.com](http://status.meteor.com/). All Galaxy issues are posted to the page, once confirmed. 8 | 9 |

Usage

10 | 11 | You can find out about Galaxy issues as they are identified, investigated and resolved through the status page. While our goal is to have as few incidents as possible, the status page will alert you when service interruptions do occur. 12 | 13 | Support collaborates with the Engineering team to make sure the status page is updated in a timely fashion, with brief explanatory status messages. If you have questions about an issue as it develops, contact [support](/support.html) for more information. 14 | 15 |

Subscribe

16 | 17 | Subscribe to our status page to find out about updates in real time. You can select email, SMS, webhook or RSS feed status update notifications, depending on your preference. 18 | 19 | By selecting a notification method, you'll find out about issues potentially affecting your app from the moment the team records work on them. Even if you've already contacted support, the status page update will generally come first. 20 | 21 |

Potential issues

22 | 23 | If you believe you may have discovered a Galaxy issue, or are currently experiencing one that is not noted on the status page, contact [support](/support.html). While our SLA is within 1 business day from the time of your message's arrival, support will usually update more frequently in the event of a service interruption. 24 | 25 | When reporting an issue, please include any contextual information that will help our team dive in (normal container startup time vs. current container startup time, app name, etc.). This will shorten the troubleshooting cycle and generally reduce the time to resolution. 26 | -------------------------------------------------------------------------------- /source/support.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Support 3 | order: 72 4 | description: Learn about support options available in Galaxy 5 | --- 6 | 7 |

Galaxy Support

8 | 9 | You can submit support requests through our ticket platform by visiting [Galaxy support](https://support.portal.meteor.com/servicedesk/customer/portal/1/group/-1). The ticketing page is also accessible from the dropdown menu on the left within your Galaxy account. 10 | 11 | Please note that Galaxy provides support exclusively through this platform. Visit our [pricing page](https://www.meteor.com/cloud/pricing) to see specific SLAs tailored to your app's plan. 12 | 13 | Galaxy's support hours cover all business days (holidays excepted, see the list below) from Monday-Friday, 9AM-5PM Eastern Time. 14 | 15 | Galaxy support is dedicated to resolving Galaxy-specific issues and troubleshooting cases where Galaxy's performance may be at fault. If you surface a bug in Meteor or Galaxy that prevents deployment, or uncover a problem or performance issue with Galaxy as a whole, Galaxy support will work to resolve this. 16 | 17 | While we strive for "best effort" with regard to non-deployment questions pertaining to Meteor, third-party packages and other topics, they are not an officially supported Galaxy subject matter area. Galaxy support does not provide code-level review. 18 | 19 |

Enhanced Galaxy Support Options

20 | 21 | Galaxy customers have the option to upgrade to higher levels of paid Galaxy support for guaranteed response times as short as 15-minutes with 24x7x365 coverage, including critical cases related to application downtime or degraded performance. 22 | 23 | Check our [Premium Support page](https://www.meteor.com/cloud) to learn more. 24 | 25 |

Support Scope

26 | 27 | Because of the wide surface area involved with Galaxy, a number of issues peripherally connected to Galaxy may be classified as out of scope. Questions about an app's performance, stability and implementation are separate from, and different than, supported questions targeting Galaxy's uptime, health, and general deployment capabilities. 28 | 29 | Unsupported issues would include but are not limited to: 30 | - a conflict between a third-party npm package and Galaxy that prevents deployment 31 | - an out-of-date or obsolete third-party npm package 32 | - a question centering on Meteor code or Meteor code snippets 33 | - a DNS issue involving MX records 34 | 35 | If you write in to support about an out of scope issue, Galaxy support will explain its status and decline to continue investigating the issue. 36 | 37 | Please familiarize yourself with our [Terms of Service](https://meteor.com/legal/terms-of-service) and contact support if you have further questions. 38 | 39 |

Venues for Assistance

40 | 41 | Every Galaxy user is also welcome to follow up on GitHub or the forums. GitHub is excellent for tracking issues, while the forums are provided for community use concerning any kind of issue. 42 | 43 | If you believe your issue is related to Meteor, you can [file a bug](https://github.com/meteor/meteor/blob/devel/CONTRIBUTING.md) or add a comment to an existing bug to pursue resolution. 44 | 45 |

Company Holidays

46 | 47 | Non-business days for technical support: 48 | - January 1 49 | - April 7, 21 50 | - May 1 51 | - September 7 52 | - October 12 53 | - November 2, 15 54 | - November 15 55 | - December 25 56 | -------------------------------------------------------------------------------- /source/transfer-apps.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Transfer apps 3 | order: 45 4 | description: Learn how to transfer an app to another account 5 | --- 6 | 7 | You can deploy an application to one Galaxy account at a time. Galaxy utilizes the following policy to select the account to deploy your app to: 8 | 9 | 1. If an application with the specified hostname already exists in an account, Galaxy deploys to the same account. 10 | 2. Otherwise, if you specify `--owner someorganization`, Galaxy chooses the given orgainzation. 11 | 3. Otherwise, if your individual user account is registered for Galaxy hosting, Galaxy chooses it. 12 | 4. Otherwise, Galaxy chooses the first Galaxy organization account that you are a member of. 13 | 14 | If you are a member of two or more accounts, you can then transfer the application to a different account. 15 | 16 | 17 |

Transfer with Meteor 1.3 or higher versions

18 | 19 | To transfer the application, on the command line, type: 20 | `DEPLOY_HOSTNAME=galaxy.meteor.com meteor authorized [your_existing_hostname] --transfer [new_account_name]` 21 | 22 |

Transfer with Meteor 1.2 or lower versions

23 | 24 | To transfer the application, on the command line, type: 25 | `DEPLOY_HOSTNAME=galaxy.meteor.com meteor authorized [your_existing_hostname] --add [new_account_name]` 26 | 27 | You need to have deploy privileges to the account `new_account_name`. 28 | 29 |

Transfer across regions

30 | 31 | To transfer an app from one region to another, re-deploy the app to the target region. 32 | 33 | 1. Deploy the same app code to the target region with a new hostname. Use the DEPLOY_HOSTNAME for the target hostname and set up DNS for the new hostname to point to the target region's ingress point. 34 | 2. Stop the app in the original region. 35 | 36 |

Billing for transferred applications

37 | 38 | The application container usage that occurred while the application was owned by the old account will be billed to the old account. Any new application container usage that occurs after the transfer to the new account will be billed to the new account. 39 | -------------------------------------------------------------------------------- /source/triggers.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Triggers (Auto-scale) 3 | order: 36 4 | description: Galaxy triggers allows you to automatically change your capacity configurations to adapt to traffic. 5 | --- 6 | 7 | Galaxy triggers allows you to automatically change your capacity configurations to adapt to traffic. 8 | 9 | 10 | 11 |

Why

12 | 13 | Triggers provide a configurable way to perform actions in your app, this is important for Professional apps that need to adapt to the demand dynamically. For example, an education app uses more resources during the classes but can reduce the capacity overnight and on weekends. 14 | 15 | We only charge the running hours of each container, so you can reduce the amount of hours you run each month and save money when your app has fewer connections. 16 | 17 | > Triggers are available for all Professional apps. You can configure your triggers going to your app settings on Galaxy dashboard. 18 | 19 | 20 | 21 |

How it works

22 | 23 | If you prefer video, you can [click here](https://www.youtube.com/watch?v=rwLoviLzG6s) to watch it. 24 | 25 | Galaxy checks all the triggers every minute, you don't pay anything extra to run triggers, they run on Galaxy servers. 26 | 27 | Each trigger can perform a different action according to some rules. For a trigger to run the rules need to match, for each trigger you can choose if every rule needs to match (`AND`) or only one (`OR`) in order to proceed with the action. 28 | 29 | You can also restrict your triggers to run only in specific days and/or specific times (interval between hours). The hours are both inclusive, for example, if you want a trigger running only at 1AM you can set `Start hour` and `End hour` to 1. 30 | 31 | It's also available the interval that you want to run your trigger, you can choose how often it will run in seconds (60 seconds is the minimum). 32 | 33 | 34 | 35 | We log useful information for each trigger run, you can check them in the Logs section of your trigger. Reading the logs you can understand why your trigger action is executing and why it's not executing as well, so you can adjust your configurations. Every time you save your configurations Galaxy runs your trigger in the next check round (every minute one check round happens). 36 | 37 | 38 | 39 | We expose Triggers in our Public [API](./api.html) as well, so you can change your triggers programmatically if you want. 40 | 41 |

Metrics

42 | 43 | Triggers use metrics from your app to take decisions based on your rules. You can use the following metrics: CPU Usage (%), Memory Usage (%) and Number of Connections. 44 | 45 | We support three sample durations (`Sample duration`): 5 seconds, 3 minutes and hour so you can select the best duration to check your app metrics. You also select how many samples (`Sample quantity`) do you want to use, for instance, you can select 12 samples of 5 seconds that means you are going to take decisions based on the last minute (last 60 seconds). 46 | 47 | Every metric is extracted from your containers, and then we calculate the simple average between all containers for every sample from the same timestamp. For example, if you have 3 containers and you selected 3 samples using 3 minutes as sample duration you are going to have 3 values that corresponds to the average of your containers 3 minutes ago, 6 minutes ago and 9 minutes ago. 48 | 49 | These metrics are exactly the same you see in the graphs of your container in the Containers tab. 50 | 51 | 52 | 53 | Every rule will be compared with these metrics (the average of your samples for each timestamp) to decide if your trigger action is going to be executed or not. 54 | 55 |

Actions

56 | 57 | We support three actions at the moment, to add, remove, and to kill containers. If you have ideas for new actions please open a ticket (support@meteor.com). 58 | 59 | As the actions to add and remove containers change the quantity of running containers of your app we provide limits for you to set. You can select the minimum of containers that your app should have and the maximum. You can also choose how many containers will be added or removed if your trigger action is fired, this configuration is called step. 60 | 61 | Important: `add containers` action will never remove containers and `remove containers` action will never add containers then make sure you always have both configured with proper maximum and minimum configurations, and they make sense together. Also minimum and maximum are checked before the rules and if they are not correctly this run will fix it. 62 | 63 |

Add containers

64 | 65 | The `add containers` action as the name action name says will add more containers to your app when the rules return true (match). You can configure your trigger as you want. 66 | 67 | Usually you will configure it based on CPU Usage (%) or Number of Connections, for example, if you know that your containers usually handle 500 connections you can add a rule to add more containers when you reach 450 connections per container. It's recommended to use `OR` if you want to use more than one rule here, so if any rule returns true you scale up your app. 68 | 69 | It's important to turn on the [notification](./notifications.html) for the activity `Trigger add containers limit error` so you know if your `add containers` action is not working because you have reached your account limit. You can always ask us to increase your container limit by contacting [Galaxy Support](https://support.portal.meteor.com/servicedesk/customer/portal/1/group/-1). You can check your current limit in your Account settings. 70 | 71 | > This activity was introduced with Triggers release so review your Notifications. 72 | 73 | 74 | 75 |

Remove containers

76 | `remove containers` action as the name action name says will remove containers from your app when the rules return true (match). You can configure your trigger as you want. 77 | 78 | Usually you will configure it based on CPU Usage (%) or Number of Connections, for example, if you know that your app can provide good experience for your users until 70% of CPU then you can add a rule to remove containers when you reach 60% of CPU usage per container. It's recommended to use `AND` if you want to use more than one rule here, so if any rule is still more than expected you don't scale down your app. 79 | 80 | 81 | 82 |

Kill containers

83 | `kill containers` action will kill containers from your app when the rules return true (match). You can configure your trigger as you want. 84 | 85 | This action is the same as clicking manually in the `kill container` icon below each container in the dashboard. 86 | 87 | Usually you will configure it based on CPU Usage (%) or Number of Connections, for example, if you know that your app can provide good experience for your users until 80% of CPU then you can add a rule to kill containers when it reachs 80% or more of CPU usage. Of course, this action is not going to be enough if you don't have `add containers` action working properly as well in case you start to receive a lot of connections as your CPU usage on each container will continue to go up all the time. 88 | 89 | This action is also helpful after a scale up event (`add containers` action) that caused your older containers (containers that were running before the scale up event) to be handling more connections than they should. So this action would force a spread of these connections that were centralized in older containers. As you probably know Galaxy doesn't change existing connections to new containers unless the containers are not available anymore, Galaxy does this to avoid reconnections that could cause more load in your database due to reloading existing subscriptions. 90 | 91 | Another case is when you have different user profiles using your app and some profiles are causing more load than others (heavy users or admins), if you are unlucky you can get a lot heavy users in the same container, causing a huge load on a specific container, so killing this container is also going to cause these heavy users to be spread across containers and improve the experience for your users. 92 | 93 | This action doesn't change the number of running containers, it's just going to force the replacement of a specific container. The same as the `kill container` icon in the dashboard. We don't recommend using this action if you have less than 3 containers running in your app. 94 | 95 | Galaxy is going to redistribute your users (connections) to other containers after this action but if you want to check the behavior of your app in this case, we recommend that load your app in your browser, check in the Dev Tools of your browser the cookie `galaxy-sticky` (the value will be something like `!s6f3HQaHBwacbYAaK-seree`), after the dash you have your container name, then go to Galaxy dashboard and kill this container manually, you are going to see if your app is handling a reconnection properly as Galaxy is going to reconnect your app to another container. Even if you don't want to use this action it is recommended to see how your app behaves on reconnections as they can happen any time a container is replaced. 96 | -------------------------------------------------------------------------------- /source/upgrade-app-plan.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Upgrade your app plan 3 | order: 37 4 | description: Plans are app-based, find a plan to bring out the best of your project 5 | --- 6 | 7 | We have four different plan levels to choose from, which fit many different use cases. Plans are app-based, in the same account you can have apps in different plans. 8 | 9 | - Free 10 | - Essentials 11 | - Professional 12 | - Enterprise 13 | 14 | Deciding which plan best suits your needs will be based on features available for each plan, as well as the container sizes and usage needed for your app. You can learn more about them on the [billing page](/billing.html#billing-usage). 15 | 16 | > Get 20% Discount! Our Savings Plan is a pricing model that offers a 20% discount in exchange for a one-year upfront payment. 17 | > Click [here](/billing.html#savings-plan) to learn more. 18 | 19 | On this page, we will show you step-by-step how to upgrade from one plan to another. 20 | 21 |

Free to Essentials Plan

22 | 23 | Considering you already have an app created in the `Free plan`, signin into your account by acessing [https://cloud.meteor.com](https://cloud.meteor.com) and follow the steps below to upgrade to the `Essentials plan`. 24 | 25 | > Upgrade to the Essential plan to get Unlimited Custom Domains, DDoS Mitigation, Prerender SEO Optimization, Activity Notifications, & more. Plus you can add as many containers as you need with up to 12GB and 12.2 ECU. 26 | 27 | 1- Click on `View App List` to list all the apps you have in your account. If you want to upgrade an app from an Organization click on `View Organizations`, locate the organization you want and click on `View Apps`. 28 | 29 | 30 | 31 | 2- Locate the app from the list and click on `Upgrade`, next to your `App plan`. 32 | 33 | 34 | 35 | 3- See the plan details, and click on `Go to Essential` to upgrade your app from Free to the Essentials plan. 36 | 37 | 38 | 39 | 4- Confirm your choice by clicking on `Continue`. 40 | 41 | 42 | 43 | App upgraded with success! Click on `Stay on Dashboard` to go back to your app page. 44 | 45 | 46 | 47 | You can see that your current plan is now Essentials! Enjoy all the new features! 48 | 49 | 50 | 51 | If you want to take more advantage of Galaxy and take your app to the next level, you can upgrade your app from Essentials to the `Professional plan` by reading this [step-by-step](/upgrade-app-plan.html#essentials-to-professional). 52 | 53 |

Essentials to Professional Plan

54 | 55 | Considering you already have an app created in the `Essentials plan`, signin into your account by acessing [https://cloud.meteor.com](https://cloud.meteor.com) and follow the steps below to upgrade to the `Professional plan`. 56 | 57 | > Upgrade to the Professional plan to make your app more secure using IP Whitelisting, access real-time monitoring with Monti APM, Triggers for Autoscaling, Galaxy API access, and much more. 58 | 59 | 1- Click on `View App List` to list all the apps you have in your account. If you want to upgrade an app from an Organization click on `View Organizations`, locate the organization you want and click on `View Apps`. 60 | 61 | 62 | 63 | 2- Locate the app from the list and click on `Upgrade`, next to your `App plan`. 64 | 65 | 66 | 67 | 3- See the plan details, and click on `Go to Professional` to upgrade your app from Essentials to the Professional plan. 68 | 69 | 70 | 71 | 4- Confirm your choice by clicking on `Continue`. 72 | 73 | 74 | 75 | App upgraded with success! Click on `Stay on Dashboard` to go back to your app page. 76 | 77 | 78 | 79 | You can see that your current plan is now Professional. Enjoy all the new features! 80 | 81 | 82 | 83 | If you want to take more advantage of Galaxy and have a complete custom configuration with private clusters, you can upgrade your app from the Professional to the `Enterprise plan`. Check how you can do that by reading these [instructions](/upgrade-app-plan.html#professional-to-enterprise). 84 | 85 |

Professional to Enterprise Plan

86 | 87 | The Enterprise plan enables you to have a custom infrastructure solution based on your needs. Built to help your team be more successful and stay focused on your product while our DevOps team takes care of an infrastructure built for you. 88 | 89 | **Private Clusters and custom configuration:** you can have a private cluster on Galaxy, with private application machines with custom configuration, custom proxies, image builders, VPC Peering (MongoDB/Redis), and all the customization you need to run your business. 90 | 91 | **Premium Support:** this would promote your support to the Enterprise level so that you could contact us 24/7/365 for urgent issues. 92 | 93 | **Pricing:** the pricing is based on your needs. If we contact us, we can provide you with a rough estimate based on what we have charged customers lately. 94 | 95 | To upgrade to the Enterprise plan, get in touch with us and inform us what your current needs are by accessing [this page](https://cloud.meteor.com/support/?type=enterprise) on Meteor Cloud. Or send an email to support@meteor.com. 96 | 97 |

Do you have questions?

98 | 99 | We understand the hesitation to upgrade your app plan, but rest assured, we're here for you. 100 | 101 | Let us ease your worries by answering any questions you may have so that you can make an informed decision. 102 | 103 | Submit a request through our [ticket platform](https://support.portal.meteor.com/servicedesk/customer/portal/1/group/-1), and we will be happy to help. 104 | --------------------------------------------------------------------------------