Installing Node.js on GoDaddy Shared Hosting
The common response to the question "How do I install Node.js on GoDaddy shared hosting?" is "it's impossible!".
Well, it’s not, in fact it’s easy! After struggling for hours I finally found this awesome guide.
These are the steps I took specifically for GoDaddy cPanel Shared hosting.
Installation
Disclaimer: I take no responsiblity for any damages or any other liability. These are only the steps that I took, if you follow them, you do so at entirely your own risk.
Step 1: Get Shell Access
First access you server's shell through SSH. Instructions for cPanel are here. I'm on Windows 10, so I used PuTTY.
Step 2: Check for Previous Installs
By the time you're reading this, GoDaddy may already install Node.js. So, lets make sure node, npm or nvm are not already installed. In the bash shell enter:
which node
which npm
which nvm
If they return nothing you're good to carry on.
Step 3: Install Node Version Manager
Node Version Manager allows Node.js installation without the need for root access via the sudo
.
I installed this in my home directory i.e. /home/username/ to get here you can enter.
To install enter in bash:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
Check the NVM GitHub page for instructions on installing a newer version
To make sure it's installed enter
nvm --version
Step 4: Installing Node.js
Now we can get around to installing Node.js . To install the latest version enter in bash:
nvm install node
You can now set this as the default via bash:
nvm alias default node
To check that worked enter in bash:
node -v
npm -v
Both should return their versions. Before we get our hopes up, we'll likely need to do some configuration.
Configuration
Once I'd finally got Node.js installed I encountered problems running NPM packages globally. The solution was to add some lines to environment variables.
Step 5: Check NPM Globals
The default location for global packages is home/yourusername/local/bin . You'll be able to see where your global packages are installed. To check if that's needed enter in bash:
npm list -g
If you're receiving the message along the lines of not found in $PATH
you will be unable to run global packages.
Step 6: Add to Bash Startup
To fix that add the following line to the file .bashrc which is located in your home directory (remember to alter it if your global package directory is different):
export PATH="$PATH:$HOME/local/bin"
Conclusion
Finally I could use Node.js and NPM as I pleased! The irony, to all of this, is that I didn't need Node running on my webserver.
All I wanted to do was get this blog up and running with Hexo. On the other hand, lesson learned, and hopefully this information will prove useful to others. It does also mean that Node.js is available for use in the future, should the need arise.
Lastly for laughs here's some of the approaches that didn't work.
sudo apt-get install nodeJs
- I couldn't use sudo because I don't have root access. That much is obvious.- Download latest build and
make install
- I could download the latest binaries to the server, but couldn't build, because the GCC compiler version is too old.