2016-01-13 20:23:15 +01:00
#!/bin/bash
2017-08-03 02:03:53 +02:00
2018-04-27 02:59:12 +02:00
# Check if we were effectively run as root
2018-04-27 03:02:51 +02:00
[ $EUID = 0 ] || { echo "This script needs to be run as root!" ; exit 1; }
2018-04-27 02:59:12 +02:00
2020-04-04 16:48:29 +02:00
# Check for required memory
2018-06-12 19:50:14 +02:00
totalk = $( awk '/^MemTotal:/{print $2}' /proc/meminfo)
2020-04-04 16:48:29 +02:00
if [ " $totalk " -lt "3000000" ] ; then echo "XOCE Requires at least 3GB Memory!" ; exit 1; fi
2018-06-12 19:50:14 +02:00
2018-08-02 14:51:30 +02:00
distro = $( /usr/bin/lsb_release -is)
2018-08-02 14:52:53 +02:00
if [ " $distro " = "Ubuntu" ] ; then /usr/bin/add-apt-repository multiverse; fi
2018-08-02 14:51:30 +02:00
2018-02-01 16:41:39 +01:00
xo_branch = "master"
xo_server = "https://github.com/vatesfr/xen-orchestra"
2020-04-04 16:48:29 +02:00
n_repo = "https://raw.githubusercontent.com/tj/n/master/bin/n"
2017-08-03 02:08:58 +02:00
yarn_repo = "deb https://dl.yarnpkg.com/debian/ stable main"
yarn_gpg = "https://dl.yarnpkg.com/debian/pubkey.gpg"
2017-08-03 02:10:34 +02:00
n_location = "/usr/local/bin/n"
2018-02-01 16:41:39 +01:00
xo_server_dir = "/opt/xen-orchestra"
2017-08-03 03:37:23 +02:00
systemd_service_dir = "/lib/systemd/system"
xo_service = "xo-server.service"
2017-08-03 02:10:34 +02:00
2019-09-18 18:25:58 +02:00
# Ensures that Yarn dependencies are installed
2018-04-27 02:59:12 +02:00
/usr/bin/apt-get update
2020-05-06 21:55:49 +02:00
/usr/bin/apt-get --yes install git curl apt-transport-https gnupg
2018-04-27 02:59:12 +02:00
2019-05-09 16:37:04 +02:00
#Install yarn
2016-01-13 20:23:15 +01:00
cd /opt
2017-08-04 15:44:09 +02:00
2018-04-27 02:59:12 +02:00
/usr/bin/curl -sS $yarn_gpg | apt-key add -
echo " $yarn_repo " | tee /etc/apt/sources.list.d/yarn.list
/usr/bin/apt-get update
2019-05-09 16:37:04 +02:00
/usr/bin/apt-get install --yes yarn
2017-08-03 03:37:23 +02:00
2018-08-17 15:23:12 +02:00
# Install n
2017-08-03 03:37:23 +02:00
/usr/bin/curl -o $n_location $n_repo
2018-04-27 02:59:12 +02:00
/bin/chmod +x $n_location
2017-08-03 03:37:23 +02:00
2019-05-09 16:37:04 +02:00
# Install node via n
2020-04-04 16:48:29 +02:00
n lts
2019-05-09 16:37:04 +02:00
2018-08-17 15:23:12 +02:00
# Symlink node directories
2018-08-17 14:19:27 +02:00
ln -s /usr/bin/node /usr/local/bin/node
2018-08-17 15:23:12 +02:00
# Install XO dependencies
2020-05-31 16:34:14 +02:00
/usr/bin/apt-get install --yes build-essential redis-server libpng-dev git python2-minimal libvhdi-utils nfs-common lvm2 cifs-utils
2017-08-03 03:37:23 +02:00
2018-02-07 16:36:56 +01:00
/usr/bin/git clone -b $xo_branch $xo_server
2018-02-01 16:44:58 +01:00
2018-02-07 16:27:50 +01:00
cd $xo_server_dir
/usr/bin/yarn
/usr/bin/yarn build
cd packages/xo-server
2019-01-17 20:26:27 +01:00
cp sample.config.toml .xo-server.toml
2016-03-08 21:38:21 +01:00
2020-04-05 17:07:51 +02:00
dest = /usr/local/lib/node_modules/
2018-08-17 14:54:43 +02:00
#Create node_modules directory if doesn't exist
2020-04-05 17:07:51 +02:00
mkdir -p $dest
# Plugins to ignore
ignoreplugins = ( "xo-server-test" )
2018-08-17 14:51:34 +02:00
2018-08-17 15:23:12 +02:00
# Symlink all plugins
2019-04-15 19:18:02 +02:00
for source in $( ls -d /opt/xen-orchestra/packages/xo-server-*) ; do
2020-04-05 17:07:51 +02:00
plugin = $( basename $source )
if [ [ " ${ ignoreplugins [@] } " = ~ $plugin ] ] ; then
echo " Ignoring $plugin plugin "
else
ln -s " $source " " $dest "
fi
2018-05-02 14:14:04 +02:00
done
2017-08-03 16:55:55 +02:00
if [ [ ! -e $systemd_service_dir /$xo_service ] ] ; then
2017-08-03 03:37:23 +02:00
2017-08-03 16:17:23 +02:00
/bin/cat << EOF >> $systemd_service_dir /$xo_service
2018-08-17 15:23:12 +02:00
# Systemd service for XO-Server.
2017-08-03 03:37:23 +02:00
2017-08-03 04:05:56 +02:00
[ Unit]
Description = XO Server
After = network-online.target
2016-03-08 21:38:21 +01:00
2017-08-03 04:05:56 +02:00
[ Service]
2018-02-01 16:41:39 +01:00
WorkingDirectory = /opt/xen-orchestra/packages/xo-server/
2017-08-03 04:05:56 +02:00
ExecStart = /usr/local/bin/node ./bin/xo-server
Restart = always
SyslogIdentifier = xo-server
2016-03-08 21:38:21 +01:00
2017-08-03 04:05:56 +02:00
[ Install]
WantedBy = multi-user.target
2016-03-08 21:38:21 +01:00
EOF
2017-08-03 03:37:23 +02:00
fi
2016-03-08 21:38:21 +01:00
2018-04-27 02:59:12 +02:00
/bin/systemctl daemon-reload
/bin/systemctl enable $xo_service
/bin/systemctl start $xo_service
2018-04-11 16:15:47 +02:00
2018-04-11 16:35:19 +02:00
echo ""
echo ""
2018-04-11 16:54:57 +02:00
echo "Installation complete, open a browser to:" && hostname -I && echo "" && echo "Default Login:" admin@admin.net" Password:" admin"" && echo "" && echo "Don't forget to change your password!"
2018-04-11 16:51:23 +02:00