From 49eafe9fc2c84f384193d932d289d833d69675e9 Mon Sep 17 00:00:00 2001 From: Naveen MR Date: Thu, 23 Sep 2021 19:54:26 +0100 Subject: [PATCH] feature : step by step instructions to run on TrueNAS / FreeBSD-Jail --- docker-compose/TrueNAS/README.md | 189 +++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 docker-compose/TrueNAS/README.md diff --git a/docker-compose/TrueNAS/README.md b/docker-compose/TrueNAS/README.md new file mode 100644 index 0000000000..40a088d755 --- /dev/null +++ b/docker-compose/TrueNAS/README.md @@ -0,0 +1,189 @@ +# Installing NocoDB in FreeBSD/FreeNAS/TrueNAS jail + +> As provided by [Zamana](https://github.com/Zamana) [here](https://gist.github.com/Zamana/e9281d736f9e9ce5882c6f4b140a590e) + +First of all, make sure to refer and understand the general instructions in the official **NocoDB** site: + +https://docs.nocodb.com/getting-started/installation + +What you'll find here are the specific instructions to setup **NocoDB** in a FreeBSD system, or in a FreeNAS/TrueNAS CORE jail. + +This was originally done in a TrueNAS CORE 12.0-U5.1, which uses FreeBSD 12.4-RELEASE-p6 as base system. + + +## 0. Adjust your date/time (if necessary). + +In my specific case it is. +``` +# rm /etc/localtime +# ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime +``` + +## 1. Update your packages: +``` +# pkg update +# pkg upgrade +``` + +## 2. Create the user 'nocodb' + +and set its home folder to '/usr/local/share/nocodb', that's where the application will be saved: +``` +# pw add user nocodb -d /usr/local/share/nocodb +``` + +## 3. Install the packages + +'git' and 'npm', and optionaly the database(s) you intend to use. By default **NocoDB** uses sqlite3: +``` +# pkg install git npm postgresql14-server postgresql14-client +``` + +## 4. Clone the repository: + +Go to the 'nocodb' home folder, clone the repository, and grant the access: +``` +# cd /usr/local/share/nocodb +# git clone https://github.com/nocodb/nocodb-seed +# chown -R nocodb:nocodb nocodb-seed +``` + +## 5. Install the whole shebang + +Enter in the folder just created and run the 'install' command: +``` +# cd nocodb-seed +# npm install +``` + +If everything ran fine, you are ready to run the app, but hold on, because you'll need to make the FreeBSD setup. + + +## 6. Folder for the PID + +Create a folder to save the PID file for the process, and grant the access: +``` +# mkdir /var/run/nocodb/ +# chown -R nocodb:nocodb /var/run/nocodb +``` + +## 7. Init script + +Save this file with the name **nocodb** at '/usr/local/etc/rc.d': +``` +#!/bin/sh + +# +# Author: C. R. Zamana (czamana at gmail dot com) +# +# PROVIDE: nocodb +# REQUIRE: networking +# KEYWORD: + +. /etc/rc.subr + +name="nocodb" +rcvar="${name}_enable" +load_rc_config ${name} + +: ${nocodb_enable:="NO"} +: ${nocodb_user:="nocodb"} + +pidfile="/var/run/nocodb/nocodb.pid" + +start_precmd="nocodb_precmd" + +PATH=$PATH:/usr/local/bin + +nocodb_precmd() { + cd $(getent passwd ${nocodb_user} | cut -d\: -f6) + cd nocodb-seed +} + +command="/usr/sbin/daemon" +command_args="-P ${pidfile} /usr/local/bin/npm start > /dev/null" + +run_rc_command "$1" +``` + +and grant the execution permissions: +``` +# chmod +x /usr/local/etc/rc.d/nocodb +``` + +## 8. Run at boot + +Configure the service to run automagically at system/jail boot: +``` +# sysrc nocodb_enable=YES +``` + +From now on you can control the service with: +``` +# service nocodb start | stop | status +``` + +but first is necessary to change the IP where **NocoDB** listens. That's because it came by default listening at **localhost** only, which is not pratical if you need to access the app from outside the server, what's generally true. + +For this, edit the file **.env** and add a definition for the variable **HOST** pointing to your IP or more generally to **0.0.0.0**, so **NocoDB** will listen on every interface available. For example: +``` +# vi /usr/local/share/nocodb/nocodb-seed/.env +``` +and set **HOST** to your desired IP: + +``` +HOST=192.168.0.101 +``` + +## 9. Change 'index.js' + +Now edit the file 'usr/local/share/nocodb/nocodb-seed/index.js', and change the line with **localhost** to **${process.env.HOST}**. At the end you want your **index.js** file to looks like this: +``` +(async () => { + const app = require('express')(); + const {Noco} = require("nocodb"); + app.use(await Noco.init({})); + console.log(`Visit : ${process.env.HOST}:${process.env.PORT}/dashboard`) + app.listen(process.env.PORT); +})() +``` + +## 10. Start the service: +``` +# service start nocodb +``` + +and make sure that it is running and listening at port 8080: +``` +# service status nocodb +nocodb is running as pid 60058. <<-- your PID will be different... + +# netstat -an | grep -iw listen +tcp46 0 0 *.8080 *.* LISTEN <<<---- here it is +tcp46 0 0 *.8083 *.* LISTEN +tcp4 0 0 127.0.0.1.5432 *.* LISTEN +tcp6 0 0 ::1.5432 *.* LISTEN +``` + +Now the service should be accessible through your browser: + +``` +http://:8080 +``` + +Congratulations! + + +## 11. Update/Upgrade + +In order to update/upgrade the app, execute: +``` +# service nocodb stop +# cd /usr/local/share/nocodb/nocodb-seed +# git pull +# npm uninstall nocodb +# npm install --save nocodb +# service nocodb start +``` + +> Feel free to point out any mistakes I made, including misspellings, typos and grammar errors. \ No newline at end of file