From ed4ef91d951bb62af622bb9334f794ba5ceff9d3 Mon Sep 17 00:00:00 2001 From: ricardocolonia Date: Sun, 19 Nov 2023 14:02:49 -0500 Subject: [PATCH 1/3] Update odoo_install.sh --- odoo_install.sh | 221 ++++++++++++++++++++++++------------------------ 1 file changed, 112 insertions(+), 109 deletions(-) diff --git a/odoo_install.sh b/odoo_install.sh index 52a7902e..8bdb0e88 100644 --- a/odoo_install.sh +++ b/odoo_install.sh @@ -1,9 +1,9 @@ #!/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 22.04 (could be used for other version too) # Author: Yenthe Van Ginneken #------------------------------------------------------------------------------- -# This script will install Odoo on your Ubuntu server. It can install multiple Odoo instances +# This script will install Odoo on your Ubuntu 22.04 server. It can install multiple Odoo instances # in one Ubuntu because of the different xmlrpc_ports #------------------------------------------------------------------------------- # Make a new file: @@ -22,15 +22,13 @@ 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. -# IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 16.0 -OE_VERSION="16.0" +# 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="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" # Set this to True if you want to install Nginx! -INSTALL_NGINX="False" +INSTALL_NGINX="True" # 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 @@ -41,7 +39,7 @@ 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" ## @@ -49,46 +47,32 @@ ADMIN_EMAIL="odoo@example.com" ## === 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 +## https://www.odoo.com/documentation/13.0/setup/install.html#debian-ubuntu -# 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 +WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb #-------------------------------------------------- # Update Server #-------------------------------------------------- echo -e "\n---- Update Server ----" # universe package is for Ubuntu 18.x -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" +#sudo add-apt-repository universe +# libpng12-0 dependency for wkhtmltopdf +#sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ xenial main" +echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list sudo apt-get update sudo apt-get upgrade -y -sudo apt-get install libpq-dev - +sudo apt install curl ca-certificates gnupg2 lsb-release ubuntu-keyring -y #-------------------------------------------------- # 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-14 -else - echo -e "\n---- Installing the default postgreSQL version based on Linux version ----" - sudo apt-get install postgresql postgresql-server-dev-all -y -fi +sudo curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null + +sudo sh -c 'echo "deb [arch=amd64] 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 postgresql-server-dev-all postgis -y echo -e "\n---- Creating the ODOO PostgreSQL User ----" sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true @@ -97,42 +81,47 @@ 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 python3 python3-pip -sudo apt-get install git python3-cffi build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libpng-dev libjpeg-dev gdebi -y +sudo apt-get install git python3 python3-pip build-essential wget python3-dev python3-venv python3-wheel python3-cffi libssl1.1 libxslt1-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libpng-dev libjpeg-dev gdebi -y + +echo -e "\n--- upgrading Python 3 + pip3 --" +sudo pip3 install --upgrade pip +sudo pip3 install html2text 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---- Installing nodeJS NPM and rtlcss for LTR support ----" -sudo apt-get install nodejs npm -y +sudo apt-get install nodejs -y sudo npm install -g rtlcss +#-------------------------------------------------- +# Install Bangla fonts +#-------------------------------------------------- +echo -e "\n---- Installing Lohit Bengali font. ----" +sudo apt install fonts-beng -y + + + #-------------------------------------------------- # 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 - - - if [[ $(lsb_release -r -s) == "22.04" ]]; then - # Ubuntu 22.04 LTS - sudo apt install wkhtmltopdf -y - else - # For older versions of Ubuntu + echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 15 ----" + # echo -e "\n ---- Installing libssl1.1" + + # sudo wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb + # sudo apt install ./libssl1.1_1.1.0g-2ubuntu4_amd64.deb -y + + #pick up correct one from x64 & x32 versions: + if [ "`getconf LONG_BIT`" == "64" ];then + _url=$WKHTMLTOX_X64 + fi + sudo wget $_url sudo gdebi --n `basename $_url` - fi - - sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin - sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin + 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!" + echo "Wkhtmltopdf isn't installed due to the choice of the user!" fi echo -e "\n---- Create ODOO system user ----" @@ -157,8 +146,8 @@ if [ $IS_ENTERPRISE = "True" ]; then 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) + GITHUB_RESPONSE="False" + #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." @@ -168,7 +157,7 @@ if [ $IS_ENTERPRISE = "True" ]; then 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 -H pip3 install num2words ofxparse dbfread ebaysdk firebase_admin pyOpenSSL @@ -196,13 +185,14 @@ fi sudo su root -c "printf 'admin_passwd = ${OE_SUPERADMIN}\n' >> /etc/${OE_CONFIG}.conf" if [ $OE_VERSION > "11.0" ];then sudo su root -c "printf 'http_port = ${OE_PORT}\n' >> /etc/${OE_CONFIG}.conf" + sudo su root -c "printf 'gevent_port = ${LONGPOLLING_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" + sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise/addons,${OE_HOME_EXT}/addons,${OE_HOME}/custom/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 @@ -297,10 +287,29 @@ 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 { + echo -e "\n---- Installing and setting up Nginx ----" + + echo -e "\n---- Importing an official nginx signing key so apt could verify the packages authenticity ----" + curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null + + echo -e "\n---- Verifing that the downloaded file contains the proper key ----" + gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg + + echo -e "\n---- set up the apt repository for stable nginx packages ----" + echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list + + sudo apt update; sudo apt install nginx -y + sudo -H pip3 install certbot certbot-nginx + + + cat < ~/odoo.conf + upstream odooserver { + server 127.0.0.1:$OE_PORT; + } + upstream odoolongpoll { + server 127.0.0.1:$LONGPOLLING_PORT; + } + server { listen 80; # set proper server name after domain set @@ -333,8 +342,8 @@ server { http_503; types { - text/less less; - text/scss scss; + text/less less; + text/scss scss; } # enable data compression @@ -348,40 +357,42 @@ server { client_max_body_size 0; location / { - proxy_pass http://127.0.0.1:$OE_PORT; - # by default, do not forward anything - proxy_redirect off; + proxy_pass http://odooserver; + # by default, do not forward anything + proxy_redirect off; } - location /longpolling { - proxy_pass http://127.0.0.1:$LONGPOLLING_PORT; + location /websocket { + proxy_pass http://odoolongpoll; } - 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"; + expires 2d; + proxy_pass http://odooserver; + 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; + proxy_cache_valid 200 302 60m; + proxy_cache_valid 404 1m; + proxy_buffering on; + expires 864000; + proxy_pass http://odooserver; + } + location /wait { + #proxy_pass http://odooserver; + proxy_cookie_path / "/; secure; HttpOnly; SameSite=None; Secure"; + } } -} EOF - - sudo mv ~/odoo /etc/nginx/sites-available/$WEBSITE_NAME - sudo ln -s /etc/nginx/sites-available/$WEBSITE_NAME /etc/nginx/sites-enabled/$WEBSITE_NAME - 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/$WEBSITE_NAME" + + sudo mv ~/odoo.conf /etc/nginx/conf.d/ + # sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo + sudo rm /etc/nginx/conf.d/default.conf + 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/conf.d/odoo.conf" else - echo "Nginx isn't installed due to choice of the user!" + echo "Nginx isn't installed due to choice of the user!" fi #-------------------------------------------------- @@ -389,24 +400,16 @@ fi #-------------------------------------------------- if [ $INSTALL_NGINX = "True" ] && [ $ENABLE_SSL = "True" ] && [ $ADMIN_EMAIL != "odoo@example.com" ] && [ $WEBSITE_NAME != "_" ];then - sudo apt-get update -y - sudo apt install snapd -y - sudo snap install core; snap refresh core - sudo snap install --classic certbot - sudo apt-get install python3-certbot-nginx -y - sudo certbot --nginx -d $WEBSITE_NAME --noninteractive --agree-tos --email $ADMIN_EMAIL --redirect - sudo service nginx reload - echo "SSL/HTTPS is enabled!" + sudo certbot --nginx -d $WEBSITE_NAME --noninteractive --agree-tos --email $ADMIN_EMAIL --redirect + sudo service nginx reload + echo "SSL/HTTPS is enabled!" else - echo "SSL/HTTPS isn't enabled due to choice of the user or because of a misconfiguration!" - if $ADMIN_EMAIL = "odoo@example.com";then - echo "Certbot does not support registering odoo@example.com. You should use real e-mail address." - fi - if $WEBSITE_NAME = "_";then - echo "Website name is set as _. Cannot obtain SSL Certificate for _. You should use real website address." - fi + echo "SSL/HTTPS isn't enabled due to choice of the user or because of a misconfiguration!" fi +sudo -H pip3 install pyOpenSSL==21.0.0 +sudo -H pip3 install cryptography==36.0.2 + echo -e "* Starting Odoo Service" sudo su root -c "/etc/init.d/$OE_CONFIG start" echo "-----------------------------------------------------------" @@ -417,12 +420,12 @@ echo "Configuraton file location: /etc/${OE_CONFIG}.conf" echo "Logfile location: /var/log/$OE_USER" echo "User PostgreSQL: $OE_USER" echo "Code location: $OE_USER" -echo "Addons folder: $OE_USER/$OE_CONFIG/addons/" +echo "Addons folder: /$OE_USER/custom/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" if [ $INSTALL_NGINX = "True" ]; then - echo "Nginx configuration file: /etc/nginx/sites-available/$WEBSITE_NAME" + echo "Nginx configuration file: /etc/nginx/conf.d/odoo.conf" fi echo "-----------------------------------------------------------" From 18bd5027df406aba006072419eb16ac091b27372 Mon Sep 17 00:00:00 2001 From: ricardocolonia Date: Sun, 19 Nov 2023 21:08:49 -0500 Subject: [PATCH 2/3] Update README.md From 53485ce6b90db36d4b9b10305501ac4f141e6eba Mon Sep 17 00:00:00 2001 From: ricardocolonia Date: Sun, 19 Nov 2023 21:09:40 -0500 Subject: [PATCH 3/3] Update README.md