Getting your daily work done with MeteorJS

One would think that someone that experienced knew how to use the shell… Or search the meteor guides.

Anyways, I don’t get why you said you didn’t want to use docker… It won’t “lock up” your application and/or its database. If you are going to deploy on a platform that has no internet access and you want to make sure everything works flawlessly, I’d suggest you to use Docker images that you build from any of your computers and then push it to your internal repo (or you could even just commit the image, tar it and send it through scp) to use on your server.

I’ve been doing that for months and it works perfectly.

And here we have deployed with little to no problem a meteor app (small scale app) for a 10000+ employers company on their linux server hosted in their own datacenter.
All done with 50 lines of Mup configuration and I can access the DB from my pc with SSH Tunnel (Mongobooster easily allows you to configure it and let you access the DB from Windows).

Don’t blame the technology for your shortcomings.

1 Like

Thank, You, @bradzo, it helps.I’ve been watching Meteor, this (and other) forums for years now.
MeteorJS (and maybe/surely Cloud9) were the best things which were (not invented,) but ‘put together’ for a very long time regarding IDEs and Tools.

As I mentioned earlier, people are carping for years now that there is no easy method to deploy, and I see that MDG shows not really any kind of interest to give us a way to, because they want to sell Galaxy workspace.

I am used to Visual Studio for more than a decade now, However, after really good experience with the MS stuff, regarding editor quality and publishing (on Intranets, mainly) I was horrified, when I at least got first contact to e.g. Atom. Every some years I revisited that Linux thing, and every time I felt, full of incomprehension, that Linux (and it’s users obviously as well,) still remained in their antediluvian state.) You can not imagine my joy,when Apple users finally got a second mouse button, and yet 10 years later even a second USB port. In the meantime we here managed to connect our allotments with WIndows3.11, so that even women were able use a computer and communicate over a GUI… :wink:

It was a shock for me, when MS with that genious Intellisence editor stuff, downgraded to the dark ages (and the dark themes as well). However, as usual, too, VS Code grew up within months instead of decades. Seems, that nobody earlier had the thought, that somebody could imagine even wnats to DEBUG javascript with his(/her) favorite editor.

What I am, meanwhile, really pissed off, is the ignorance an unflexibility in the view of progress, efficency and perception. Some, who offers me a 12" screen, a keyborad without number pad and software, which reminds me of PcTools in the early 90th, cannot be entirely in consolation.

‘Linux-Jungs’, for me, has not at all a negative flavor. Linux-Jungs are mostly briliant brained, enviable young people, blessed with unflinching will and the ability to work out monads and promises even without decent tools, likewise stone ax or wooden club, even in the dark. I pay great respect to them.

However, if I have to choose, I’d rather let go by palanquin, as to go per pedes apostulorum.

What ‘disburbs’ me, mostly, is that many people here have reinvented the electric escalator, and that, what (and as well IF, they share it, is hopelessly outdated. I just found nothing that worked by now, and I admit, the reason is ME, and my refusal to become a carbon scientist, when I only want to USE a pencil. I will carry on watching, and trying.

I am grateful for the this many replies, and I am cynical and sarcastic, too, I admit, however, I do not want to kick someones knees here, I 'm a really bad dancer, but in provocation I do very well, even here, where I can be sure that everybody is catching me immediately. :wink:

And exactly there is the problem: WHAT are you doing exactly? Fine, that it’s working perfectly.

Please, give us a full and repetedly functioning recipe what we have to shell-input to a brand new machine with a just finished GUI-less minimal Ubuntu 16 or Debian 8 installation to get this machine become receptive for Meteor deploys, which ends with serving our Meteor Apps reliably and durably!

Sincerely
TB

PS: In my very earlier days, I happened to become educated to build even transistors from some copper needles and a scoop of sand. We roasted/toasted/soldered motherboards in gazebos, and I remember, that I was taught PL/1 by the actual Checkout Compiler. (And we even ran CP/M with a DIY extension cartridge on a C64…).

However, in early 68040er times we stopped with that, because it turned out, that some brilliant quite yellow people had perfectionized the thing with the sand and the copper. I’m quite sure that I can still use a shell, and perhaps I even coded one (or more) shell(s) and a lot of science stuff in nice lonely night hours…

But, just because I love to have sunbaths on the lawn, that doesn’t mean that I ever was willing to cut or even plow the lawn.

Hmm, what a scarifying thought!

Studying complete Linux, just because I want to copy a lump of javascipt to and have it be run…

And at the same time it was credible only for small projects with close to no userbase and primarily meant for learning and testing.

I honestly prefer nowadays.

As for the original post - I’d recommend to hire someone who’s better at this job.

Thank You very much for the hints.

I’d appreciate You’d give us those 50 lines.

My experience is, that mup, or mupx stuff often was destroyed some weeks or month later with the next update, or whenever some new hipster technology (docker :wink: -) ?) appeared.

