pull/415/merge
TRIXServer.com 2 years ago committed by GitHub
commit d0ad92e568
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -17,31 +17,44 @@
OE_USER="odoo" OE_USER="odoo"
OE_HOME="/$OE_USER" OE_HOME="/$OE_USER"
OE_HOME_EXT="/$OE_USER/${OE_USER}-server" 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) # 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. # Set to true if you want to install it, false if you don't need it or have it already installed.
INSTALL_WKHTMLTOPDF="True" INSTALL_WKHTMLTOPDF="True"
# Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.) # Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.)
OE_PORT="8069" 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. # 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 # IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 13.0
OE_VERSION="15.0" OE_VERSION="15.0"
# Set this to True if you want to install the Odoo enterprise version! # Set this to True if you want to install the Odoo enterprise version!
IS_ENTERPRISE="False" IS_ENTERPRISE="False"
# Set this to True if you want to install Nginx! # Set this to True if you want to install Nginx!
INSTALL_NGINX="False" 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 # 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" OE_SUPERADMIN="admin"
# Set to "True" to generate a random password, "False" to use the variable in OE_SUPERADMIN # Set to "True" to generate a random password, "False" to use the variable in OE_SUPERADMIN
GENERATE_RANDOM_PASSWORD="True" GENERATE_RANDOM_PASSWORD="True"
OE_CONFIG="${OE_USER}-server" OE_CONFIG="${OE_USER}"
# Set the website name # Set the website name
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.) # Set the default Odoo longpolling port (you still have to use -c /etc/odoo-server.conf for example to use this.)
LONGPOLLING_PORT="8072" LONGPOLLING_PORT="8072"
# Set to "True" to install certbot and have ssl enabled, "False" to use http # Set to "True" to install certbot and have ssl enabled, "False" to use http
ENABLE_SSL="True" ENABLE_SSL="True"
# Provide Email to register ssl certificate # Provide Email to register ssl certificate
ADMIN_EMAIL="odoo@example.com" ADMIN_EMAIL="odoo@example.com"
## ##
### WKHTMLTOPDF download links ### WKHTMLTOPDF download links
## === Ubuntu Trusty x64 & x32 === (for other distributions please replace these two links, ## === Ubuntu Trusty x64 & x32 === (for other distributions please replace these two links,
@ -50,16 +63,21 @@ ADMIN_EMAIL="odoo@example.com"
## https://www.odoo.com/documentation/13.0/setup/install.html#debian-ubuntu ## https://www.odoo.com/documentation/13.0/setup/install.html#debian-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_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" 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 # Update Server
#-------------------------------------------------- #--------------------------------------------------
echo -e "\n---- 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 # universe package is for Ubuntu 18.x
sudo add-apt-repository universe sudo add-apt-repository universe
# libpng12-0 dependency for wkhtmltopdf # libpng12-0 dependency for wkhtmltopdf
sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ xenial main" sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ xenial main"
sudo apt-get update sudo add-apt-repository ppa:linuxuprising/libpng12 -y
sudo apt update
sudo apt-get upgrade -y sudo apt-get upgrade -y
#-------------------------------------------------- #--------------------------------------------------
@ -84,27 +102,34 @@ echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----"
sudo apt-get install nodejs npm -y sudo apt-get install nodejs npm -y
sudo npm install -g rtlcss 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 # Install Wkhtmltopdf if needed
#-------------------------------------------------- #--------------------------------------------------
if [ $INSTALL_WKHTMLTOPDF = "True" ]; then if [ $INSTALL_WKHTMLTOPDF = "True" ]; then
echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 13 ----" echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 13 ----"
#pick up correct one from x64 & x32 versions: #pick up correct one from x64 & x32 versions:
if [ "`getconf LONG_BIT`" == "64" ];then if [ "`getconf LONG_BIT`" == "64" ];then
_url=$WKHTMLTOX_X64 _url=$WKHTMLTOX_X64
else else
_url=$WKHTMLTOX_X32 _url=$WKHTMLTOX_X32
fi fi
sudo wget $_url sudo wget $_url
sudo gdebi --n `basename $_url` sudo gdebi --n `basename $_url`
sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin
sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin
else 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 fi
echo -e "\n---- Create ODOO system user ----" echo -e "\n---- Create ODOO system user ----"
sudo adduser --system --quiet --shell=/bin/bash --home=$OE_HOME --gecos 'ODOO' --group $OE_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. #The user should also be added to the sudo'ers group.
sudo adduser $OE_USER sudo sudo adduser $OE_USER sudo
@ -120,7 +145,6 @@ sudo git clone --depth 1 --branch $OE_VERSION https://www.github.com/odoo/odoo $
if [ $IS_ENTERPRISE = "True" ]; then if [ $IS_ENTERPRISE = "True" ]; then
# Odoo Enterprise install! # Odoo Enterprise install!
sudo pip3 install psycopg2-binary pdfminer.six
echo -e "\n--- Create symlink for node" echo -e "\n--- Create symlink for node"
sudo ln -s /usr/bin/nodejs /usr/bin/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"
@ -139,9 +163,6 @@ if [ $IS_ENTERPRISE = "True" ]; then
echo -e "\n---- Added Enterprise code under $OE_HOME/enterprise/addons ----" echo -e "\n---- Added Enterprise code under $OE_HOME/enterprise/addons ----"
echo -e "\n---- Installing Enterprise specific libraries ----" 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 fi
echo -e "\n---- Create custom module directory ----" echo -e "\n---- Create custom module directory ----"
@ -151,205 +172,135 @@ sudo su $OE_USER -c "mkdir $OE_HOME/custom/addons"
echo -e "\n---- Setting permissions on home folder ----" echo -e "\n---- Setting permissions on home folder ----"
sudo chown -R $OE_USER:$OE_USER $OE_HOME/* sudo chown -R $OE_USER:$OE_USER $OE_HOME/*
echo -e "* Create server config file" if [ ! -e "/etc/$OE_USER/${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_USER/${OE_CONFIG}.conf
sudo touch /etc/${OE_CONFIG}.conf echo -e "* Creating server config file"
echo -e "* Creating server config file" sudo su root -c "printf '[options] \n; This is the password that allows database operations:\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
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
if [ $GENERATE_RANDOM_PASSWORD = "True" ]; then echo -e "* Generating random admin password"
echo -e "* Generating random admin password" OE_SUPERADMIN=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1)
OE_SUPERADMIN=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) fi
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 'admin_passwd = ${OE_SUPERADMIN}\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise/addons,${OE_HOME_EXT}/addons\n' >> /etc/${OE_CONFIG}.conf" if [ $OE_VERSION > "11.0" ];then
else sudo su root -c "printf 'http_port = ${OE_PORT}\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons,${OE_HOME}/custom/addons\n' >> /etc/${OE_CONFIG}.conf" else
fi sudo su root -c "printf 'xmlrpc_port = ${OE_PORT}\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
sudo chown $OE_USER:$OE_USER /etc/${OE_CONFIG}.conf fi
sudo chmod 640 /etc/${OE_CONFIG}.conf
echo -e "* Create startup file" sudo su root -c "printf 'logfile = /var/log/${OE_USER}/${OE_CONFIG}.log\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
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
#-------------------------------------------------- if [ $IS_ENTERPRISE = "True" ]; then
# Adding ODOO as a deamon (initscript) sudo su root -c "printf 'addons_path=${OE_HOME}/enterprise/addons,${OE_HOME_EXT}/addons\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
#-------------------------------------------------- else
sudo su root -c "printf 'addons_path=${OE_HOME_EXT}/addons,${OE_HOME}/custom/addons\n' >> /etc/$OE_USER/${OE_CONFIG}.conf"
fi
echo -e "* Create init file" sudo chown $OE_USER:$OE_USER /etc/$OE_USER/${OE_CONFIG}.conf
cat <<EOF > ~/$OE_CONFIG sudo chmod 640 /etc/$OE_USER/${OE_CONFIG}.conf
#!/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" fi
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 ln -s $OE_HOME_EXT/odoo-bin /usr/bin/odoo
sudo update-rc.d $OE_CONFIG defaults sudo ln -s $OE_HOME_EXT/debian/odoo.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable odoo
sudo systemctl start odoo
#-------------------------------------------------- #--------------------------------------------------
# Install Nginx if needed # Install Nginx if needed
#-------------------------------------------------- #--------------------------------------------------
if [ $INSTALL_NGINX = "True" ]; then if [ $INSTALL_NGINX = "True" ]; then
echo -e "\n---- Installing and setting up Nginx ----" echo -e "\n---- Installing and setting up Nginx ----"
sudo apt install nginx -y sudo apt install nginx -y
cat <<EOF > ~/odoo cat <<EOF > ~/odoo
server { server {
listen 80; listen 80;
# set proper server name after domain set # set proper server name after domain set
server_name $WEBSITE_NAME; server_name $WEBSITE_NAME;
# Add Headers for odoo proxy mode # Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host \$host; proxy_set_header X-Forwarded-Host \$host;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme; proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Real-IP \$remote_addr;
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block"; add_header X-XSS-Protection "1; mode=block";
proxy_set_header X-Client-IP \$remote_addr; proxy_set_header X-Client-IP \$remote_addr;
proxy_set_header HTTP_X_FORWARDED_HOST \$remote_addr; proxy_set_header HTTP_X_FORWARDED_HOST \$remote_addr;
# odoo log files # odoo log files
access_log /var/log/nginx/$OE_USER-access.log; access_log /var/log/nginx/$OE_USER-access.log;
error_log /var/log/nginx/$OE_USER-error.log; error_log /var/log/nginx/$OE_USER-error.log;
# increase proxy buffer size # increase proxy buffer size
proxy_buffers 16 64k; proxy_buffers 16 64k;
proxy_buffer_size 128k; proxy_buffer_size 128k;
proxy_read_timeout 900s; proxy_read_timeout 900s;
proxy_connect_timeout 900s; proxy_connect_timeout 900s;
proxy_send_timeout 900s; proxy_send_timeout 900s;
# force timeouts if the backend dies # force timeouts if the backend dies
proxy_next_upstream error timeout invalid_header http_500 http_502 proxy_next_upstream error timeout invalid_header http_500 http_502
http_503; http_503;
types { types {
text/less less; text/less less;
text/scss scss; text/scss scss;
} }
# enable data compression # enable data compression
gzip on; gzip on;
gzip_min_length 1100; gzip_min_length 1100;
gzip_buffers 4 32k; 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_types text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png;
gzip_vary on; gzip_vary on;
client_header_buffer_size 4k; client_header_buffer_size 4k;
large_client_header_buffers 4 64k; large_client_header_buffers 4 64k;
client_max_body_size 0; client_max_body_size 0;
location / { location / {
proxy_pass http://127.0.0.1:$OE_PORT; proxy_pass http://127.0.0.1:$OE_PORT;
# by default, do not forward anything # by default, do not forward anything
proxy_redirect off; proxy_redirect off;
} }
location /longpolling { location /longpolling {
proxy_pass http://127.0.0.1:$LONGPOLLING_PORT; proxy_pass http://127.0.0.1:$LONGPOLLING_PORT;
} }
location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
expires 2d; expires 2d;
proxy_pass http://127.0.0.1:$OE_PORT; proxy_pass http://127.0.0.1:$OE_PORT;
add_header Cache-Control "public, no-transform"; add_header Cache-Control "public, no-transform";
} }
# cache some static data in memory for 60mins. # cache some static data in memory for 60mins.
location ~ /[a-zA-Z0-9_-]*/static/ { location ~ /[a-zA-Z0-9_-]*/static/ {
proxy_cache_valid 200 302 60m; proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m; proxy_cache_valid 404 1m;
proxy_buffering on; proxy_buffering on;
expires 864000; expires 864000;
proxy_pass http://127.0.0.1:$OE_PORT; proxy_pass http://127.0.0.1:$OE_PORT;
} }
} }
EOF EOF
sudo mv ~/odoo /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 ln -s /etc/nginx/sites-available/$WEBSITE_NAME /etc/nginx/sites-enabled/$WEBSITE_NAME
sudo rm /etc/nginx/sites-enabled/default sudo rm /etc/nginx/sites-enabled/default
sudo service nginx reload sudo service nginx reload
sudo su root -c "printf 'proxy_mode = True\n' >> /etc/${OE_CONFIG}.conf" 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" echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-available/$WEBSITE_NAME"
else else
echo "Nginx isn't installed due to choice of the user!" echo "Nginx isn't installed due to choice of the user!"
fi fi
#-------------------------------------------------- #--------------------------------------------------
@ -357,17 +308,19 @@ fi
#-------------------------------------------------- #--------------------------------------------------
if [ $INSTALL_NGINX = "True" ] && [ $ENABLE_SSL = "True" ] && [ $ADMIN_EMAIL != "odoo@example.com" ] && [ $WEBSITE_NAME != "_" ];then if [ $INSTALL_NGINX = "True" ] && [ $ENABLE_SSL = "True" ] && [ $ADMIN_EMAIL != "odoo@example.com" ] && [ $WEBSITE_NAME != "_" ];then
sudo add-apt-repository ppa:certbot/certbot -y && sudo apt-get update -y sudo apt-get install snapd -y
sudo apt-get install python3-certbot-nginx -y sudo snap install --classic certbot
sudo certbot --nginx -d $WEBSITE_NAME --noninteractive --agree-tos --email $ADMIN_EMAIL --redirect sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo service nginx reload sudo certbot --nginx -d $WEBSITE_NAME --noninteractive --agree-tos --email $ADMIN_EMAIL --redirect
echo "SSL/HTTPS is enabled!" sudo service nginx reload
echo "SSL/HTTPS is enabled!"
else 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 fi
echo -e "* Starting Odoo Service" echo -e "* Starting Odoo Service"
sudo su root -c "/etc/init.d/$OE_CONFIG start" sudo service odoo restart
echo "-----------------------------------------------------------" echo "-----------------------------------------------------------"
echo "Done! The Odoo server is up and running. Specifications:" echo "Done! The Odoo server is up and running. Specifications:"
echo "Port: $OE_PORT" echo "Port: $OE_PORT"

Loading…
Cancel
Save