mirror of https://github.com/nocodb/nocodb
Naveen MR
3 years ago
1 changed files with 189 additions and 0 deletions
@ -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://<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. |
Loading…
Reference in new issue