From 9e4bd99d053fb985d8ca4e1fcf3cb36914f7da3a Mon Sep 17 00:00:00 2001 From: "TRIXServer.com" Date: Tue, 23 Apr 2024 10:50:36 -0300 Subject: [PATCH] correct odoo.conf --- odoo_install.sh | 283 ++++++++++++++++++++++++++---------------------- 1 file changed, 154 insertions(+), 129 deletions(-) diff --git a/odoo_install.sh b/odoo_install.sh index 8c0584c..5a24ccc 100644 --- a/odoo_install.sh +++ b/odoo_install.sh @@ -17,31 +17,44 @@ 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="15.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}/${OE_USER}" + # 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" + # Set to "True" to install certbot and have ssl enabled, "False" to use http ENABLE_SSL="True" + # 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, @@ -51,17 +64,18 @@ ADMIN_EMAIL="odoo@example.com" 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)_amd64.deb" + #-------------------------------------------------- # Update Server #-------------------------------------------------- echo -e "\n---- Update Server ----" +sudo apt-get update +sudo apt-get install software-properties-common -y +sudo apt-get update # universe package is for Ubuntu 18.x sudo add-apt-repository universe # libpng12-0 dependency for wkhtmltopdf sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ xenial main" -sudo apt-get update -sudo apt-get install software-properties-common -y -sudo apt-get update sudo add-apt-repository ppa:linuxuprising/libpng12 -y sudo apt update sudo apt-get upgrade -y @@ -88,27 +102,34 @@ echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----" sudo apt-get install nodejs npm -y sudo npm install -g rtlcss +sudo pip3 install psycopg2-binary pdfminer.six +sudo -H pip3 install num2words ofxparse dbfread ebaysdk firebase_admin pyOpenSSL +sudo npm install -g less +sudo npm install -g less-plugin-clean-css +sudo ln -s /usr/bin/nodejs /usr/bin/node + #-------------------------------------------------- # 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 + 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!" + 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 @@ -124,7 +145,6 @@ sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/odoo $ if [ $IS_ENTERPRISE = "True" ]; then # Odoo Enterprise install! - sudo pip3 install psycopg2-binary pdfminer.six 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" @@ -143,9 +163,6 @@ 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 npm install -g less - sudo npm install -g less-plugin-clean-css fi echo -e "\n---- Create custom module directory ----" @@ -155,31 +172,39 @@ 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 mkdir /etc/$OE_USER -sudo chown -R $OE_USER /etc/$OE_USER -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 > "11.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 [ ! -e "/etc/${OE_CONFIG}.conf" ]; then + + echo -e "* Create server config file" + sudo mkdir /etc/$OE_USER + sudo chown -R $OE_USER /etc/$OE_USER + 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 > "11.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 -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 sudo ln -s $OE_HOME_EXT/odoo-bin /usr/bin/odoo sudo ln -s $OE_HOME_EXT/debian/odoo.service /etc/systemd/system/ @@ -191,91 +216,91 @@ sudo systemctl start odoo # Install Nginx if needed #-------------------------------------------------- if [ $INSTALL_NGINX = "True" ]; then - echo -e "\n---- Installing and setting up Nginx ----" - sudo apt install nginx -y - cat < ~/odoo + 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; - } + 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/$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 /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" else - echo "Nginx isn't installed due to choice of the user!" + echo "Nginx isn't installed due to choice of the user!" fi #-------------------------------------------------- @@ -283,14 +308,14 @@ fi #-------------------------------------------------- if [ $INSTALL_NGINX = "True" ] && [ $ENABLE_SSL = "True" ] && [ $ADMIN_EMAIL != "odoo@example.com" ] && [ $WEBSITE_NAME != "_" ];then - sudo apt-get install snapd -y - sudo snap install --classic certbot - sudo ln -s /snap/bin/certbot /usr/bin/certbot - sudo certbot --nginx -d $WEBSITE_NAME --noninteractive --agree-tos --email $ADMIN_EMAIL --redirect - sudo service nginx reload - echo "SSL/HTTPS is enabled!" + sudo apt-get install snapd -y + sudo snap install --classic certbot + sudo ln -s /snap/bin/certbot /usr/bin/certbot + 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!" + echo "SSL/HTTPS isn't enabled due to choice of the user or because of a misconfiguration!" fi echo -e "* Starting Odoo Service"