Create free AWS account: http://aws.amazon.com/free/ Note: you need to provide credit card details, so you will be charged if your server does crazy things for long periods of time. Sign in with or create your Amazon account Enter credit card details Verify by telephone Choose 'Basic (Free)' Activate MFA (Multi Factor Authorisation) Services > Compute & Networking > EC2 Click Launch Instance button Classic Wizard > Continue AWS Marketplace tab > Search for: CentOS with updates Select CentOS 6 (x86_64) - with Updates Region: EU West (Ireland) EC2 Instance Type: Standard Micro (t1.micro) Security group: Create new based on seller settings Key Pair: Go to console via link Create Key Pair Name: CentOSAWSKey Key is downloaded (in Chrome automatically to the downloads folder) Back to the CentOS page Reload page: Key Pair is now: CentOSAWSKey If you change Region you need to create a new key Accept Terms & Launch with 1 Click Wait 1-2 minutes, then follow the link to the console (Instances) Choose Actions > Connect > Connect with standalone SSH client Copy the line from the example box (ssh -i CentOSAWSKey.pem root@ec2-...) OSX: Open Terminal cp ~/Downloads/CentOSAWSKey.pem ~/.ssh chmod 600 ~/.ssh/CentOSAWSKey.pem ssh -i ~/.ssh/CentOSAWSKey.pem root@ec2-....amazonaws.com 'yes' you want to continue You are now on your server Do a system update: su -c 'yum update' (answer y to questions) yum install git (answer y to question) yum install nano (answer y to question) install nvm: curl https://raw.github.com/creationix/nvm/master/install.sh | sh restart ssh: exit ssh -i ~/.ssh/CentOSAWSKey.pem root@ec2-....amazonaws.com install node: nvm install v0.10.12 (you can see available node version with: nvm ls-remote) confirm node is working: node -v Back to AWS console: https://console.aws.amazon.com/ec2 Network & Security > Security Groups Choose the group named CentOS 6... Select HTTP from dropdown, click Add Rule Repeat for HTTPS or other ports you need open Apply Rule Changes (should work instantly) There is an additional firewall in CentOS, can be disabled (not recommended) with: /etc/init.d/iptables save /etc/init.d/iptables stop chkconfig iptables off http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/ create a simple node server: mkdir /usr/local/www cd /usr/local/www nano test.js paste this in: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(80); console.log('Server running on port 80'); press ctrl+x, answer yes and press enter to save the file node test.js find your 'Public DNS' name in the AWS console under instances. go to browser, and enter the public dns name: http://ec2-....amazonaws.com/ This should display 'Hello World' Other ways to get files on your server: git scp Handy tool to auto restart node when file changes nodemon test.js connecting your own domain name to your ec2 instance: open aws console Elastic IPs Allocate New Address EIP used in EC2 Yes, Allocate Associate Address choose your instance Yes, Associate Your instance now has an IP you can put in your DNS record