多维表格
 
 
 
 
 
 
Naveen MR e1b010829f refactor : folder structure 3 years ago
..
README.md refactor : folder structure 3 years ago

README.md

Installing NocoDB in FreeBSD/FreeNAS/TrueNAS jail

As provided by Zamana here

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.