- Allow customizing the docker image created during Prepare Bundle. For example, this can be used to install packages using apt-get.
mup statuswill check if the default shell is bash- Mup will exit when a hook script fails
- Fix running
mup restart - Fix passing arguments to
docker logswhen they are in the format--option=valueinstead of--option value - Fix the validation error that the port is ignored showing when it shouldn't
- Fix loading plugins when given the path to the plugin instead of the plugin's name
Docs
- Move plugin documentation to seperate page
- Improve Let's Encrypt documentation
- Rename the
meteorproperty toappin all of the examples - Fix links in the getting started tutorial
- Many small improvements to the content and wording
- Support different settings.json for different servers (@Farkal)
mup validateshows message when config is valid- Fix crash when the
appproperty exists in the config, butapp.pathis missing. - The
Prepare Bundletask is now only shown whenPrepare Bundleis enabled - Hide
No such containererrors in the script for Prepare Bundle since they are normal and could cause confusion on what caused the script to fail - Add validation warning when using the built-in mongo and the MONGO_URL looks like it is for an external database
- Improve error messages when a config or plugin is unable to import a module
- Fix postinstall script for windows
Plugins
- Improve error message when an executeScript task has an invalid script path
- The config supplied to validator functions now has a
_origionalConfigproperty, with the config before it was normalized or prepared by plugins - Fix the meteor plugin preparing the config when the app type isn't
meteor - Fix validator utils
addLocationending location with a period when a detail's path is empty
- Fix
Start Meteortask always succeeding despite errors starting the app when usingPrepare Bundle - Fix
Verifying Deploymentwhenapp.env.PORTis set - Fix
Verifying Deploymentwhen using the host network - Fix
proxy.setupwhen runningmup setupfor the first time - Fix
app.docker.imagePortdocumentation
Plugins
- Add
pluginApi.commandHistoryto check which commands have run
- Add additional logging to the Verifying Deployment script
Status
The mup status command gives an overview of what is running on the servers and shows any problems plugins detected.
Reverse Proxy
- The reverse proxy is no longer an "experimental feature"
- Add support for customizing the generated nginx config
- Add
mup proxy nginx-configcommand to view the generated config HTTP_FORWARDED_COUNTdefaults to 1 when using the reverse proxy (@jehartzog)- Fix verifying deployment when using the reverse proxy.
- Fix deploying when
app.env.PORTis set to a value other than 80 - Fix setting up proxy when using a non-root user
Mongo
- Oplog is automatically enabled. To use, set
app.env.MONGO_OPLOG_URLtomongodb://mongodb/local(@edemaine) - The
Start Mongotask now waits until mongo has sucessfully started before finishing - If mongo fails to start, the
Start Mongotask will now fail
Depreciations
meteor.ssl, meteor.nginx, and meteor.docker.imageFrontendServer are depreciated. It uses a different implementation for custom certificates and lets encrypt, each with different features and restrictions. Also, the custom certificate implementation has security problems. The reverse proxy should be used instead. It doesn't have the security problems, uses the same implementation for custom certificates and lets encrypt, and has many additional features. Learn how to use the reverse proxy in the docs.
proxy.shared.clientUploadLimit is depreciated. Use proxy.clientUploadLimit instead, which allows each app to have a different value.
Other Changes
mup initwill create a.deployfolder when run in the same folder as a Meteor app- When mup can find a meteor app near to where
mup initis run, the default config'sapp.pathwill be the path to that app - When a deploy fails, the last 200 instead of 100 lines of the app's logs are shown
- More of the output is shown when a command fails
- When copying a file fails with the error
No such file, it will tell the user to runmup setupto fix it reconfighooks will now run duringmup deploy--showis no longer needed to show the config whenmup validate --scrubis run- Add section to readme about Meteor compatibility
- Initial work has been done to support Docker Swarm
- When there is only one server,
mup sshwill not require the name of a server - Add
zodern/meteorto list of images that Prepare Bundle is automatically enabled for - If the app's docker container is restarting during 10 checks, the Deployment Verifier will revert the app without waiting the full time in
deployCheckWaitTime - Some of Mup's dependencies use Buffer.alloc. When the version of node used to run mup is missing the function, mup will show a message explaining the problem and exit
- Added 10 second timeout to the curl command in the Deployment Verifier
- Fix retry logic for the copy file task
- Fix
mup restartandmup meteor restartwhen config has anappobject instead ofmeteor - Fix running Prepare Bundle when image already has a
/built_appfolder - Fix alignment of list of servers when running
mup sshwithout specifying a server - Fix showing stack trace of errors with old versions of Node
- Fix plugins preparing the config multiple times
- Fix loading locally installed plugins
npm installwill still succeed even if Open Collectives's post-install hook fails
Docs
- Document using a private docker registry (@justinr1234)
- Document
HTTP_FORWARDED_COUNT(@jehartzog) - Change
app.buildOptions.debugtofalsein example configs - Add section to readme about changing the docker image
- Add the
zodern:meteorimage to list of docker images - Improve the style of tables in the docs
Plugins
- list.executeScript supports server specific variables
- Using the
post.statushook, plugins can show their status - Plugins can add a
solutionproperty to errors. Mup will show the solution in yellow before exiting - Plugins can add a depreciation warning while validating a config with
utils.addDepreciation - Validator utils support joi v11, v12, and v13 in addition to joi v10.
- Fix permission denied error sometimes encountered during Prepare Bundle
- Fix permission denied errors when deploying to nonroot user (@nickich)
- Make bundle portable (@m-niesluchow)
- Fix tar errors
- The validation message shown when the
serversobject is missing from the config has been removed since some deployment plugins might not need it - The config created by
mup inithas the correct docker image for Meteor 1.6 - Add table to docs that shows which docker image to use for each Meteor version
Plugins
- The remaining Meteor functionality has been removed from the default plugin, allowing plugins to completely take over deploying and managing the app when
app.typein the config is set to something besidesmeteor
- The exit code for
mup validateis now 1 when there are validation errors - Fix changing proxy's clientUploadLimit with
proxy.shared.clientUploadLimit - Added a
--scruboption tomup validate, which when used with--showshows the config with most of the sensitive information removed mup mongo logsaccepts the same options asmup logsand other log commands- Use npm-shrinkwrap to prevent zodern#757 from happening again
- Hide docker error when trying to roll back and checking if an image exists. It is handled and normal, but could be confused with the reason for the app failing to start
Plugins and Hooks
- Building the app (but not archiving it) was moved to a new command
meteor.build, which is run bymeteor.deployandmeteor.push. This allows plugins or hooks to modify the bundle before it is archived and uploaded to the servers. - Plugins can export a
scrubConfig(config, utils)function, which should return the config with all sensitive information removed api.scrubConfig()was added, which returns the config after modified by anyscrubConfigfunctions from pluginsapi.validateConfigonly shows the errors on the console the first time it is runMODULE_NOT_FOUNDerrors are now shown when a plugin fails to load due to being unable to resolve a module
Docs
- Color, font, and spacing changes were made to the docs. It should look nicer and be easier to read.
- Fixed grammar and capitalization
- Many example configs in the docs are validated with
mup validate - Many example configs show more of the config surrounding the section being documented
- Add
mup validatecommand, which validates the config. Has--showoption which shows the config after it has been normalized and modified by plugin'sprepareConfigfunctions - Add
mup proxy logs-leto view the Let's Encrypt logs - Fix mup ignoring
app.dockerImagein the config when using Mongo, the reverse proxy, or Redis - Fix error encountered during Verifying SSL Certificates after it had failed previously due to a docker container still running
- Give more details when unable to load settings.json
- App's env variables are set before
npm installduring Prepare Bundle - Fix error sometimes encountered when starting app after updating Mup to 1.3
- Periods are removed from the database name when using built-in MongoDB
- Removed validation error
"meteor.name" has a period - Fix Prepare Bundle when app name has uppercase letters
- Fix reverse proxy's let's encrypt and force ssl not working when
app.envis missing - Fix crash when
app.nameis missing
- Add
mup ssh <server>command - Exit code when task list fails is now 1 instead of 0
- Fix deploying when server's default shell is zsh @thsowers
- All docker commands are run with
sudo mup proxy stopdoesn't require theproxyobject to be in the config- Add option
app.docker.prepareBundleto enable or disable prepare bundle
Hooks
It is now possible to add hooks that run before or after commands. The new --show-hook-names option shows all of the available hooks for a cli command while it is running. Hooks can be a command to run locally or on the servers, or a function.
Plugins
Plugins are npm packages that can add commands (commands can be run from the mup cli or by other plugins), hooks, and config validators. All of the included cli commands and task lists have been moved to plugins.
Changes to Deployment and Deployment validation
This is currently only enabled for the abernix/meteord docker image.
After the bundle is uploaded to each server, a new task is run called "Prepare bundle". It installs the Meteor npm dependencies, rebuilds native modules, and stores the result in a docker image. This has a few benefits:
- The time in
meteor.deployCheckWaitTimeno longer needs to include the time to install npm dependencies - When installing dependencies fails, it does not continuously restart until
meteor.deployCheckWaitTimeexpires, and running with--verboseshows the full logs fromnpm install - Dependencies are only installed once during each deploy. This means that
mup start,mup restart, andmup reconfigare all much faster.
Improved Support for Multiple Servers
mup restartrestarts only one server at a time- Add
--serversoption to list which servers to use - Add support for server specific env variables, which can be configured in
meteor.servers.<server name>.env
Config Changes
- The
meteorobject has been renamed toapp. Themeteorobject will be supported until Mup 2.0 - You can remove
mongo.portandmongo.oplogfrom your config since they have never been used
Docs
- Remove
meteor.docker.imagePort,mongo.port, andmongo.oplogfrom example configs - Document
meteor.docker.imagePort - Update documentation for
meteor.deployCheckWaitTime - Improve mongo, migration, proxy, and troubleshooting docs
Other Changes
- The reverse proxy can redirect
httptohttps, configured withproxy.ssl.forceSSL mup setupupdates Docker if it is older than 1.13- Add
mup proxy reconfig-sharedto update the server after changingproxy.sharedin the config. - Remove
meteor.deployCheckWaitTime,meteor.docker.imagePort, andmongo.portfrom default config - Renamed the
meteorobject in the default config toapp - Improve cli help output (commands have a description, command specific options are documented)
- Show link to docs when there are validation errors
- Show validation error when
server.pemis a path to a public key - Show validation error when
app.namehas a period - Improve some of the validation messages
- Fix validating
proxy.shared.clientUploadLimit - Mup displays message and exits if the node version is older than v4
- Remove unnecessary stack traces when the app's path is incorrect or
meteor buildfails - Add
mup meteor restartcommand - Remove
mup mongo dumpcommand since it did nothing
- Deployment verifier shows last 100 lines of the app's log when it fails (it previously was 50 lines)
- Fix
mup setuprestarting docker
- Deployment verifier no longer requires the http status code to be 200.
- Add shared nginx proxy
- Is configured with a
proxyobject instead of usingmeteor.sslandmeteor.nginx - If multiple apps are deployed to a server, routes requests to the correct container
- Adds
mup proxycommand. For a list of subcommands, runmup proxy help - Supports using custom certificates. This should be used instead of
meteor.sslsince the previous image used for custom certificates had a security vulnerability. - Also can set up Let's Encrypt
- Supports configuring the env variables for the nginx and let's encrypt containers.
- Is configured with a
Big thanks to @shaiamir for his work on the shared proxy.
mup stopalso stops nginx proxy and let's encrypt containers- App inside container's port is set to
docker.imagePort. The app is still accessible onenv.PORT. - Will build app if cached build is not found and
--cached-buildflag is set - Fix some bugs with verifying deployment
- Add support for
zodern:mup-helperspackage. Since version 1.2.7, verifying deployment fails if the app's/route's http code is other than 200, or if it does not redirect on the server to a page that does have that http code. Addingzodern:mup-helpersallows meteor up to successfully validate the deployment.
- Fix verifying deployment when using ssl autogenerate
- Add default host to nginx-proxy to redirect unknown hosts to the app when accessed over http
- Remove
force-sslwarning and add a note about redirects to the Troubleshooting guide in the readme - Fix example config in readme @meteorplus
- Fix setting
HTTPS_METHODfor nginx-proxy. It will no longer redirect http to https - Validator warns when using ssl autogenerate and setting
env.PORT.
- Fix
force-sslwarning appearing when ssl is setup correctly
- Support changing docker exposed port @abernix
- New
mup docker restartcommand - New
mup docker pscommand. It accepts all arguments thatdocker psaccepts - Old ssh key and bundle are deleted before uploading new ones
- Setting up Mongo and Meteor are no longer in parallel
--verboseflag also shows output from scripts run on the server- MongoDB is safely shutdown for
Start MongoandStop Mongotask lists - Reduced number of dependencies installed
- Better error message on meteor build spawn error
- Setup tasks are consistently capitalized
- Clearer validator message for
ROOT_URL - Add warning message when using
force-sslwithout ssl setup - Validate
meteor.ssl.upload@markreid
- Add tips to default config, and comment what needs to be changed
mup initandmup setupsuggests what to do next- Startup script is updated during
mup reconfig - Default build path is consistent between deploys for each app
- Add
--cached-buildflag tomup deploywhich uses the build from the previous deploy - Configure additional docker networks, ip binding, and verification port @giordanocardillo
- Add
--verboseflag to show output frommeteor build - Handles promise rejections
- Fix docker not always disconnecting containers from networks @joaolboing
- Fix stderr sometimes in wrong place in logs
- Fix some lines in logs would be missing the host name
- Fix validating buildLocation
- Fix path to temp folder on Windows
- Default config uses meteor.docker object instead of dockerImage @maxmatthews
- Docker args from config are no longer escaped @maxmathews
- Add buildLocation for validator @stubbegianni
- Improved messages from validator
- Fix nginx-proxy not starting on server restart
- Fix documentation on changing port @maxmathews
- Configure nginx max client upload size, and increase default to
10M(@shadowcodex) - Displays better message if it can not find the meteor app
- Displays message if can not find pem for server
- Improve validating server's
hostin config - Validator checks for
http://orhttps://inROOT_URL - Update documentation on using
mupon Windows
- All paths support "~"
- Add
serverandallowIncompatibleUpdatesto build config (@alvelig) - Allow
mobile-settingsbuild option to usesettings.jsonfile (@alvelig) - Add
mup --versioncommand - Fix validating env
variablesandimageFrontendServer
- Support Meteor 1.4 by default (@ffxsam)
- Change mongo version
- Validates
mup.jsand displays problems found in it - Update message is clearer and more colorful
uploadProgressBaris part of defaultmup.js- Add trailing commas to mup.js (@ffxsam)
- Improve message when settings.json is not found or is invalid
- Loads and parses settings.json before building the app
- Improve message when given unknown command
- Fix switching from auto-generated ssl certificates to upload certificates
- Fix
Error: Cannot find module 'ssh2' - Fix
mup logswhen using custom configuration or settings files
- Fixed
mup setupwhen using let's encrypt
- Fixed some files had windows line endings
- Add let's encrypt support (@mbabauer)
- Fix typo (@timbrandin)
- Help is shown for
mupandmup help - Improved help text