Project

General

Profile

Support #647

Updated by Daniel Curtis over 8 years ago

This is a guide on installing JSbin on FreeBSD. 

 *NOTE*: -After working on getting JSbin to install on FreeBSD for many hours, I was unable to get it working.- 
 *UPDATE*: I found that JSbin works on node v0.10, the default nodejs version for FreeBSD is v0.12. Once I installed the older version JSbin installed correctly. 

 h2. Prepare the system 

 * Make sure the system is up to date: 
 <pre> 
 pkg update && pkg upgrade 
 </pre> 

 * Install portmaster 
 <pre> 
 pkg install portmaster 
 pkg2ng 
 </pre> 

 * Install node010 and npm from the ports tree: 
 <pre> 
 portmaster www/node010 www/npm 
 </pre> 
 *NOTE*: Make sure to check [X]node010 when configuring the npm port 

 h2. Install JSbin with npm 

 * Install JSbin using npm: 
 <pre> 
 npm install -g --sqlite=/usr/local jsbin 
 </pre> 

 * Create a new config file and edit it as necessary: 
 <pre> 
 cd /usr/local/lib/node_modules/jsbin 
 cp config.default.json config.local.json 
 </pre> 

 * Test JSbin in development mode: 
 <pre> 
 jsbin 
 </pre> 

 * Go to http://localhost:3000 in a web browser 

 h2. Install JSbin from GitHub 

 * Create a working source directory: 
 <pre> 
 mkdir /usr/local/src && cd /usr/local/src 
 </pre> 

 * Clone JSbin from GitHub: 
 <pre> 
 git clone https://github.com/remy/jsbin.git 
 cd jsbin 
 </pre> 

 * Install grunt-cli globally using npm: 
 <pre> 
 npm install -g grunt-cli 
 </pre> 

 * Then install the developer dependencies: 
 <pre> 
 npm install -g --sqlite=/usr/local --dev 
 </pre> 

 h2. Running JSbin with PM2 

 * Install pm2 globally: 
 <pre> 
 npm install -g pm2 
 </pre> 

 * Add a jsbin user to separate privileges: 
 <pre> 
 pw add user -n jsbin -m -d /usr/local/lib/node_modules/jsbin -s /bin/sh -c "JSbin" 
 </pre> 

 * Change the ownership of the global jsbin folder to the jsbin user: 
 <pre> 
 chown -R jsbin /usr/local/lib/node_modules/jsbin 
 </pre> 

 * Switch to the jsbin user: 
 <pre> 
 su - jsbin 
 </pre> 

 * Start jsbin using pm2: 
 <pre> 
 pm2 start bin/jsbin 
 </pre> 

 h2. JSbin FreeBSD Boot Script 

 * Create a jsbin FreeBSD init script: 
 <pre> 
 vi /usr/local/etc/rc.d/jsbin 
 </pre> 
 #* and add the following 
 <pre> 
 #!/bin/sh 

 # PROVIDE: jsbin 
 # KEYWORD: shutdown 

 . /etc/rc.subr 

 name="pm2"  
 start_cmd="${name}_start"  
 stop_cmd="${name}_stop"  

 pm2_start() { 
    echo "pm2 starting"  
    su - jsbin -c "/usr/local/bin/pm2 start /usr/local/lib/node_modules/jsbin/bin/jsbin; exit"   
 } 

 pm2_stop() { 
    echo "pm2 stopping"  
    su - jsbin -c "/usr/local/bin/pm2 kill; exit"  
 } 

 run_rc_command "$1" 
 </pre>  

 * And make it executable: 
 <pre> 
 chmod +x /usr/local/etc/rc.d/jsbin 
 </pre> 

 * Start and enable jsbin at boot 
 <pre> 
 echo 'jsbin_enable="YES"' >> /etc/rc.conf 
 service jsbin start 
 </pre> 

 h2. Resources 

 * https://github.com/jsbin/jsbin/blob/master/docs/running-your-own-jsbin.md

Back