…
|
||
---|---|---|
.. | ||
README.md |
README.md
Installing NocoDB in FreeBSD/FreeNAS/TrueNAS jail
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://<jail|freebsd IP>: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.