diff --git a/README.md b/README.md index 1fbafc82..cdb259cf 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,15 @@ sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/17.0/odoo_in ##### 2. Modify the parameters as you wish. There are a few things you can configure, this is the most used list:
```OE_USER``` will be the username for the system user.
-```GENERATE_RANDOM_PASSWORD``` if this is set to ```True``` the script will generate a random password, if set to ```False```we'll set the password that is configured in ```OE_SUPERADMIN```. By default the value is ```True``` and the script will generate a random and secure password.
```INSTALL_WKHTMLTOPDF``` set to ```False``` if you do not want to install Wkhtmltopdf, if you want to install it you should set it to ```True```.
```OE_PORT``` is the port where Odoo should run on, for example 8069.
```OE_VERSION``` is the Odoo version to install, for example ```17.0``` for Odoo V17.
```IS_ENTERPRISE``` will install the Enterprise version on top of ```17.0``` if you set it to ```True```, set it to ```False``` if you want the community version of Odoo 17.
-```OE_SUPERADMIN``` is the master password for this Odoo installation.
+```INSTALL_POSTRESQL_SIXTEEN``` is set to ```True``` by default for improved performance. Set to ```False``` if you want to install repository based PostgreSQL version.
+```REMOTE_POSTGRESQL``` is set to ```False``` by default. Set this to ```True``` if you have a dedicated PostgreSQL server running and do not need to install PostgreSQL. If ```True``` you must configure the ```OE_DB_HOST, OE_DB_USER, OE_DB_PORT, and OE_DB_PASS``` parameters.
```INSTALL_NGINX``` is set to ```False``` by default. Set this to ```True``` if you want to install Nginx.
+```OE_SUPERADMIN``` is the master password for this Odoo installation.
+```GENERATE_RANDOM_PASSWORD``` if this is set to ```True``` the script will generate a random password, if set to ```False```we'll set the password that is configured in ```OE_SUPERADMIN```. By default the value is ```True``` and the script will generate a random and secure password.
```WEBSITE_NAME``` Set the website name here for nginx configuration
```ENABLE_SSL``` Set this to ```True``` to install [certbot](https://github.com/certbot/certbot) and configure nginx with https using a free Let's Encrypted certificate
```ADMIN_EMAIL``` Email is needed to register for Let's Encrypt registration. Replace the default placeholder with an email of your organisation.
diff --git a/odoo_install.sh b/odoo_install.sh index 9cf35ae0..5a6c4113 100644 --- a/odoo_install.sh +++ b/odoo_install.sh @@ -1,15 +1,15 @@ #!/bin/bash ################################################################################ -# Script for installing Odoo on Ubuntu 16.04, 18.04, 20.04 and 22.04 (could be used for other version too) +# Script for installing Odoo on Ubuntu 20.04, 22.04 and 24.04 (could be used for other version too with adjustments) # Author: Yenthe Van Ginneken #------------------------------------------------------------------------------- # This script will install Odoo on your Ubuntu server. It can install multiple Odoo instances -# in one Ubuntu because of the different xmlrpc_ports +# in one Ubuntu because of the different http_ports #------------------------------------------------------------------------------- # Make a new file: -# sudo nano odoo-install.sh +# sudo nano odoo_install.sh # Place this content in it and then make the file executable: -# sudo chmod +x odoo-install.sh +# sudo chmod +x odoo_install.sh # Execute the script to install Odoo: # ./odoo-install ################################################################################ @@ -22,13 +22,20 @@ OE_HOME_EXT="/$OE_USER/${OE_USER}-server" INSTALL_WKHTMLTOPDF="True" # Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.) OE_PORT="8069" -# Choose the Odoo version which you want to install. For example: 16.0, 15.0, 14.0 or saas-22. When using 'master' the master version will be installed. +# Choose the Odoo version which you want to install. For example: 17.0, 16.0, 15.0, or saas-22. When using 'master' the master version will be installed. # IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 17.0 OE_VERSION="17.0" # Set this to True if you want to install the Odoo enterprise version! -IS_ENTERPRISE="False" -# Installs postgreSQL V14 instead of defaults (e.g V12 for Ubuntu 20/22) - this improves performance -INSTALL_POSTGRESQL_FOURTEEN="True" +IS_ENTERPRISE="True" +# Installs postgreSQL V16 instead of defaults (e.g V12 for Ubuntu 20/22) - this improves performance +INSTALL_POSTGRESQL_SIXTEEN="True" +# Set to True and provide the Database Parameters if using remote PostgresSQL Server +REMOTE_POSTGRESQL="False" +# Set the Database Parameters to be added to the Odoo config file +OE_DB_HOST="" +OE_DB_USER="" +OE_DB_PORT="" +OE_DB_PASS="" # Set this to True if you want to install Nginx! INSTALL_NGINX="False" # Set the superadmin password - if GENERATE_RANDOM_PASSWORD is set to "True" we will automatically generate a random password, otherwise we use this one @@ -41,58 +48,78 @@ WEBSITE_NAME="_" # Set the default Odoo longpolling port (you still have to use -c /etc/odoo-server.conf for example to use this.) LONGPOLLING_PORT="8072" # Set to "True" to install certbot and have ssl enabled, "False" to use http -ENABLE_SSL="True" +ENABLE_SSL="False" # Provide Email to register ssl certificate ADMIN_EMAIL="odoo@example.com" -## -### WKHTMLTOPDF download links -## === Ubuntu Trusty x64 & x32 === (for other distributions please replace these two links, -## in order to have correct version of wkhtmltopdf installed, for a danger note refer to -## https://github.com/odoo/odoo/wiki/Wkhtmltopdf ): -## https://www.odoo.com/documentation/16.0/administration/install.html - -# Check if the operating system is Ubuntu 22.04 -if [[ $(lsb_release -r -s) == "22.04" ]]; then - WKHTMLTOX_X64="https://packages.ubuntu.com/jammy/wkhtmltopdf" - WKHTMLTOX_X32="https://packages.ubuntu.com/jammy/wkhtmltopdf" - #No Same link works for both 64 and 32-bit on Ubuntu 22.04 -else - # For older versions of Ubuntu - WKHTMLTOX_X64="https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.$(lsb_release -c -s)_amd64.deb" - WKHTMLTOX_X32="https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.$(lsb_release -c -s)_i386.deb" -fi + +# Check Ubuntu version to adjust script as needed +UBUNTU_VERSION=$(lsb_release -cs) # Get the codename of the Ubuntu version + +# Set the URL for WKHTMLTOPDF 0.12.6 needed for Ubuntu 20.04 +echo "Adding URL for WKHTMLTOPDF 0.12.6" +WKHTMLTOX_X64="https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.6/wkhtmltox_0.12.6-1.$(lsb_release -c -s)_amd64.deb" +WKHTMLTOX_X32="https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.6/wkhtmltox_0.12.6-1.$(lsb_release -c -s)_i386.deb" #-------------------------------------------------- # Update Server #-------------------------------------------------- echo -e "\n---- Update Server ----" -# universe package is for Ubuntu 18.x +sudo apt-get update +sudo apt install software-properties-common -y + +# Add the universe repository, which is available across these Ubuntu versions and add main resposity specific to Ubuntu 20.04, 22.04, or 24.04 sudo add-apt-repository universe -# libpng12-0 dependency for wkhtmltopdf for older Ubuntu versions -sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ xenial main" + +case $UBUNTU_VERSION in + focal) + echo "Adding repository for Ubuntu 20.04 (Focal)" + sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ focal main" + ;; + jammy) + echo "Adding repository for Ubuntu 22.04 (Jammy)" + sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ jammy main" + ;; + noble) + echo "Adding repository for Ubuntu 24.04 (Noble)" + sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ noble main" + ;; + *) + echo "Current Ubuntu version is $UBUNTU_VERSION. No specific repository added for this version." + ;; +esac + +# Update package lists and upgrade installed packages sudo apt-get update sudo apt-get upgrade -y + +# Install specific packages sudo apt-get install libpq-dev #-------------------------------------------------- # Install PostgreSQL Server #-------------------------------------------------- echo -e "\n---- Install PostgreSQL Server ----" -if [ $INSTALL_POSTGRESQL_FOURTEEN = "True" ]; then - echo -e "\n---- Installing postgreSQL V14 due to the user it's choise ----" - sudo curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg - sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' - sudo apt-get update - sudo apt-get install postgresql-16 + +# Check if REMOTE_POSTGRESQL is set to True to skip installation +if [ "$REMOTE_POSTGRESQL" = "True" ]; then + echo "PostgreSQL install skipped due to choice of the user!" else - echo -e "\n---- Installing the default postgreSQL version based on Linux version ----" - sudo apt-get install postgresql postgresql-server-dev-all -y + # Proceed with installation if REMOTE_POSTGRES is not True + if [ "$INSTALL_POSTGRESQL_SIXTEEN" = "True" ]; then + echo -e "\n---- Installing postgreSQL V16 as per user's choice ----" + sudo curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg + sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + sudo apt-get update + sudo apt-get install postgresql-16 + else + echo -e "\n---- Installing the default postgreSQL version based on Linux version ----" + sudo apt-get install postgresql postgresql-server-dev-all -y + fi + + echo -e "\n---- Creating the ODOO PostgreSQL User ----" + sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true fi - -echo -e "\n---- Creating the ODOO PostgreSQL User ----" -sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true - #-------------------------------------------------- # Install Dependencies #-------------------------------------------------- @@ -103,6 +130,10 @@ sudo apt-get install git python3-cffi build-essential wget python3-dev python3-v echo -e "\n---- Install python packages/requirements ----" sudo -H pip3 install -r https://github.com/odoo/odoo/raw/${OE_VERSION}/requirements.txt +echo -e "\n---- Fix pyOpenSSL Version Problems ----" +sudo -H pip3 uninstall pyopenssl +sudo -H pip install pyopenssl==22.1.0 + echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----" sudo apt-get install nodejs npm -y sudo npm install -g rtlcss @@ -110,29 +141,32 @@ sudo npm install -g rtlcss #-------------------------------------------------- # Install Wkhtmltopdf if needed #-------------------------------------------------- -if [ $INSTALL_WKHTMLTOPDF = "True" ]; then - echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 13 ----" - #pick up correct one from x64 & x32 versions: - if [ "`getconf LONG_BIT`" == "64" ];then - _url=$WKHTMLTOX_X64 +if [ "$INSTALL_WKHTMLTOPDF" = "True" ]; then + echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO ${OE_VERSION} ----" + + # Use apt install for Ubuntu 22.04 and 24.04 directly + UBUNTU_VERSION=$(lsb_release -r -s) + if [[ "$UBUNTU_VERSION" == "22.04" || "$UBUNTU_VERSION" == "24.04" ]]; then + # Ubuntu 22.04 LTS and 24.04 Noble Numbat + sudo apt install wkhtmltopdf -y else - _url=$WKHTMLTOX_X32 + # Pick the correct one from x64 & x32 versions: + if [ "`getconf LONG_BIT`" == "64" ]; then + _url=$WKHTMLTOX_X64 + else + _url=$WKHTMLTOX_X32 + fi + sudo wget $_url + + # Install using gdebi for older or other versions of Ubuntu not specified for direct apt install + sudo gdebi --n `basename $_url` fi - sudo wget $_url - - if [[ $(lsb_release -r -s) == "22.04" ]]; then - # Ubuntu 22.04 LTS - sudo apt install wkhtmltopdf -y - else - # For older versions of Ubuntu - sudo gdebi --n `basename $_url` - fi - - sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin - sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin + # Ensure wkhtmltopdf and wkhtmltoimage are linked correctly for all scenarios + sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf + sudo ln -s /usr/bin/wkhtmltoimage /usr/local/bin/wkhtmltoimage else - echo "Wkhtmltopdf isn't installed due to the choice of the user!" + echo "Wkhtmltopdf install skipped due to the choice of the user!" fi echo -e "\n---- Create ODOO system user ----" @@ -171,7 +205,7 @@ if [ $IS_ENTERPRISE = "True" ]; then echo -e "\n---- Added Enterprise code under $OE_HOME/enterprise/addons ----" echo -e "\n---- Installing Enterprise specific libraries ----" - sudo -H pip3 install num2words ofxparse dbfread ebaysdk firebase_admin pyOpenSSL + sudo -H pip3 install num2words ofxparse dbfread ebaysdk firebase_admin sudo npm install -g less sudo npm install -g less-plugin-clean-css fi @@ -185,7 +219,6 @@ sudo chown -R $OE_USER:$OE_USER $OE_HOME/* echo -e "* Create server config file" - sudo touch /etc/${OE_CONFIG}.conf echo -e "* Creating server config file" sudo su root -c "printf '[options] \n; This is the password that allows database operations:\n' >> /etc/${OE_CONFIG}.conf" @@ -206,6 +239,14 @@ if [ $IS_ENTERPRISE = "True" ]; then else sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons,${OE_HOME}/custom/addons\n' >> /etc/${OE_CONFIG}.conf" fi +if [ $REMOTE_POSTGRESQL = "True" ]; then + sudo su root -c "printf 'db_host = ${OE_DB_HOST}\n' >> /etc/${OE_CONFIG}.conf" + sudo su root -c "printf 'db_user = ${OE_DB_USER}\n' >> /etc/${OE_CONFIG}.conf" + sudo su root -c "printf 'db_port = ${OE_DB_PORT}\n' >> /etc/${OE_CONFIG}.conf" + sudo su root -c "printf 'db_password = ${OE_DB_PASS}\n' >> /etc/${OE_CONFIG}.conf" +else + sudo su root -c "printf ';db_host = \n' >> /etc/${OE_CONFIG}.conf" +fi sudo chown $OE_USER:$OE_USER /etc/${OE_CONFIG}.conf sudo chmod 640 /etc/${OE_CONFIG}.conf @@ -415,7 +456,15 @@ echo "Port: $OE_PORT" echo "User service: $OE_USER" echo "Configuraton file location: /etc/${OE_CONFIG}.conf" echo "Logfile location: /var/log/$OE_USER" -echo "User PostgreSQL: $OE_USER" +if [ $REMOTE_POSTGRESQL = "True" ]; then + echo "Remote PostgreSQL Specifications:" + echo "User PostgreSQL: $OE_DB_USER" + echo "Host PostgreSQL: $OE_DB_HOST" + echo "Port PostgreSQL: $OE_DB_PORT" + echo "Password PostgreSQL: $OE_DB_PASS" +else + echo "User PostgreSQL: $OE_USER" +fi echo "Code location: $OE_USER" echo "Addons folder: $OE_USER/$OE_CONFIG/addons/" echo "Password superadmin (database): $OE_SUPERADMIN" diff --git a/odoo_install_debian.sh b/odoo_install_debian.sh deleted file mode 100644 index 425ad77e..00000000 --- a/odoo_install_debian.sh +++ /dev/null @@ -1,359 +0,0 @@ -#!/bin/bash -################################################################################ -# Script for installing Odoo on Debian 10.0 (could be used for other version too) -# Authors: Yenthe Van Ginneken, César Cordero Rodríguez -# Maintainers: Yenthe Van Ginneken, César Cordero Rodríguez -#------------------------------------------------------------------------------- -# This script will install Odoo on your Debian 10.0 server. It can install multiple Odoo instances -# in one Debian because of the different xmlrpc_ports -#------------------------------------------------------------------------------- -# Make a new file: -# sudo nano odoo-install.sh -# Place this content in it and then make the file executable: -# sudo chmod +x odoo-install.sh -# Execute the script to install Odoo: -# ./odoo-install -################################################################################ - -OE_USER="odoo" -OE_HOME="/$OE_USER" -OE_HOME_EXT="/$OE_USER/${OE_USER}-server" -# The default port where this Odoo instance will run under (provided you use the command -c in the terminal) -# Set to true if you want to install it, false if you don't need it or have it already installed. -INSTALL_WKHTMLTOPDF="True" -# Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.) -OE_PORT="8069" -# Choose the Odoo version which you want to install. For example: 13.0, 12.0, 11.0 or saas-18. When using 'master' the master version will be installed. -# IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 13.0 -OE_VERSION="14.0" -# Set this to True if you want to install the Odoo enterprise version! -IS_ENTERPRISE="False" -# Set this to True if you want to install Nginx! -INSTALL_NGINX="False" -# Set the superadmin password - if GENERATE_RANDOM_PASSWORD is set to "True" we will automatically generate a random password, otherwise we use this one -OE_SUPERADMIN="admin" -# Set to "True" to generate a random password, "False" to use the variable in OE_SUPERADMIN -GENERATE_RANDOM_PASSWORD="True" -OE_CONFIG="${OE_USER}-server" -# Set the website name -WEBSITE_NAME="_" -# Set the default Odoo longpolling port (you still have to use -c /etc/odoo-server.conf for example to use this.) -LONGPOLLING_PORT="8072" - -## -### WKHTMLTOPDF download links -## === Debian Buster x64 & x32 === (for other distributions please replace these two links, -## in order to have correct version of wkhtmltopdf installed, for a danger note refer to -## https://github.com/odoo/odoo/wiki/Wkhtmltopdf ): -## https://www.odoo.com/documentation/12.0/setup/install.html#debian-ubuntu - -WKHTMLTOX_X64=https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb -WKHTMLTOX_X32=https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_i386.deb -#-------------------------------------------------- -# Update Server -#-------------------------------------------------- -echo -e "\n---- Update Server ----" -sudo apt-get update -sudo apt-get upgrade -y - -#-------------------------------------------------- -# Install PostgreSQL Server -#-------------------------------------------------- -echo -e "\n---- Install PostgreSQL Server ----" -sudo apt-get install postgresql -y - -echo -e "\n---- Creating the ODOO PostgreSQL User ----" -sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true - -#-------------------------------------------------- -# Install Dependencies -#-------------------------------------------------- -echo -e "\n--- Installing Python 3 + pip3 --" -sudo apt-get install git python3 python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt1-dev -y -sudo apt-get install libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less gdebi -y - -echo -e "\n---- Install python packages/requirements ----" -sudo pip3 install -r https://github.com/odoo/odoo/raw/${OE_VERSION}/requirements.txt - -echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----" -sudo apt-get install nodejs npm -y -sudo npm install -g rtlcss - -#-------------------------------------------------- -# Install Wkhtmltopdf if needed -#-------------------------------------------------- -if [ $INSTALL_WKHTMLTOPDF = "True" ]; then - echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 13 ----" - #pick up correct one from x64 & x32 versions: - if [ "`getconf LONG_BIT`" == "64" ];then - _url=$WKHTMLTOX_X64 - else - _url=$WKHTMLTOX_X32 - fi - sudo wget $_url - sudo gdebi --n `basename $_url` - sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin - sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin -else - echo "Wkhtmltopdf isn't installed due to the choice of the user!" -fi - -echo -e "\n---- Create ODOO system user ----" -sudo adduser --system --quiet --shell=/bin/bash --home=$OE_HOME --gecos 'ODOO' --group $OE_USER -#The user should also be added to the sudo'ers group. -sudo adduser $OE_USER sudo - -echo -e "\n---- Create Log directory ----" -sudo mkdir /var/log/$OE_USER -sudo chown $OE_USER:$OE_USER /var/log/$OE_USER - -#-------------------------------------------------- -# Install ODOO -#-------------------------------------------------- -echo -e "\n==== Installing ODOO Server ====" -sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/odoo $OE_HOME_EXT/ - -if [ $IS_ENTERPRISE = "True" ]; then - # Odoo Enterprise install! - echo -e "\n--- Create symlink for node" - sudo ln -s /usr/bin/nodejs /usr/bin/node - sudo su $OE_USER -c "mkdir $OE_HOME/enterprise" - sudo su $OE_USER -c "mkdir $OE_HOME/enterprise/addons" - - GITHUB_RESPONSE=$(sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/enterprise "$OE_HOME/enterprise/addons" 2>&1) - while [[ $GITHUB_RESPONSE == *"Authentication"* ]]; do - echo "------------------------WARNING------------------------------" - echo "Your authentication with Github has failed! Please try again." - printf "In order to clone and install the Odoo enterprise version you \nneed to be an offical Odoo partner and you need access to\nhttp://github.com/odoo/enterprise.\n" - echo "TIP: Press ctrl+c to stop this script." - echo "-------------------------------------------------------------" - echo " " - GITHUB_RESPONSE=$(sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/enterprise "$OE_HOME/enterprise/addons" 2>&1) - done - - echo -e "\n---- Added Enterprise code under $OE_HOME/enterprise/addons ----" - echo -e "\n---- Installing Enterprise specific libraries ----" - sudo pip3 install num2words ofxparse dbfread ebaysdk firebase_admin pyOpenSSL - sudo npm install -g less - sudo npm install -g less-plugin-clean-css -fi - -echo -e "\n---- Create custom module directory ----" -sudo su $OE_USER -c "mkdir $OE_HOME/custom" -sudo su $OE_USER -c "mkdir $OE_HOME/custom/addons" - -echo -e "\n---- Setting permissions on home folder ----" -sudo chown -R $OE_USER:$OE_USER $OE_HOME/* - -echo -e "* Create server config file" - - -sudo touch /etc/${OE_CONFIG}.conf -echo -e "* Creating server config file" -sudo su root -c "printf '[options] \n; This is the password that allows database operations:\n' >> /etc/${OE_CONFIG}.conf" -if [ $GENERATE_RANDOM_PASSWORD = "True" ]; then - echo -e "* Generating random admin password" - OE_SUPERADMIN=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) -fi -sudo su root -c "printf 'admin_passwd = ${OE_SUPERADMIN}\n' >> /etc/${OE_CONFIG}.conf" -if [ $OE_VERSION >= "12.0" ]; then - sudo su root -c "printf 'http_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" -else - sudo su root -c "printf 'xmlrpc_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" -fi -sudo su root -c "printf 'logfile = /var/log/${OE_USER}/${OE_CONFIG}.log\n' >> /etc/${OE_CONFIG}.conf" - -if [ $IS_ENTERPRISE = "True" ]; then - sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise/addons,${OE_HOME_EXT}/addons\n' >> /etc/${OE_CONFIG}.conf" -else - sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons,${OE_HOME}/custom/addons\n' >> /etc/${OE_CONFIG}.conf" -fi -sudo chown $OE_USER:$OE_USER /etc/${OE_CONFIG}.conf -sudo chmod 640 /etc/${OE_CONFIG}.conf - -echo -e "* Create startup file" -sudo su root -c "echo '#!/bin/sh' >> $OE_HOME_EXT/start.sh" -sudo su root -c "echo 'sudo -u $OE_USER $OE_HOME_EXT/odoo-bin --config=/etc/${OE_CONFIG}.conf' >> $OE_HOME_EXT/start.sh" -sudo chmod 755 $OE_HOME_EXT/start.sh - -#-------------------------------------------------- -# Adding ODOO as a deamon (initscript) -#-------------------------------------------------- - -echo -e "* Create init file" -cat < ~/$OE_CONFIG -#!/bin/sh -### BEGIN INIT INFO -# Provides: $OE_CONFIG -# Required-Start: \$remote_fs \$syslog -# Required-Stop: \$remote_fs \$syslog -# Should-Start: \$network -# Should-Stop: \$network -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Enterprise Business Applications -# Description: ODOO Business Applications -### END INIT INFO -PATH=/bin:/sbin:/usr/bin -DAEMON=$OE_HOME_EXT/odoo-bin -NAME=$OE_CONFIG -DESC=$OE_CONFIG -# Specify the user name (Default: odoo). -USER=$OE_USER -# Specify an alternate config file (Default: /etc/openerp-server.conf). -CONFIGFILE="/etc/${OE_CONFIG}.conf" -# pidfile -PIDFILE=/var/run/\${NAME}.pid -# Additional options that are passed to the Daemon. -DAEMON_OPTS="-c \$CONFIGFILE" -[ -x \$DAEMON ] || exit 0 -[ -f \$CONFIGFILE ] || exit 0 -checkpid() { -[ -f \$PIDFILE ] || return 1 -pid=\`cat \$PIDFILE\` -[ -d /proc/\$pid ] && return 0 -return 1 -} -case "\${1}" in -start) -echo -n "Starting \${DESC}: " -start-stop-daemon --start --quiet --pidfile \$PIDFILE \ ---chuid \$USER --background --make-pidfile \ ---exec \$DAEMON -- \$DAEMON_OPTS -echo "\${NAME}." -;; -stop) -echo -n "Stopping \${DESC}: " -start-stop-daemon --stop --quiet --pidfile \$PIDFILE \ ---oknodo -echo "\${NAME}." -;; -restart|force-reload) -echo -n "Restarting \${DESC}: " -start-stop-daemon --stop --quiet --pidfile \$PIDFILE \ ---oknodo -sleep 1 -start-stop-daemon --start --quiet --pidfile \$PIDFILE \ ---chuid \$USER --background --make-pidfile \ ---exec \$DAEMON -- \$DAEMON_OPTS -echo "\${NAME}." -;; -*) -N=/etc/init.d/\$NAME -echo "Usage: \$NAME {start|stop|restart|force-reload}" >&2 -exit 1 -;; -esac -exit 0 -EOF - -echo -e "* Security Init File" -sudo mv ~/$OE_CONFIG /etc/init.d/$OE_CONFIG -sudo chmod 755 /etc/init.d/$OE_CONFIG -sudo chown root: /etc/init.d/$OE_CONFIG - -echo -e "* Start ODOO on Startup" -sudo update-rc.d $OE_CONFIG defaults - -#-------------------------------------------------- -# Install Nginx if needed -#-------------------------------------------------- -if [ $INSTALL_NGINX = "True" ]; then - echo -e "\n---- Installing and setting up Nginx ----" - sudo apt install nginx -y - cat < ~/odoo - server { - listen 80; - - # set proper server name after domain set - server_name $WEBSITE_NAME; - - # Add Headers for odoo proxy mode - proxy_set_header X-Forwarded-Host \$host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto \$scheme; - proxy_set_header X-Real-IP \$remote_addr; - add_header X-Frame-Options "SAMEORIGIN"; - add_header X-XSS-Protection "1; mode=block"; - proxy_set_header X-Client-IP \$remote_addr; - proxy_set_header HTTP_X_FORWARDED_HOST \$remote_addr; - - # odoo log files - access_log /var/log/nginx/$OE_USER-access.log; - error_log /var/log/nginx/$OE_USER-error.log; - - # increase proxy buffer size - proxy_buffers 16 64k; - proxy_buffer_size 128k; - - proxy_read_timeout 900s; - proxy_connect_timeout 900s; - proxy_send_timeout 900s; - - # force timeouts if the backend dies - proxy_next_upstream error timeout invalid_header http_500 http_502 - http_503; - - types { - text/less less; - text/scss scss; - } - - # enable data compression - gzip on; - gzip_min_length 1100; - gzip_buffers 4 32k; - gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png; - gzip_vary on; - client_header_buffer_size 4k; - large_client_header_buffers 4 64k; - client_max_body_size 0; - - location / { - proxy_pass http://127.0.0.1:$OE_PORT; - # by default, do not forward anything - proxy_redirect off; - } - - location /longpolling { - proxy_pass http://127.0.0.1:$LONGPOLLING_PORT; - } - location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { - expires 2d; - proxy_pass http://127.0.0.1:$OE_PORT; - add_header Cache-Control "public, no-transform"; - } - # cache some static data in memory for 60mins. - location ~ /[a-zA-Z0-9_-]*/static/ { - proxy_cache_valid 200 302 60m; - proxy_cache_valid 404 1m; - proxy_buffering on; - expires 864000; - proxy_pass http://127.0.0.1:$OE_PORT; - } - } -EOF - - sudo mv ~/odoo /etc/nginx/sites-available/ - sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo - sudo rm /etc/nginx/sites-enabled/default - sudo service nginx reload - sudo su root -c "printf 'proxy_mode = True\n' >> /etc/${OE_CONFIG}.conf" - echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-available/odoo" -else - echo "Nginx isn't installed due to choice of the user!" -fi -echo -e "* Starting Odoo Service" -sudo su root -c "/etc/init.d/$OE_CONFIG start" -echo "-----------------------------------------------------------" -echo "Done! The Odoo server is up and running. Specifications:" -echo "Port: $OE_PORT" -echo "User service: $OE_USER" -echo "User PostgreSQL: $OE_USER" -echo "Code location: $OE_USER" -echo "Addons folder: $OE_USER/$OE_CONFIG/addons/" -echo "Password superadmin (database): $OE_SUPERADMIN" -echo "Start Odoo service: sudo service $OE_CONFIG start" -echo "Stop Odoo service: sudo service $OE_CONFIG stop" -echo "Restart Odoo service: sudo service $OE_CONFIG restart" -echo "-----------------------------------------------------------"