Getting your daily work done with MeteorJS

Preliminary remarks

  • I am German.
    Thus, I am very pampered.
  • I am a scientist.
    Thus, I firmly believe in the following.

“Scientific work describes a methodological-systematic approach in which the results of the work are objectively comprehensible and repeatable”

  • This entry reflects only the personal opinion of the author, and perhaps as well as estimated a maximum of unsigned 0b11111111 of his personal contacts.

###MySelf
My 30 years of professional experience in science and programming teaches me some indiscussable facts.
Please allow me to start with some axioms.

  • Linux (and linux frameworks), is just something for students, or people who do not have to get their work done. Recurring, constant messing around after each little update is order of the day.
  • MeteorJS is just another hipster software.
  • Using Meteor and React is - at present, and perhaps already since 2015 - the best way to sketch a new web project quickly and dirty.

Europe

  • If you declare Western European Office Communication to be the basis of your economic existence, you can not get around MS-Windows client computers. Businessmen can buy very cheap personnel, which easily get their daily work done with it.
  • WebApps, free of doubts, have to be hosted on *nix-Servers.
  • However, engineers in German companies develop under Windows.The reason, if they don’t (see smartphone development/Cordoba) is stepkind development for Windows.

So, my first requirement to you developers is

  • Learn Windows
  • Learn writing stable software for Windows
  • Learn writing stable software for Windows, which can be installed repeatedly and reliably by
    • double click on setup.exe,
    • wait,
    • use.

Meteor deployment

It’s really great what you can conjure up with MeteorJS and ReactJS in a very short time, no doubt at all.
However, that was it.

We all know NSA, and BND, and, at least, ‘since Snowden’, every single European entrepreneur who is still mindful will follow that rules below:

  • There is no Cloud. There is just computers, which belong to foreign people or institutions.
  • Only an idiot gives his data or his intellectual property out of the house!

So, this is European security vs. security paranoia.

That means precisely, that MeteorJS just is, but is, a quick great thing for the company’s intranet.
(Maybe, for distributed, but internal use, connected to a leased line from the internet access provider.)

I totally do understand, that MDG must become profitable in the near future, and they really created the impossible.

With regard to MeteorJs, Galaxy and Apollo, MDG has mastered the rigorous implementation of scientific research and development on Javascript, NodeJs and web databases.I am very grateful to them for this great performance.

###However
Every time I read a guide like ‘deploy MetorApp to your own server’, a gentle smile attracts my face.

First, we need to clarify a few words and their proper meaning.

Think about the meaning of ‘own’. We all know there is a big difference between ‘to have ownership of something’, ‘to possess something’, 'to enjoy one’s majesty, and ‘to have rented something’.

So, If you really want to have ‘your own server’

  • Visit the nearest grocery store of your trust
  • Let the store salesman bring you the fastest Gamer-PC
  • Make him swap the graphics card against 64GB of RAM and the cheapest fanless VGA card available
  • Make him swap the power supply to a decent, adequate one
  • Haggle him, negotiate a good price, and buy the stuff and (two) USVs ontop.

Then, and only then, you have an own server.

So, grab, e.g., an Ubuntu 16.4 Server LTS DVD, install a base system ( remember: there never is GUI on servers).
And then, deploy your fancy MeteorApp to your own server.

Then what? Oh no! You are busted.

So, my next requirement to you (MDG) developers is

  • Give us a precise guide how to setup our own fresh debian 8 or ubuntu 16.x LTS server machine from scratch, in regard to deploy our new ever so wonderfull App.
  • Give us ‘Meteor One-Click-Deploy’ to this our own server (I’m (nearly) just kidding.)
  • One App per server will do, for the beginning.
  • Scaling is the topic for the month after tomorrow.

I know a lot of brilliant, hopeful developers who could not argue that the company should invest a lot of money in the blue haze, because they could not even present a toy productive environment.

Furthermore, I can not blame any decision maker if he continues to rely on the well tested and, above all, completely paid, php and mysql development stuff. “Look, old websites do still work. And our universities still teach Java!”

One only have to take a look at forums.meteor.com, where thousands of Linux and Meteor freaks show daily, what and why everything is not reproducible running, anyway.

So, MDG, make MeteorJS deployment ready for everyday use!

I am pretty sure, that if ‘my requirements’ will become fulfilled, MeteorJs and Javascript development will finally become globally accepted even on this side of our planet.

