Maybe I’m crazy, but I wanted to install Node.js in a (gs) shared hosting environment so that I could compile and save small changes to my LESS-based stylesheets via SSH without having to maintain a local working copy. That’s right. I said it. I change files in a live environment sometimes, and there’s nothing wrong with that! Anyone who opines to the contrary in the comments below will be swiftly dealt with.
This how-to is based on the great work of [Ian Tearle and his commenters](http://iantearle.com/blog/media-temple-grid-and-nodejs).
Get your Media Temple Grid Service site number. If you don’t know your site number, see [this Media Temple support page](https://kb.mediatemple.net/questions/268/What+is+my+site+number%3F#gs). For this tutorial, we’ll use the **123456** as an example.
First, let’s to prepare the shell environment to recognize executables in the new directories we’re going to create. Create or edit *~/.bash_profile* and add the following lines:
PATH=/home/123456/data/opt/:$PATH PATH=/home/123456/data/node_modules/.bin/:$PATH export PATH
Save the file and exit, then source *~/.bash_profile* to reflect the changes without logging out and back in:
$ . ~/.bash_profile
### Building Node
Now let’s [grab Node.js from GitHub](http://github.com/joyent/node):
$ git clone https://github.com/joyent/node.git $ cd node $ mkdir -p /home/123456/data/opt $ ./configure --prefix=/home/123456/data/opt/ $ make && make install
If all goes well (that make can take a while), you should now have a fully-functioning Node.js installation. Test it out by typing `node -v`. If you see a version number and not an error, you’re in business!
### But wait! There’s less!
Now it’s time to download and install **less**.
$ cd ~/data/ $ npm update $ npm install less
This will install the **lessc** binary in the *~/data/node_modules/.bin* directory which we added to our $PATH. The installation may fail. If it does, just try running it again a few times until it works.
If all goes as well for you as it did for me, you should now be able to use **lessc** from anywhere within your jailed shell environment!