How to deploy meteor app to DigitalOcean - meteor

I created a new app repository in Github, built on the Meteor platform. I am having significant difficulty deploying the app to my DigitalOcean droplet, however. I am trying to connect my Github repository to the droplet and to deploy that to my domain. I am trying to do this in SSH using puTTy; however, after setting up a root account and password, I am unable to log in through SSH. I receive the following error: disconnected: no supported authentication methods available (server sent:publickey)
Does anyone know why this error is coming up? I have looked through more tutorials for deploying a meteor app on digitalocean than I care to admit, but they all seem to take different approaches and many are outdated. Any advice would be greatly appreciated!
Thank you

I reckon the easiest way is to use meteor up. It's a very simple process, and you don't need to be continually sshing into your target server, with all the hassles involving ssh keys.
In my experience, once you have it set up, it's a very painless process, and you can deploy with a simple command each time.
http://meteor-up.com/
It looks after the following:
Setting up your server with docker instances
Creating SSL certs using Let's encrypt
Building your app, bundling it, transferring it
Starting the app
Rolling back if it doesn't work
There is some trust involved, but it's worth it for a seamless deployment scenario

Related

Deploying a .NET Core + Angular SPA with Docker and GitLab

I have a droplet in Digital Ocean with Ubuntu 20.04 and a .NET Core web application that connects to Mongo.
My deployment workflow is the following:
I work locally with Visual Studio and release my app to a folder.
Then I connect to my server through FTP and drag the content of my folder to /var/www/myapp
Secrets are managed by Azure (it took me a lot of time to set this up).
A service runs the app and restarts it if needed.
The web server is Nginx
Everything works fine, nothing new so far. However, I'd like to automate each deployment and I found GitLab can run a pipeline to help me achieve that. The problem is I don't understand how to set this up correctly since I've seen there are more partes involved, such as Docker and Kubernetes, and I feel a bit overwhelmed.
Do I need to "dockerize" my application, database, etc.? If I want to add Angular as the client side, do I need to dockerize it as well or it goes in the same container as the .NET Core app?
Do I need Kubernetes? If so, why?
What would be the most straightforward and recommended way of achieving a CI/CD for my app?
It took me a lot of effort to deploy to my Linux server and I'm afraid I can destroy something in production.
I would really appreciate any help.

Unable to Create Azure Storage Queue Messages with ASP.NET 4.6.1 App

I have an old ASP.NET 4.6.1 app running in a VM on Azure.
I’m trying to create messages in an Azure Storage Queue and nothing is happening when I run it on production VM. However, on my dev machine, it works fine and I can create messages in the same queue that I’m trying to access from the production VM.
The call to the queue is within a try catch block and it’s not throwing any errors.
Another important point is that I had use the old/deprecated WindowsAzure.Storage NuGet package as that’s the one that seems to work on this ASP.NET MVC 4.6.1 app.
Any idea what could be the issue here? Because I don’t see any errors, I’m not sure how to go about fixing this problem.
According to MS Docs, one troubleshooting option you can try is "Redeploy Windows virtual machine to new Azure node"
The doc says,
If you have been facing difficulties troubleshooting Remote Desktop
(RDP) connection or application access to Windows-based Azure virtual
machine (VM), redeploying the VM may help.
Source: https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/redeploy-to-new-node-windows
See also additional troubleshooting steps:
Restart the virtual machine
Recreate the endpoint / firewall rules / network security group
(NSG) rules
Connect from different location, such as a different Azure virtual
network
Recreate the virtual machine
There are various reasons when you cannot start or connect to an application running on an Azure virtual machine (VM). Reasons include the application not running or listening on the expected ports, the listening port blocked, or networking rules not correctly passing traffic to the application.
Source: https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshoot-app-connection
This might be network Firewall issue. Open azure portal from production vm machine. You can even try to manually see the storage and upload files from web.

Juptyer Notebooks Authentication

I'm very new to Jupyter notebooks and recently setup a dev instance with a basic password for external access. While this works fine, I need to tie it into LDAP or PAM authentication on my RHEL server.
As I started reading about this, it appears JupyterHub is the way to go with but I'm running into some issues with that setup. I did some basic configuration and I can login fine via PAM, but it says "Spawn failed" after the login page.
Ideally I'd like to stick with just notebooks + LDAP auth if possible to make things simpler. If that is not possible, can anyone help me out with what type of configuration I need for hub to frontend notebooks and just forward to the existing setup I have?
Hub is currently running on :8000
Notebooks is currently running on :8888
I also have custom themes on Notebooks that I want to keep, even if I have to use Hub.
Any help would be greatly appreciated.
Instead of using Hub, I ended up just using Apache to front end the connection and then proxy to 127.0.0.1:8888 localhost.
This allowed me to utilize LDAP auth as well as the certificates that I'm already utilizing with Apache.

How to view Meteor server errors on production server

Is there a way to access the Meteor server logs on a production server? All I needs is something that records what I'd see as the server console output on my dev machine, in a log file on the server. I would have expected Meteor to log them somewhere by default but I can't find anything.
I'm running Meteor 1.6 on a Digital Ocean droplet, Ubuntu 16.04.3. Deployed with Phusion Passenger.
I've hunted around and there are a bunch of logging packages for Meteor but I can't figure how to use any of them; there don't seem to be any basic examples or instructions.
This must be a really common requirement - anybody know how to do this? Thanks!
Remember that Meteor runs on Node.js. Therefore, many things valid for Node.js is also valid for Meteor like location of the default root folder of the built-in web server. You should check the path "/var/www/html", first for the server logs.

Scalability of a Meteor app

Say your app gets hit with enough users to grind to a halt, does it fire up another instance? How do you plan to get around this in the future?
Ian
Not sure if you mean apps built with 'meteor bundle' or apps deployed on the free hosting with 'meteor deploy'.
Apps deployed to the hosted servers with 'meteor deploy' do not yet have any guarantees or SLAs about scaling. However, the servers can handle a fair bit of load. meteor.com is hosted on meteor deploy, and it survived the Meteor launch.
A server bundle generated with 'meteor bundle' is basically a single process app. It is up to you wire it up to multiple instances, or however you want to implement auto-scaling.
I'm precisely not clear with your question. aren't asking about the meteor framework capability for scalability or meteor app hosting environment scalability. never mind, here it goes
As Meteor framework ecosystem grows, your question of scalability will be answered, currently you can invoke as many as small modules of code through Packages.
Meteor has something called meteor bundle for more which eventually let deploy your application any where around the globe, then you can have your own infrastructure set-up to run your app (something like a network load balancer hosted NodeJS servers and scalable multiple MongoDB instance)
In general, Meteor can scale using by bundling and use your own infrastructure, like mongo, application server. Like #n1mmy said, when the application is bundled, you can specify a certain mongo end point from which you can scale the data storage. In addition, when the bundle is running, it is actually running on nodejs, which means you can scale your web application like nodejs apps. I think in both way can ease your problem if your application has too many users.
Theoretically Meteor scales just fine, but if it really works for you in practise all depends on how you handle your data. This is an excellent post on scalability in Meteor:
https://www.discovermeteor.com/blog/scaling-meteor-the-challenges-of-realtime-apps/

Resources