All what counts, here, is Get your work done, quickly!, and Don’t fraggle around!

Carry on, MDG!

PS:

Even I find it hard to accept that I have to hire and pay a horde of men in sneakers and plaid shirts just because once again an intern has found such a one-day fly.

Just smile!

2 Likes

I’m German myself, but have to admit I didn’t get any of your points.

15 Likes

I’m German too and also not getting your points? Looks more like issues of a conserative man, or it is a very ironical post.

So, my first requirement to you developers is
Learn Windows

Why just learn Windows? On the server side, you are using almost Linux (as you mentioned), so your requirement should be learn Windows AND Linux. If you learn both, you are able to write your own bash script to deploy a Meteor app for production.

3 Likes

OK. I’m German as well, and work in a very conservative German company. Surprise: I DO UNDERSTAND YOU!!!

I’m developing primarily intranet apps with Meteor, because of it’s development speed (but without those nasty React stuff you use). “My own servers” are usually old recycled desktop PCs, which turned out to be fast enough. My user base is quite small, though, at most 30 concurrent users, and maybe around 1GB of data, haven’t checked for a while. I have experimented with horizontal scaling a bit, but I guess it’s not even necessary …

The thing you are looking for, the one command deployment onto a given Ubuntu box, exists!!! It’s called MUP and was originally developed by Arunoda. Not sure if there is a working version for the recent Meteor versions, though. Arunoda has left the Meteor community, but I vaguely remember that someone has posted here, that he has picked up MUP (MUPX) development. Maybe this one: https://github.com/zodern/meteor-up

I’m on Meteor 1.2 with my “production app”, and everything is running smoothly for the last “years”, with really minor maintenance. Maybe changing things twice a year.

I’m in the process of creating another Meteor-Intranet-App, so I will have to figure out, how you do deploy Meteor apps locally nowadays as well, very soon. And there is a major rewrite/addition to my original app looming in the background … so if you find a good way (or discover that MUP is still doing) let me know.

Regards
Dirk

So, you’re concerned about the NSA, yet you will only use Windows??? You do know they have backdoors right? Only way you can prevent that is using open source software.

Linux is only for students? It’s the most popular server operating system in the world, and runs some of the most powerful supercomputers. It’s also the number one smartphone OS.

If you’re really that lazy and want to avoid the shell as much as possible, you could actually just install desktop Ubuntu and just keep running Meteor in development mode. For a small project it’d probably be just fine.

Oh, I’m so sorry. Let me make it a bit clearer for You.

If I gave you a brand new machine with 16GB Ram and a 120GB SSD, connected to an IntraNet,
and an Ubuntu Server 16.04 DVD, what exactly(!) would I have to do to set up the machine so
that one can easily deploy a Meteor App to it from a Windows10 machine?

A complete list of the commands to prepare the server will do.
And what to shell input on the Windows10 machine to deploy to this server?
(No Kadira (or derivate tools) please! They are broken, anyway, with any next update…)

This is what is needed here, urgently.

Thank you.

If you cannot figure it out by yourself, why don’t you pay someone to walk you though it? https://www.weworkmeteor.com/

1 Like

We’ll, I’m using my Mac as my desktop system (not religious, but I need it for app development) and Ubuntu on AWS as my cloud server. So I am probably in a completely different area than you are.

1 Like

What does not solve the problem that we - we, that we just want to USE and not STUDY our tools - still have no step-by-step list how to build our own intranet server and deploy to it…

How about this one: https://guide.meteor.com/deployment.html

Here is “easy” steps you should do on your Windows machine:

  1. install node.js

  2. install npm

  3. cmd.exe and type:

npm -g install mup
cd your-meteor-app-folder
mkdir .deploy
cd .deploy
mup init

mup.js will appear. Edit it (enter your server credentials etc.) then run:

mup setup

Mup will connect to your linux server and will install everything needed / will prepare server.

then (still on your windows machine) run:

mup deploy

And if you are lucky (but only if you are lucky), your application will be installed and running.

You can check mup log with:

mup logs

Piece of cake (if you are lucky) :slight_smile: and you even don’t need to access your linux shell.

P.S.: emails will not work. Minimum you can do is to make one gmail account and enter address/credentials into mup.js env section (environment variable) MAIL_URL. Example: MAIL_URL="smtp://your_username%40gmail.com:your_password@smtp.gmail.com:587/"