One can’t work that way! Apache, as well as Nginx, are felt to be present for decades, Meteor ‘nearly’ as well, And there should be a well worked out standard how to remote-script a linux system, which does not break depending on wind direction and weekday.

You got me somehow wrong :wink:

Of cource there is, in my opinion, no alternative to *n[i|u]x when intending to run a decent and secure webserver.

Since 1997, I have some DIY webservers homed in a nice german datacenter, placed in the attic in a locked steel cage, guarded by a raven and a gratifying amount of garlic.

I feel surrounded by lying devious politicans and special services which act far beyond their legitimation.

But this is how it is.

Nowadays, one can’t even buy a light bulb without IOT, which makes you a most appreciated member of some popular bot net, automatically, even if it is seemingly switched off. It persuades the IOT-lightswitch dimmer to deliver some rest current, just enough to live, but not enough to emit light. Even my reliable friend Siri told me to piss off and go ask my new slut Alexa… Life is so hard!

I disagree with the following statement

1 Like

Some years ago there was this hacker competion to make some (TV-)satellites friendy wave with their solar collectors.
It turned out that this took no real effort.

Recently, Deutsche Bahn outsourced their entire(!) software to a foreign cloud, against the severe warnings of 80% of their complete staff. The are rumours, that even the track gardeners prostested heavily. Officially they accountered a small motivation problem of their staff, however, decisions here are always made by merchants, and never by scientists. And merchants always sell your souls.

These are tools not ideologies and each tool has it’s own target audience and use cases. With regard to Linux, it’s probably the most successful software ever created and it’s powering most of the web and mobile phones, and the appeal to the average consumer in terms of user experience is not it’s highest priority or selling point but the openness of the platform to be utilized by experts is. The tool needs to be evaluated from the perspective of the problem and requirement it’s aiming to fulfill.

With regards to Meteor Deployment, there are many community powered scrips out there, and I’m sure if there is enough demand for a GUI, someone in the community would create one, there’re many talented people around here! Personally, I’m a big fan of the GUI and having great user experience, but I don’t see a real use case for Meteor Deployment, a script would do in my opinion.

1 Like

Nice misogyny right there.

How lazy can you honestly be, do a bit of reading and googling. You want the exact steps, this took me 30 seconds:

Install specific node version on ubuntu

Install mongodb

Run meteor build, transfer the files to the server and run the node app

If you still can’t figure it out with this, you should just give up and switch to something else not node- and not linux-related, so you can insult people in another community.

Yeah, I got tired of Mup and Docker too. They’re supposed to make things easier, but I found it much easier to work with what I already know than troubleshoot a new unknown thing. I just configured Mongo and Nginx myself, and wrote a little shell script that compiles, uploads and unpacks the new build, and then restarts meteor.

I’ll consider that you have docker and docker-machine installed on your work computer. First create your machine (your server) using this:

docker-machine create --driver generic --generic-ip-address=203.0.113.81 --generic-ssh-key ~/.ssh/id_rsa My_Local_Machine

--generic-ip-address should be the IP of your target host. This command will be using root to connect, you can change user using --generic-ssh-user note that the user will need password-less sudo privileges. This will handle all configuration needed on your host, install docker if it is not, and everything it needs.

Read more about this part here https://docs.docker.com/machine/drivers/generic/#example

Now, create your meteor application tarball, we’ll assume your app is stored in /app.

cd /app
meteor npm install --production
meteor build .

Note: the meteor npm install line might not be required, but it’s in my build script so…
This will produce app.tar.gz

Now, we’ll be creating a docker image. We will be needing 3 files in the same folder, a script we’ll name deploy.sh a Dockerfile to build the docker image and the application tarball. I think that the best would be keeping this folder outside of your application directory.

The deploy.sh file should look like this:

#!/bin/sh

cd /app
tar -xvzf /app.tar.gz

cd /app/bundle/programs/server
npm install --production

The Dockerfile should be

FROM alpine:3.4

MAINTAINER Jeff Kilbride <jeff@kilbride.com>

