Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rubyonrailsstarter/c28282233da0a6bc5e9ef30e6f4ff6ce to your computer and use it in GitHub Desktop.
Save rubyonrailsstarter/c28282233da0a6bc5e9ef30e6f4ff6ce to your computer and use it in GitHub Desktop.

Revisions

  1. @tejastank tejastank revised this gist Aug 31, 2023. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions odoo-enterprise-install-custom.sh
    Original file line number Diff line number Diff line change
    @@ -46,6 +46,7 @@ ENABLE_SSL="True"
    ADMIN_EMAIL="[email protected]"



    echo -e "* Create server config file"

    sudo touch /etc/${OE_CONFIG}.conf
    @@ -72,6 +73,8 @@ 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 "cp $OE_HOME_EXT/setup/odoo odoo-bin"
    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
  2. @tejastank tejastank revised this gist Aug 31, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion odoo-enterprise-install-custom.sh
    Original file line number Diff line number Diff line change
    @@ -26,7 +26,7 @@ OE_PORT="8169"
    # IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 16.0
    OE_VERSION="16.0"
    # Set this to True if you want to install the Odoo enterprise version!
    IS_ENTERPRISE="False"
    IS_ENTERPRISE="True"
    # 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!
  3. @tejastank tejastank revised this gist Aug 31, 2023. No changes.
  4. @tejastank tejastank created this gist Aug 31, 2023.
    176 changes: 176 additions & 0 deletions odoo-enterprise-install-custom.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,176 @@
    #!/bin/bash
    ################################################################################
    # Author: Tejaskumar Tank
    #-------------------------------------------------------------------------------
    # This script will install Odoo on your Ubuntu server. It can install multiple Odoo instances
    # in one Ubuntu 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
    # Script for installing Odoo on Ubuntu 16.04, 18.04, 20.04 and 22.04 (could be used for other version too)
    ################################################################################

    OE_USER="odoo"
    OE_HOME="/$OE_USER"
    OE_HOME_EXT="/$OE_USER/${OE_USER}-enterprise-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="8169"
    # 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"
    # 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"
    # 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}-enterprise-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="8172"
    # 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="[email protected]"


    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 > "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

    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 <<EOF > ~/$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=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/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

    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 "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 "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"
    fi
    echo "-----------------------------------------------------------"