P.S. 2: if you want SSL - you need to be double as lucky :smiley:

So you’re simply asking how to deploy to an ubuntu server from windows? All the info you need can be found on these forums and in the docs, but here’s a few quick pointers:

On the server:

  • Install node
  • Install mongodb

On your windows machine:

Copy over the files from the meteor build process and run on the server like a normal nodejs program. Those are the minimal steps you need to have a meteor app running on ubuntu, built from a windows machine. Stuff like a process manager like pm2 is of course recommended.

The one downside to this is that you’re building for a windows environment, so you might run into problems where some npm binaries won’t work. I’ll spare you all the headache and just point to the simple fact that there’s no reason to not build on the same environment as your server. You can run a virtual machine in ubuntu or you can build a docker image, on which you run the build and then deploy that docker image.

If you want anything simpler than that you’ll need to use any of the community tools (I’m sure there must be a mup fork that is up to date) or galaxy. Some alternative one-click-deploy tool would be in direct competition with galaxy, so no, mdg is not going to build something like that.
If you can’t figure out how to do a manual build and deploy on a private server, stick with what you know (meteor/node might not be for you) or pay someone who knows how. A good developer has no trouble setting up an automated deployment process to any linux server from any environment (windows, mac and linux).

Just so you know, your original post comes of as slightly unhinged and uneducated. Linux is not some toy only used by students, most of the internet runs on it. Calling meteor for hipsters on a forum about meteor is not going to gain you popularity nor support. There are a lot of meteor developers using windows, myself included.

1 Like

