This is a cheatsheet on deploying a Meteor app to an Ubuntu droplet on Digital Ocean using Meteor Up.
Login to your Digital Ocean account and create a droplet. I'm going to choose the latest Ubuntu distribution and a 512MB server.
Upload your SSH key, give your droplet a name and choose Create.
Within a few minutes your droplet should be created and you'll be assigned an IP address. If you're using an SSH key, then let's ssh in using the key:
ssh -i ~/.ssh/mykey.pub root@1.1.1.1
sudo npm install -g mup
mup init
Here's an example:
{ "servers": [// Server authentication info { "host": "myhost.domain", "username": "root" //"password": "mypass" //"pem": "~/.ssh/id_rsa" } ], "setupMongo": true, "setupNode": true, "nodeVersion": "0.10.40", "setupPhantom" true, "enableUploadProgressBar": true, "appName": "sdnet", // appName no spaces "app": ".", "env": { // Configure environment "PORT": "80", "ROOT_URL": "http://myhost.domain" }, "deployCheckWaitTime": 15 }
You can also specify a Remote MongoDB by adding a line similar to this in the env section:
mongodb://username:password@mongodb.test.com:27017/dbname
It's a good idea to test the remote access from your server to make sure you can connect using this command:
mongo mongodb.test.com:27017/dbname -u username -p password
To use MUP with ssh there are a few additional steps described in more detail here.
Make sure the pem field is removed from your mup.json file.
Start an ssh agent.
eval $(ssh-agent)
Add the private key:
ssh-add ~/.ssh/mykey
List the added keys:
ssh-add -l
mup setup
mup deploy
If there are errors, you can view the logs with the command:
mup logs -f
Reconfigure the server based on changes in the mup.json file:
mup reconfig
Start, stop or restart the app:
mup start mup stop mup restart
Update mup to the latest version:
npm update mup -g
On an Ubuntu server your application is installed in the directory:
/opt/<appName>/current/bundle/programs/server/app
To get debug output, enter the following on the command line. This example shows debugging the deploy option but it could be another option.
DEBUG=* mup deploy
You can tail the logfile like this:
mup logs --tail=50
There isn't a command option to remove a deployed app but this Github issue describes the manual steps you can take to remove an app.
First stop the app:
mup stop
Then connect to the server and do these commands:
sudo rm -rf /opt/<appName>
Remove Mongo if you want:
sudo apt-get remove mongodb