Why is deploying meteor apps so "hard"?

@sacha This looks great! Do you know any apps/persons using it?

One git push and you are done

I don’t like the git push method of deploying - like Heroku uses. It dictates your repo structure in that your app has to be at the root level.
Usually I like to keep various other resources/docs etc up there and have an “/app” subdir for deployment.
Current meteor deploy method is preferable.

Yeah, I like that too so I use git submodules :smile:

Seriously, I love deploying with git but meteor deploy is great as well. Whatever works and it’s easy to use.

Hi @babrahams, Scalingo’s CTO here. I’ll answer your questions directly. We are providing a command line utility (http://cli.scalingo.com) which allows you to run one-off boxes, you can then run a precise and interactive task in the environment of your application. Example: scalingo run bash

Concerning the box size, they are limited to 512MB because we strongly believe that divide and conquer is a healthier model, but we’ll provide soon a way to achieve also vertical scaling. We are conscious that for some application the model doesn’t fit so much. For meteor, thanks to sticky sessions and oplog tailing we got a pretty good support of horizontal scaling.

We are working over two datacentres in Strasbourg (FR) and Paris (FR). Concerning the version of mongo, we are now running on the 2.6 branch, but in the next month you’ll be able to choose precisely the version you’d like to use (2.6, or 3.0 concerning mongo). If you’d like to use an existing database from somewhere else, feel free, just add the environment variable you need in our dashboard or from our CLI (or directly use or API http://developers.scalingo.com)

It’s always the same concerning mup, we’re providing a service, so you’re not responsible of the server behind your application, we handle security update of the underlying operating system, if it crashes or anything, your app is automaticaly restored somewhere else, scalability becomes easier.

6 Likes

Wow! That was one of the most clear and comprehensive replies I’ve ever got. Nailed every point. Thank you!

Come Meteor Galaxy, save us from deploy drudgery!

3 Likes

(Edit: wow, didn’t realize this threat was THAT old :D)

Damn, as much as I LOVE² Meteor and MDG (and wow, I do! :D), I wish Galaxy would work like Scalingo does. Just type a deploy command and grab a coffee.

I know there also has been a lot of praise (by community-members i respect a lot) and theres a great tutorial about how to get Galaxy going for you. But well… someone had to write a tutorial. Shouldn’t that be unnecessary? :smiley:

Anyway, no big problem.
I guess the more deploy options the better?

Just came to this thread to give credit where credit is due:
I’ve had a great time with Scalingo so far.
It just worked perfectly for me, even with suff like GraphicsMagick out of the box.

Today was the very first time I encountered an error with the deploy step. So I thought I’d drop them a quick email to ask for directions. But while I was typing I recieved an email from them. They fixed the error even before I could ask for help :smiley:

That was a nice experience.

PS:
Still wish all the best to Galaxy and will use it for some projects in the future to support MDG :slight_smile:

I know this post is quite old but well, all information about Meteor is always received with open arms :slight_smile:

I just finished read all replies and sounds interesting but like always with Meteor, different ways to do something and besides with old Meteor versions (Meteor-UP sounded good but last changes were half a year ago EDIT: I just found the new repo).

I started to use Meteor in version 0.8 I think and now I getting back to use it in version 1.3 (even just right now Meteor 1.4 has been released).
Is quite difficult to find something useful and updated as well.

I’m developing an app with Meteor for Android’s Market. In this point I would have to test it in a real server, but I’m really lost. I have to use a hosting (I’m trying Heroku), mLab to host my Mongo collections and another CND host (I have to upload pictures) because obviously I’d like to start with a free plan to do the jump later.

I understand you when you say the deployment is a huge mess. I’d like to find something free and limited and figure out how to work with a server + an apk on Android’s Market.

Any help would be really appreciated :grin:

There are several threads here on using meteor-up-classic and also docker-based meteor-up. Some very recently.

Yes, I just realised there is a new version of meteor-up. I thought it was deprecated.
I’m trying it now.

Yes, I can definitely recommend using mupx, it’s awesome. It took me half a day to get my Meteor app up and running on AWS, including learning how to use mupx and set-up an EC2 instance, which was an overall fantastic experience. The only confusing part is choosing which flavour of mup(x) to use :slight_smile:

Never heard about Scalingo, but sounds promising! Greetings to Strasbourg from a start-up based in Karlsruhe :slight_smile:

1 Like

Any luck getting things to work?

@aadams, I added my Heroku hostname (not IP: https://devcenter.heroku.com/articles/custom-domains), user (in this case would be my email) and password.
I added the name and the url of my collection in mLab.

Not sure if I have to add something else or not. Anyway, when I run mup setup nothing happens.

for me deploy on meteor is a totally nightmare, meteor is easy and fast, but the deployment not, i use mup, mupx, demeteorize, and i can’t configure google cloud or aws.
modulus is easy to deploy, but don’t have a lots of apy like google o aws. and i need to use s3 to upload the images. in the last time, i can upload with elastic beanstalk of aws (but only the meteor test app, when i have a my personal app, have a problem with node). i use sudo meteor build bundle on linux, make the .tar.gz file, uncompress the file, open terminal write npm install (with a package i have when dependencies like underscore, semver, etc…) and try locally the node.js app whit root_url=… mongo_url=… node main.js.
compress on zip file and upload to elastic beanstalk, AND DON’T RUN EVERY TIME!!!
agggggg…

i need a good tutorial, i read all the documentation of ec2, elastic beanstalk, codeCloud, compute Engine, app engine, kubernet, docker. and a lot of services.

i miss the old days, a ftp like filezilla, copy folder and f5!

Hey @levanlacroix , check Modulus out.
They give you $15 (you waste 0.07 ph ) and helped me with the deploy issue that I had.

When everything is running ok you only have to do in your terminal modulus deploy to deploy your latest changes.

I’d suggest to configure the minimum memory and servos at beginning to save money with the $15 budget. Really useful if you want to try your app on a real environment and still working on it.

Mine is running here: http://foodapp-88007.onmodulus.net/

The only point is I had to use mLab instead Modulus database to run my app.

BTW, I have to upload images with my app as well and I’m using a free CDN called Cloudinary and so far so good.

Tutorial: https://help.modulus.io/customer/portal/articles/1647770-using-meteor-with-modulus

If you need help just tell me :wink:

1 Like

modulus is the only easy solution, i use that, and have the configuration easy of mongodb and have grapicsMagick pre installed. but for billing propouses i need to use only one server for all (storage indeed).
actually the best solution i found is google app engine, and upload with gcloud (previusly build app) storage with slingshot.

but, a launcher on google launcher is the best option, its a shame bitnami not propouse that solution.

I’d like to use something related with Google because my apps are for the Android’s Market. Did you try it?
But the cheaper hosting I could find was DigitalOcean, but not tested yet:

$0.007/hr
512MB Memory
1 Core Processor
20GB SSD Disk
1TB Transfer

Digital Ocean works great. It’s the easiest solution I have come across with. I have 4 apps, with each on a separate server for stress-free deployment.

I use mup with only the settings settings modified from the original initalized mup.js. You HAVE to use abernix/meteord:base otherwise deployment fails miserably. I have no issues so far.

Modifying the mup.js for a successful deployment
TIP: ignore //dockerImage: 'kadirahq/meteord' comment and follow the configuration below b/c that’s incorrect configuration in the initalized mup.js


meteor: {
        ..., 

        deployCheckWaitTime: 60,
        docker: {
            image: 'abernix/meteord:base',
        },
        ...

I’ve seen several posts about hosting multiple apps on same server using reverse proxy with nginx and mup does support that but I havent tried that yet.

Hosting External Mongo DB’s
I even have an external mongo instance running on MongoLab for data safekeeping (especially when your app is at production). The only catch is that you have to remove the mongo settings in mup.js for docker to not initialize a internal Mongo process on the server and have something like this:

 meteor: {
        ...,
        env: {
            ROOT_URL: 'http://staging.cinesigns.com',
            MONGO_URL: 'mongodb://[your external mongo instance URL ]'
        },
       ...,
    }
1 Like

So @sethjgore are you paying 4 different servers then? Do you know how manage this with just one?