I remember Meteor’s “golden times” when we had Blaze only and one command to deploy: meteor deploy which worked perfectly with mongo and mail running. (I believe that was too expensive for MDG so they made Galaxy and now you need compose.io (or whatever for hosting your database) and mailgun (or whatever to enable email) - Galaxy will host only your app (with no DB/mail).

You can do meteor build --architecture os.linux.x86_64 :slight_smile:

Yes, but there are still cases where you’ll run into problems (unless they reworked something in the last 3 months), I can’t remember the exact problems (I think Cairo was one of the few culprits) as since then I’ve created an automated ci workflow with docker.

Thank you for mentioning this. (I nearly forgot about it.)
I remember, this solves the problem with dev-architecture != server-architecture.

I was horrified. First make wild promises, and exactly when you have all developers in the sack, the service is discontinued. This can not be done!
Well, they could, and they did. Embarrassing! :wink:

However, as I said earlier, MDG has pressure to become profitable. So they had to built Galaxy and sell workspace to us. As usual, again such a semi-finished Linux thing, without DB and without Mail.

But, whoever is storing his sensitive data on servers that belong to foreign people?
Therefore, I still am looking for a precise, comprehensible and repeatable guide to set up an intranet server to host my app created on a Windows machine.

We here are accustomed to go to the merchant and buy a modern box,
a DVD with a license for a server operating system and a second one with the application to run. And then only type setup.exe, and everything is ready for use. That, Linux has not reached for over 20 years.

And still, there is no “create-meteor-environment”-shellscript to run on a fresh and clean (e.g.) Ubuntu 16 server installation. This is ridiculous, isn’t it?

Meteor is just a tool(!) - indeed a brilliant tool - to prototype web applications with.
I just want to use it, and not have to study dam statics before.

And exactly there is the problem:
I just want to USE Meteor and deploy my app to an (Ubuntu) linux intranet server, which is the standard environment the outer wild seems to use for 20 years and more.

We are not interested in spending month in working out the whole ancient linux stuff and waste time with any docker or whatever mups stuff.

Installing nginx, node and mongoDB is not a problem, as there is a setup-alike installation.
But what then? Call a lumberjack who fumbles around for hours and tinkers a shaky solution which will be broken with the next whatever update?

I’m just getting angry again…

It is not that we have not copied everything that has been published here. Debian 7, Debian 8, Ubuntu 12, Ubuntu 14,
Ubuntu 16, etc. Just rubbish. Nothing works, reproducible,

When I go and buy a chainsaw to cut that stupid tree there, I do not want to have to study biology before!

Each low-cost hoster has a graphical user interface for its servers, which allows you to configure your web directories. Then just upload the app via FTP and done. Why should that not go the same way with Meteor, or just other node apps? There not even seems to exist a decent GUI for nginx. Have a look at ProxMox GUI, or FreeNas GUI. They just work. However, here is Stone Age!
Boah!

Thank you, Dirk.
I’m famliliar with Mup/MupX and forks, and the Arunoda story.
Your decision to stay with the old (Meteor) stuff was a wise one.
Never change a running system!

I just want to deploy to a bare (Ubuntu linux machine, without jailing my app in a docker container, where the DB is unreachable (from outside) as well. In 2017, there is really no need to configure anything without a decent GUI.

Bei Vorträgen und in diesen Videos sehe ich diese Linux-Jungs, die mit unnatürlich gebogenen Oberarmen, jedoch parallel verlaufenden Unterarmen ihr 12-Zoll-Schirm-Apfel-Notebook (mit ohne Nummernblock) bedienen, während ich mich jedesmal vergewissere, dass man sie ohne groß zu verformen, einfach so, auch in einen Spind stellen könnte. Das passt einfach!

Nee, so nicht!

I will continue to investigate, and would be glad to have (further) science talk with you about this topic.

One can’t rely on external hosters, especially DB hosters, because they can discontinue their services tomorow (see modulus/Xervo, or even free hosting by Meteor).
One can’t give the advice to big companies to pump big money into a project, where you can’t even guarantee the services you have to buy. So one has to run ones own infrastructure.
(Anyway, how insane must one be giving internal data to foreign people?)

So you want a one-click deployment with an easy setup but you also want it for free…

Here you are moaning you want to deploy to an ubuntu/linux server, but you don’t actually want to use the shell? You’re getting angry because you have no idea what you’re doing. This attitude that you deserve a simpler option with a fancy GUI is ridiculous. If you don’t like linux, then don’t use it. (also that isn’t really relevant to meteor)

You are clearly over your head with anything linux and node related, as I gave you the steps to setup and deploy a bare server and still don’t know what to do, so you have three options:

  1. Realize that this is the node/linux environment, accept that and learn how to use it.
  2. Pay someone to do it for you, either creating a tool that does automatic deployments or does them manually.
  3. Decide that anything meteor/node/linux related isn’t for you and move on to something that might fit you better.

Also, yes there are scripts for automatic setup and deployment, some public ones like MUP are probably broken, others might still work. Many companies using meteor have built their own, so have I and it isn’t rocket science, my current setup and deployment script is less than 100 lines and is completely stable, but if you don’t want to put any time and effort in yourself what do you expect to get? (Seriously it takes less than an hour to setup a server and maybe 5 minutes to deploy a new version if you do it manually)

Don’t confuse your inability to do something with a problem with meteor/node/linux. This is an open-source community so if you want something you’ll have to build it yourself. Many large and small companies are using meteor and/or node with success, they didn’t expect to have everything handed to them on a platter, they just did what’s necessary.

You’re condescending tone and ridiculous prejudices, especially pertaining “Linux-Jungs” is extremely offensive, it’s probably wiser to tone down your (aggressive) opinions when asking others to help you…

8 Likes

@onycho

Try this.
It uses Phusion Passenger, and while that’s another thing you need to install etc, it has worked for me (although I deployed to an Amazon EC2 instance)

https://www.phusionpassenger.com/library/walkthroughs/deploy/meteor/ownserver/integration_mode.html

Hint: Choose NGINX and continue.

Give this a look over and see if it helps.

And the last bit about automating deployments with shell scripts:

https://www.phusionpassenger.com/library/deploy/nginx/automating_app_updates/meteor/

Sounds like an opportunity for someone to base Meteor deployments off Passenger and offer it as a service.

And @onycho - I get you about Windows development - I used to use VB6 Enterprise and Visual Studio with the Installer thing… create a setup.exe, install, done. I get exactly what you mean and understand your frustration.

I use Amazon EC2 at the moment, and the Passenger thing worked fine for me for the initial install - I’ve not followed the automating app updates yet.

But I totally get you about having a machine on the LAN that you want to deploy to.
We did that at work too in our early days.

I think you have a valid concern, and there certainly is scope for tools that work within that requirement - we do have a good community here, and I’m not saying that you’ll have a solution tomorrow, but hang in there. Please don’t discount Meteor because its difficult to deploy. It isn’t - you just need to find the right method - Passenger solved it for me in the first instance (even having to write all those commands on the server etc) - all the mup/mupx forks didn’t work for me, who knows why, maybe my Meteor version… ??

Hang in there though - we’re all here to help one another.

Hope that helps.