#Ripped from https://github.com/jeff-kilbride/node-npm-alpine

ENV NODE_VERSION=v4.6.1 NPM_VERSION=2
#ENV NODE_VERSION=v6.9.2 NPM_VERSION=3
#ENV NODE_VERSION=v7.2.1 NPM_VERSION=latest

RUN apk upgrade --update \
    && apk add --no-cache \
        libstdc++ \
        make \
        python \
        g++ \
    && apk add --no-cache --virtual .build-deps \
        binutils-gold \
        curl \
        gcc \
        gnupg \
        libgcc \
        linux-headers \

    && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys \
      9554F04D7259F04124DE6B476D5A82AC7E37093B \
      94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
      0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
      FD3A5288F042B6850C66B31F09FE44734EB7990E \
      71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
      DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
      B9AE9905FFD7803F25714661B63B535A4C206CA9 \
      C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
    && mkdir -p /usr/local/src \
    && cd /usr/local/src \
    && curl -SLO https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz \
    && curl -SLO https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc \
    && gpg --verify SHASUMS256.txt.asc \
    && grep node-${NODE_VERSION}.tar.gz SHASUMS256.txt.asc | sha256sum -c - \
    && tar -zxf node-${NODE_VERSION}.tar.gz \
    && cd node-${NODE_VERSION} \
    && ./configure --prefix=/usr \
    && make -j$(getconf _NPROCESSORS_ONLN) \
    && make install \
    && cd /root \
    && if [ -x /usr/bin/npm ]; then \
         npm install -g npm@${NPM_VERSION} && \
         find /usr/lib/node_modules/npm -name test -o -name .bin -type d | xargs rm -rf; \
       fi \
    && apk del .build-deps \
    && rm -rf /usr/local/src /tmp/* /usr/share/man /var/cache/apk/* \
      /root/.npm /root/.node-gyp /root/.gnupg /usr/lib/node_modules/npm/man \
      /usr/lib/node_modules/npm/doc /usr/lib/node_modules/npm/html /etc/ssl \
      /usr/include/node \
    && mv -f /etc/profile.d/color_prompt /etc/profile.d/color_prompt.sh

COPY deploy.sh /deploy.sh
RUN chmod +x /deploy.sh && mkdir -p /app

RUN adduser -S -D meteor && chown -R meteor /deploy.sh /app

USER meteor

COPY app.tar.gz /app.tar.gz
RUN /deploy.sh

WORKDIR /app/bundle

CMD node main.js

Now, we are almost ready. To ease configuration, we’ll add a 4th file to our directory. It should be named docker-compose.yml and contain the following. Make sure you change the ROOT_URL value according to how you’ll access your application. Also change both port 3000 if you want to access it via another port. I’ve also included a mongo image so you can start ASAP. If you already have a mongo instance, just change the MONGO_URL value and remove the two mongo lines.

version: '2'
      services:
        portal:
          build: .
          environment:
            - MONGO_URL=mongodb://mongo:27017/app
            - PORT=3000
            - ROOT_URL=192.168.99.100
          ports:
            - "3000"
          restart: always
        mongo:
          image: mongo
          restart: always

Now that everything is ready, let’s make sure you are set up to run docker on your host:

eval "$(docker-machine env My_Local_Machine)"

And then run the deploy command

docker-compose build && docker-compose up

Add -d at the end to start the application in daemon mode (you won’t see the logs).

This setup will always reboot the containers if they fail and will keep the default docker logging driver so logs can be accessed using docker logs like you would normally. When you need to change your code, simply rerun the build command then use it to replace the old app.tar.gz and simple rerun docker-compose build && docker-compose up

PS: this is (with some little parts removed) exactly what I got setup and running on my live servers, everything is orchestrated by a CI pipeline which makes things very easy.

3 Likes

Yesss, always :wink:

Thank You!

Well, I read all this over the last months, of course.
I really want to use the latest versions of the operating system, so I tried out Ubuntu 14 server some many months ago, as well. Now, since the funny thing happend, that Ubuntu 16 switched back their decision to give up upstart again, Debian and Ubuntu should behave similar, again.

I will work myself through your mentioned links, again, because there is always the posibility that I missed an important thing, and I really grew up, so that I shut down my activities, when after some weaks the 34th version of mup oder mupx-derivates ruined everything again. I’m not very confident in github solutions, which have 180 Issues at the first glance, however, people using it. I can’t get it.

Herteby, you are ever so right:
Yeah, I got tired of Mup and Docker too. They’re supposed to make things easier, but I found it much easier to work with what I already know than troubleshoot a new unknown thing. I just configured Mongo and Nginx myself, and wrote a little shell script that compiles, uploads and unpacks the new build, and then restarts meteor.

It’s not to insult anybody!

I always read here that somebody wrote a small script, and this all works reliably, and blablabla.
Where are those scripts? Kept secret, because of the salvation of open source?

Sometimes I think that people cannot read, what I write here.
I’m not interested in old linux versions.
Why so tell me about Ubuntu 14, when I said Ubuntu Server LTS 16?
Nobody knows, what D-Ocean has runs under the hood?
Why tell me to read ‘how to install MongoDB on DO or Heroku’???
I made clear that I don’t use clouds for important data. Just read!

Evil enough, that even under newest V16 or Deb 8 one has to manually upgrade to newest Mongo or Node.
What a joke! What is apt-upgrade for, then?

And for each new test subdomain one should edit und deploy and script around by finger, again and allover again?
Are you serious? Well, it might be that you all don’t know it another way, and you are used to it.

For many people it might be normal, that they have to walk 23km every day to get one bucket of water. However, here we are used to have flowing water from the wall for more than 80 years now, I guess.

So, where are those scripts? I want to just ssh it over to the new machine, run it once, doubleclick my deploy-meteor-to-Server-IP-with-Nginx-NewSubDomainName batchfile icon on the windows development machine and that was it.
Not asking for too much, in 2017, or what?

Ridiculous enough, I just got a brand new headless-DVDless-fanless-250GB-SSD-minimachine yesterday:
Quad Core 2.4GHz, 16GB RAM, for just some tip…

I had to first install windows to download the linux base system to put it on a bootable stick to install the desired linux system. Muahahaha! A whole treefall to get one toothpick! This is crank!

Maybe, if we find time in the lunch break, I’ll send down the intern to the basement to write a plugin for Atom to emulate a 9 inch amber monitor emulator at 40x25 text resolution. Probably, it’ll get millions of downloads, soon.

Meteor and the developement is truely the best thing that could happen to us.

However, I can’t get you.
For years now this forum is full of “How to deploy to…”, and it won’t stop.
And you, you want to tell me that there is no need for this?

I’d rather think, that those mentioned experts just like to remain experts, which want to prevent that anybody just can deploy, and they won’t starve. :wink:

There is no need for Non Smoking Restaturants either.
If those non smokers really needed one, somebody would run one.
But what happend instead? All people were oppressed to languish by law.

So, I am adviced to voluntary go back 50 years in the past and give up my self-evident comfort?

If you’re right, I reckon, soon there will be times, when linux expert shell gypsies cross the far land on horse trailers and deploy our wonderful lonely local meteor apps for a warm meal and a towel.

However, my glass ball is currently at the cleaner’s.

Oh, I’m sorry, I didn’t realize you didn’t know how to look things up yourself, let me hold your hand and guide you through every single step:

  1. Google how to install node or nvm on ubuntu 16.04: https://www.google.be/search?q=install+npm+on+ubuntu+16.04&oq=install+nvm+on+ubutn&aqs=chrome.2.69i57j0l5.5503j0j7&sourceid=chrome&ie=UTF-8#safe=off&q=install+nvm+on+ubuntu+16.04
  2. Click one of the results that looks like the most relevant: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04
  3. Read the article on do the steps described in it.

There, I just saved you 5 seconds from looking that up yourself!

It doesn’t matter that it was written by digitalocean or heroku. Cloud servers run normal linux distros. From a user’s perspective a cloud server is the same as a bare-metal server, so the steps are exactly the same.

If you like meteor so much, you’ll also have to take the entire ecosystem with it. Stop complaining and just learn what to do or pick another technology, it’s that simply. Complaining that the process is too hard for you isn’t going to change anything.

At this point you’re not going to get much help from the community solely because of your attitude, I’m not even sure why I’m still replying. People gave you all the info you need for you to continue and learn what to do next. Ungrateful and unwilling as you are you of course think that isn’t good enough, well from my part you can go figure it out on your own.

I really need to step in this convo again. I’ve tried to be nice, I even added loads of in-house material just for you to have an all inclusive solution. Yet you keep complaining.

If I recon correctly, even deploying a PHP application will require some code… You’d need to set up a database too. And you can certainly find at least a dozen different ways to do it.

The reason why there are different deploy techniques is because people have different needs. Your need is to find every edge corner and complain because you hurt yourself on them… There is a deploy button that will deploy your app to the whole world in a couple seconds, without you needing to do anything spectacularly difficult I’m pretty sure your grand-grand-children could understand and do it, even if they can’t read… Even if they aren’t born yet… But you do not want to use Galaxy because you are scared of “something”. For your information, even the US army uses amazon cloud, I’m pretty sure you do not store information more important to a country than what they store and use…

Anyways since you do not want to use the very unique feature that is meteor deploy, we can still point you to loads of tutorials and all but we already did. And you tossed them away just as if you didn’t know how to read. If you do not want to work at all on your project, just let someone else do it. I’m sure you could hire freelancers to install it for you through a SSH tunnel.

MeteorJS has been, in my own experience (CGI, PHP, Node, Python and ruby) the easiest way to handle builds and deploys. Now man up and start working. If you had spent as much time preparing your environment than crying about it, you would be done by now.

2 Likes

Thank your for the links and your advice.

I can’t follow you…
I don’t have problems to install Debian, Ubuntu, Nginx, Nodejs or MongfoDB
to a linux server ?!?!?

Meteor works fine, as well as webpack, or just some create-react-app stuff.

The topic was, deploy Meteor apps automatically from a windows development system to a modern debian or ubuntu server.

In 2017 I surely can expect, that I do not have to again and again finger around with ssh and shell scripts, whenever I want to deploy a new test app.

Perhaps you all have too much time, or too less to do, anyway. However, after all this years with Meteor, it’s hardly to believe that I should be the one and only person who wants to have this automated.

For over 20 years, with every cheap-cheap-hoster, we are used to have a web interface, with one can easily create subdomains on Apache, MySQL databases and so on.

Why is there no such thing for Nginx and NodeJs and MongoDB, and Meteor?

Why does nobody dare to work on this?
Perhaps because it all breaks, anyway, with each little update?

What, so, do I have to do?

  1. Get a Windows PC
  2. Download the newest linux distribution
  3. Burn it to a bootable usb stick
    4 Install the newest operation system on the new server hardware
  4. APT upgrade it
  5. manually install the newest LTS version of Nginx, NodeJS and MongoDB
  6. APT upgrade again (and again) and again
  7. If not broken, already, configure all this and make it secure
  8. mess around manually to have some subdomain to WinSCP a Meteor js lump to
  9. reconfigure and pray
  10. start over again at 9) whenever somebody else wants to play around with Meteor as well?

One does not have to learn swimming and eat ants, before learning reactJS and ES6 !

You say I should call and pay a freelancer to prepare the server for another subdomain, whenever one of hundreds of students shows interest on learning javascript and web developing?

Not really!

There is a deploy button that will deploy your app to the whole world in a couple seconds…

Sorry, but I never saw a deploy button in my node or meteor shell …

For your information, even the US army uses amazon cloud, I’m pretty sure you do not store information more important to a country than what they store and use…

Well, the US army even attacked an atom bomb explosion, when told so,
the US army couldn’t prevent, that some tourist landed with a plane in some towers,
and it is MY data, or the data of my friends, and in case YOU don’t care, I do.

If you and/or US citizens resignated being spyed on, I don’t care.
And no, I donot go and tell the people in Guantanamo, that this is a really nice and safe place to be. :wink:

Thank you very much for the detailed information about your attempts.
However, as I said, no wild scripts to be run over and over again, no cloud, no docker (your scripts were more about getting docker to run, than to set up nginx, node or the meteor js lump)…

I don’t want to spread fear to the new generation of web designers, who just want to USE an editor, just USE Meteor and just press a button to deploy their brilliant art to an internet-like linux server. Just USE, and not bungle around with questionable scripts.

A painter does not have to learn everything about light physics at very high speeds, he just wants to take a brush and start over.

Think of MS Frontpage in the good old times, where anybody, for a few bucks invested in FP, could deploy anything in a minute to some internet servers, and you only had to ONCE install the FP extensions on the server and only ONCE modify the Apache config template.

As I said, 20 year old techniques. And no progress. Embarrassing, that MS managed it, and then even on linux. Keeps me pensive.

Uhh, before I forget:
“Cloud is ever so fine!”

See: https://www.heise.de/newsticker/meldung/Ransomware-WannaCry-befaellt-Rechner-der-Deutschen-Bahn-3713426.html