This post got me thinking about building a remote dev system using tmux running on EC2 or some other cheap VPC host. I like the idea of pulling up a fully configured dev system from anywhere. Mainly so I can pick up the same session from home or work for hacking on my own projects, rather than keeping two separate systems in sync.
I've got a linode box running arch. I configured it with all my dev needs. I'm currently in university and I spend a good amount of time at school, bouncing between labs and then also working from home.
Right now the process is simply:
ssh me@mydomain.com
tmux attach
Up comes a familiar |- split console with vim running in a window, a terminal at the root of whatever project I'm working on and the server output of that project below it. If I have to leave suddenly, Ctrl+A+D and walk away. It'll be there when you log in next time.
It also has huge advantages if you're working remotely with teams or just want to launch stuff. I have nginx already configured and running. When I need to launch a new project:
1) Go to the Linode DNS Manager and setup a new subdomain
That's exactly what I want, a remove dev box for working on and serving up web projects. I'm setting this up on an EC2 micro instance right now, slowly getting a feel for the tmux key bindings. Thanks for those links, great stuff!
Yup - I do exactly this for about the last year, and it works as you describe. Long-lived IRC sessions, all of my editing windows open as I like them. You can have nice monitor/chair/keyboard setups at work and home. I find I don't have much use for a laptop any more. If your Windows/ubuntu desktop install breaks, you can reinstall quickly and get back to where you were.
What I mean is - whatever is driving your graphics card, monitors and local network. Sometimes I do a dist upgrade and my video drivers go to junk. Or family install something to my workstation and I find that it has added junk to the boot sector, and I want to get rid of it for sure. Or my mac laptop just starts being really slow for reasons I can't be bothered to investigate. These things are no longer an issue because your desktop install is expendable.
I do this a lot, particularly with projects that use a database that might be hard to configure (and the configuration isn't fully scripted). Just get the development version of the DB right once, and then make a copy of the machine in case you mess things up later and need to revert. It's saved me a lot of DB rebuilds, and I don't have to do DB migrations on both my laptop and desktop to keep them up-to-date so that I can run tests from either.
I do this on a linode and have been quite pleased. I've found TMUX/git/Vim to be an awesome way to keep an environment up to work/play with from anywhere, while not having to worry about leaving a machine constantly running at home.
I've also experimented with Cloud9 to some success, but it will depend on the nature of what you're doing.
Comments
This post got me thinking about building a remote dev system using tmux running on EC2 or some other cheap VPC host. I like the idea of pulling up a fully configured dev system from anywhere. Mainly so I can pick up the same session from home or work for hacking on my own projects, rather than keeping two separate systems in sync.
Does anyone else do something like this?
I'm doing this now!
I've got a linode box running arch. I configured it with all my dev needs. I'm currently in university and I spend a good amount of time at school, bouncing between labs and then also working from home.
Right now the process is simply:
Up comes a familiar |- split console with vim running in a window, a terminal at the root of whatever project I'm working on and the server output of that project below it. If I have to leave suddenly, Ctrl+A+D and walk away. It'll be there when you log in next time.It also has huge advantages if you're working remotely with teams or just want to launch stuff. I have nginx already configured and running. When I need to launch a new project:
1) Go to the Linode DNS Manager and setup a new subdomain
2) Go to /srv/http and git clone my project
3) Edit my nginx.conf, reboot nginx and done.
Some stuff worth checking out:
* https://github.com/thoughtbot/dotfiles
* http://www.thegeekstuff.com/2009/04/ctags-taglist-vi-vim-edi...
Edit: formatting
That's exactly what I want, a remove dev box for working on and serving up web projects. I'm setting this up on an EC2 micro instance right now, slowly getting a feel for the tmux key bindings. Thanks for those links, great stuff!
A small addition: use a wildcard DNS entry and you can skip 1).
I hope I never need to get back to my Windows/Ubuntu install...
What I mean is - whatever is driving your graphics card, monitors and local network. Sometimes I do a dist upgrade and my video drivers go to junk. Or family install something to my workstation and I find that it has added junk to the boot sector, and I want to get rid of it for sure. Or my mac laptop just starts being really slow for reasons I can't be bothered to investigate. These things are no longer an issue because your desktop install is expendable.
Definitely do not want to get back to my ubuntu machine with proprietary video drivers.
I do this a lot, particularly with projects that use a database that might be hard to configure (and the configuration isn't fully scripted). Just get the development version of the DB right once, and then make a copy of the machine in case you mess things up later and need to revert. It's saved me a lot of DB rebuilds, and I don't have to do DB migrations on both my laptop and desktop to keep them up-to-date so that I can run tests from either.
I do this on a linode and have been quite pleased. I've found TMUX/git/Vim to be an awesome way to keep an environment up to work/play with from anywhere, while not having to worry about leaving a machine constantly running at home.
I've also experimented with Cloud9 to some success, but it will depend on the nature of what you're doing.
That's the premise behind http://pair.io