Support #900
Updated by Daniel Curtis over 7 years ago
This is a guide for installing PiCluster on FreeBSD 11. h2. Prepare the Environment * Make sure the system is up to date: <pre> pkg update && pkg upgrade </pre> * Install prerequisites: <pre> pkg install pacman -S docker git node npm python </pre> * Add the picluster user: <pre> pw user add picluster -m -s /bin/sh </pre> h2. Install PiCluster * Make the web app directory: <pre> mkdir -p /usr/local/www </pre> * Download the latest PiCluster version from GitHub: <pre> git clone https://github.com/rusher81572/picluster.git /usr/local/www/picluster </pre> * Change the ownership of picluster directory: <pre> chown -R picluster /usr/local/www/picluster </pre> * Switch to the picluster user and switch to the picluster directory: <pre> su - picluster </pre> * Edit the config.json file: <pre> vi config.json </pre> #* And edit the config file to suit your environment: *NOTE*: Use the web_connect key to the value of the host systems IP address. Otherwise you will get connection errors while starting the agent. <pre> { "token":"45FG9A23DE12045E20BB854AC", "docker":"/usr/local/www/picluster/docker", "server_port":"3000", "agent_port": "3001", "layout": [ {"node":"192.168.1.191", "mysql":"-p 3306:3306","nginx":"-p 80:80"}, {"node":"192.168.1.192", "openvpn":"-p 1194:1194"}], "hb": [ {"node":"192.168.1.191","mysql":"3306", "nginx": "80"}, {"node":"192.168.1.192","openvpn":"1194"} ], "vip": [ {"node":"192.168.1.191","vip_eth_device":"eth0", "slave": "192.168.1.192", "vip_ping_time": "10000"}, {"node":"192.168.1.192","vip_eth_device":"eth0","slave": "192.168.1.191", "vip_ping_time": "15000"} ], "commandlist": [{ "SystemUpdate": "pkg update && pkg upgrade -y" }], "vip_ip": "192.168.1.202", "autostart_containers": "enabled", "rsyslog_logfile": "/var/log/syslog", "rsyslog_host": "192.168.1.202", "automatic_heartbeat": "enabled", "heartbeat_interval": "300000", "syslog": "dmesg", "web_username": "admin", "web_password":"admin", "web_connect":"192.168.1.190", "web_port":"3003" } </pre> *NOTE*: for aesthetics, I changed the picluster_config environment variable to all caps: <pre> cd /usr/local/www/picluster/server sed -i.bak -e "s/picluster_config/PICLUSTER_CONFIG/g" server.js cd ../agent sed -i.bak -e "s/picluster_config/PICLUSTER_CONFIG/g" agent.js cd ../web sed -i.bak -e "s/picluster_config/PICLUSTER_CONFIG/g" webconsole.js </pre> * Install and run server: *NOTE*: There is currently a problem with the @npm install@ step not installing microtime. This can safely be ignored. <pre> cd /usr/local/www/picluster/server npm install </pre> * Install and run agent: *NOTE*: There is currently a problem with the @npm install@ step not installing microtime. This can safely be ignored. <pre> cd ../agent npm install </pre> * Install and run web console: <pre> cd ../web npm install </pre> * Exit back into root shell: <pre> exit </pre> h2. Init with pm2 * Install pm2: <pre> npm install -g pm2 </pre> * Install the pm2 systemd init script as the picluster user: <pre> pm2 startup rcd -u picluster --hp /home/picluster </pre> * Switch to the picluster user: <pre> su - picluster </pre> * Export the picluster config filepath environment variable: <pre> export PICLUSTER_CONFIG='/usr/local/www/picluster/config.json' </pre> * Start the server, agent, and webconsole scripts: <pre> pm2 start /usr/local/www/picluster/server/server.js pm2 start /usr/local/www/picluster/agent/agent.js pm2 start /usr/local/www/picluster/web/webconsole.js </pre> * Save the pm2 session to restart at boot: <pre> pm2 save </pre> * Kill pm2 in order to test the service starting later on: <pre> pm2 kill </pre> * Exit back to the root shell: <pre> exit </pre> * Start and enable pm2 picluster instance at boot: <pre> echo 'pm2_picluster_enable="YES"' >> /etc/rc.conf service pm2-picluster start </pre> h2. Resources * https://github.com/rusher81572/picluster