Alternative to or guide to deploy without using mup/mupx?

I started working with meteor about a year ago, and found mup to be a handy tool for deployment. However, now mup doesn’t work well with 1.2 apps, and even when overridden to use node 0.10.40 instead of it’s default 0.10.36 kicks back “requires 0.10.40” errors on deployment. The response to this and just about any other problem seems to be “try mupx”, which not only isn’t really done yet, but has a whole different set of requirements that aren’t documented, and of course, since it uses docker containers, requires changes to any app that interacts with the filesystem (changing process.env.PWD, and not allowing for writing to server filesystem or persisting data).

After spending a week rewriting internal apps to work with mupx, and not being happy with the results, and then trying a deployment to a remote Ubuntu 12.04 server, getting “Docker installed successfully” on setup and then “docker command not found” on deploy, since docker wasn’t actually successfully installed, as it requires kernel 3.8 or higher, which mupx fails to mention, I no longer feel mup/mupx are dependable or production ready.

So what’s the best alternative? I’ve done enough searching about that I am pretty sure there’s not anything quite so automated or handy to use as mup once was, but does anyone have a link to any good, up to date guides to step through deploying an app without using mup/mupx?

2 Likes

I switched to Galaxy Developer Edition and have been loving it. It’s faster than my Digital Ocean setup, actually has a UI, and hasn’t given me any problems.

I use NodeChef and their step by step guide to deploy a meteor app is pretty simple and easy to follow. You can focus on your app while they take care of everything for you, from the app servers to the database servers. https://nodechef.com/deploy

Nice. The original Galaxy pricing put it out of reach, but Developer Edition looks like an affordable option.

NodeChef looks like an interesting option, I will check it out further. thanks!

I tried out deploying a bundled app to a remote Ubuntu server using Passenger, and that actually went pretty smoothly.

1 Like

Sorry to hear about your problems with mup/mupx! There can definitely be issues when using them, but overall they work really well. Regarding the node issue with mup, maybe just double check your node version is really set to be v0.10.40 on your destination sever (via something like nvm use v0.10.40).

Galaxy, Modulus.io, Scalingo are probably the easiest to use turn key solutions for Meteor hosting, but I’ll throw out another (recent) alternative - Check out the Microsoft Azure demeteorizer project. The Azure team received a lot of requests about Meteor hosting, and have come up with this.

Thanks for the tips, I will check out those options.

Meteor-Up just seems to be in a state of flux right now. I exhausted most every solution I could come across trying to get it to work. Definitely confirmed my node version, as well as having it set in the mup.json config. Was odd to be sure that it continually insisted I wasn’t using 0.10.40. Eventually I realized even if I got it working, the future of mup is mupx anyway, and while deploying to docker containers will be great in many situations, I have a few where it actually will add uneeded layers of complexity to otherwise simple/elegant apps. So, time for me to research alternatives, and also a good idea to finally learn a bit more about the deployment process and a little more about node. Meteor is great at making things easy for us, but the more we understand the nuts and bolts and what’s happening under the hood, the better in the long run.

1 Like

so what are you using now? I am wondering because und don’t want to use Docker, but I think many services are using it too, right?

Just for reference, I’m happily using Mup ( not MupX).

When I was on 1.2 I did have problems with React( Had to stick to a specific version of react, see this Git Issue)

Now, I refactored to 1.3 and modules, and Mup is working like a charm. Not a single hiccup.

Deployment is on a Ubuntu 14.04 instance on iwStack.com, which is very cheap ( something like 4.3 euro per month for a 1.5Gb 2vCpu with 10Gb SSD ), but you have to do all the setting-up yourself.

eleventy

I’m now using Passenger. It’s a bit of a manual process, but really as quick and easy as Mup once set up. My only concern with it is that it uses the meteor bundle command, which is deprecated. But it’s just a process of bundling, uploading the bundle, then running a shell script I wrote that unpacks the bundle, moves things to the right place and installs the correct bcrypt module for the production server.

I’ll still be revisiting Mup/MupX in the future, and will keep Docker in mind when designing apps. A lot of services are using it, though it’s hard to say whether that’s a great thing, or just the overhyped technology of the moment. But containers and microservices and such seem to be all the rage right now.

I did manage to get Mup working again for an internal app deploy, so that was a relief, as it wasn’t meant for Docker, and refactoring it to work in a container without filesystem access made simple functions about 10x more complicated than necessary. I can’t recall what exactly I had to reconfigure to get Mup working with 1.2, but it is possible to do. Haven’t tried it with 1.3 just yet, but will be soon.

I have deployed onto Google Compute Engine cloud using Docker containers and kubernetes … here is a great tutorial which gets your nodejs app up and running … to transform my meteor app into nodejs I just used the canonical :

# find dir of this deploy shell script
current_dir=`dirname $0`
if [[ $current_dir = '.' ]]; then
       current_dir=$PWD;
fi

source ${current_dir}/config # jack up with env vars

# build app for deployment

cd ${SOURCE_REPO_DIR}

meteor build  --directory ${BUILD_DIR}

cd  ${BUILD_DIR}
pushd bundle/programs/server/ &&   npm install  &&  popd

# create a Docker container image

cp -p ${CONFIG_DIR}/Dockerfile ${BUILD_DIR}/
docker build --tag  gcr.io/${PROJECT_ID}/${GKE_APPNAME} .

# push image to cloud
gcloud docker push gcr.io/${PROJECT_ID}/${GKE_APPNAME} 

Above gets the server side meteor app in the cloud as one Docker image. Above link describes the brunt of using Google Cloud to setup Replication Controllers and Services to launch and network link the containers using command line tools gcloud and kubectl.

I looked at mup/mupx but did not see any value add there beyond what I show you here

I use gce in test, i deploy my application with mupx and use cfs:gridfs, i don’t have a problem but i can’t install graphicsmagick, you know how install this directly with the ssh putty or ssh online?