This is part 4 of my series on developing with only an iPad. Part 1

Seems I screwed up the server setup worse than I thought - now some other commands aren’t working properly, so I really have to go back to the server setup with the lessons from breaking the first one.

It shouldn’t take too much work really - copy across a web server config file and a couple of environment variables and the rest is just cloning git repos.


Unfortunately it turns out that the EC2 console is horribly buggy when used on an iPad, so it took over an hour just to get the instance started, but was relatively straightforward from there.

First I install the most basic requirements - git and node

sudo yum install git
tar -xvf node*

sudo ln -s ~/node-v0.10.0-linux-x64/bin/node /bin/node
sudo ln -s ~/node-v0.10.0-linux-x64/bin/npm /bin/npm
sudo ln -s ~/node-v0.10.0-linux-x64/bin/node-waf /bin/node-waf

I also set up nginx to proxy requests to the node js processes rather than allowing direct connections - it’s a little more config work, but means I’m not sending passwords around in clear text.

sudo yum install nginx
sudo nano /etc/nginx/conf.d/virtual.conf
cd /etc/nginx
sudo openssl req -new -x509 -nodes -out server.crt -keyout server.key
sudo chmod 600 server.key

upstream app_app1 {

server {
    listen               443;
    ssl                  on; 
    ssl_certificate      /etc/nginx/server.crt;
    ssl_certificate_key  /etc/nginx/server.key;
    location / {
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_set_header X-NginX-Proxy true;
       proxy_pass http://app_app1;
       proxy_redirect off;

Set up git connection

ssh-keygen -t rsa -C "label"
cat .ssh/

git config --global "User Name"
git config --global

Install forever (to run node when not connected to ssh)

sudo npm install -g forever

Install heroku toolbelt for deployment

wget -qO- | sh

Now clone all the necessary git repos and the development server is ready.