#!/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="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! 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="hello@xamta.in" 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 "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 #-------------------------------------------------- # 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=/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 "-----------------------------------------------------------"