35 Commits

Author SHA1 Message Date
Dustin B
5637752960 Update xo_install.sh 2025-09-08 21:02:41 -04:00
Dustin B
9c8eea5347 OS version check
Installs deps based on OS version (deb 12.5/12.12 Ubu 24.04) validated and worked across all 3.
2025-09-08 21:00:44 -04:00
Dustin B
15ddc7cea5 Debian 13 Package Dependency
Adds "libfuse2t64" for Debian 13 distro
2025-08-19 15:15:20 -04:00
Dustin B
5a5f8035f2 Update README.md
Header change
2025-07-30 10:09:41 -04:00
Dustin B
3c3e7710c7 Update README.md 2025-07-25 11:41:00 -04:00
Dustin B
58fcac8659 Update README.md 2025-07-25 11:10:01 -04:00
Dustin B
ac22baf7a9 Update README.md 2025-07-25 11:02:06 -04:00
Dustin B
8c8f2e0d1d Update README.md
Adding v6 to XOCE
2025-07-25 11:01:18 -04:00
Dustin B
ada0c8dc91 Merge pull request #129 from Jarli01/update_depends
Add openssl dependency
2025-02-22 09:36:35 -05:00
Dan Pollak
e54fc57cdc Add openssl dependency
Signed-off-by: Dan Pollak <danpollak2@gmail.com>
2025-02-22 08:32:04 -06:00
Dustin B
47bd62ec0a Update README.md
URL update to current documentation
2025-01-06 16:40:53 -05:00
Dan Pollak
c092780246 Node 18 is no longer a requirement (#126) 2024-06-21 17:00:09 -05:00
Dustin B
5a04a2aed6 Update README.md
Removal of the prepackaged installation, with XOlite around the corner a minimized installation won't be required when released.
2024-02-09 15:45:44 -05:00
Dustin B
bfc606a207 Merge pull request #122 from Jarli01/dp_sudo
Remove remaining `sudo` instances
2024-01-05 11:47:17 -05:00
Dan Pollak
95c80ae455 Remove sudo 2024-01-05 07:18:27 -06:00
Dan Pollak
d12423d78c Node LTS >> Node 18 2023-11-03 19:53:27 -05:00
Dan Pollak
910e9c2cae Update steps to install 2022-11-07 09:09:57 -06:00
Dan Pollak
b8382da30d Update yarn install (#106) 2022-06-06 10:33:23 -05:00
Dustin B
b1272516b9 Update README.md
Sorting out credentials issue with prepackaged installation.
2022-02-28 10:35:38 -05:00
Dustin B
91869f1d73 Merge pull request #98 from Jarli01/Danp2-patch-1
Remove existing service file, approved
2021-07-02 11:44:10 -04:00
Dan Pollak
0cebde394a Remove existing service file 2021-07-02 08:39:54 -05:00
Dustin B
efb9114bcc Update xoce-import.sh 2021-06-16 06:19:10 -04:00
Dustin B
99a4ee7590 Update README.md 2021-06-16 06:18:47 -04:00
Dan Pollak
4ed35c8fa3 Fix: Update launched module (#94) 2021-05-20 11:01:59 -05:00
Dustin B
722080371c Update README.md
Separate lines for the checksums
2021-01-19 11:06:32 -05:00
Dustin B
1e38e80b20 Update README.md 2021-01-12 09:14:54 -05:00
Dustin B
8779dd628d Update README.md 2021-01-12 09:14:23 -05:00
Dustin B
f61fdcdff3 Update README.md
Added details regarding the XOCE updater to the readme
2021-01-12 09:11:58 -05:00
Dustin B
b7638ef28f Update xoce-import.sh
Chore: translation clarifications
2020-12-21 15:25:56 -05:00
Dustin B
095c7baf3c Merge pull request #91 from Jarli01/dp-python3
Switch to Python3
2020-12-16 21:16:19 -05:00
Dan Pollak
b9815e4271 Revert "Use python-minimal"
This reverts commit bd6fcddf04.
2020-12-15 14:06:26 -06:00
Dan Pollak
bd6fcddf04 Use python-minimal 2020-12-15 13:56:53 -06:00
Dan Pollak
1a19441859 Chore: Switch to Python3 2020-12-14 12:27:46 -06:00
Dustin B
7d07d1ba9f Update README.md
Corrected checksums for the current XOCE prepackaged build.
2020-08-01 11:32:35 -04:00
Dustin B
8e8a3148c6 Update README.md 2020-07-30 08:48:27 -04:00
3 changed files with 158 additions and 84 deletions

View File

@@ -23,8 +23,8 @@ Xen-Orchestra (Community Edition) allows you to administer Citrix Hypervisor (ak
Run the following steps from a root shell on your **Ubuntu or Debian** host. Run the following steps from a root shell on your **Ubuntu or Debian** host.
curl https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xo_install.sh | sudo bash sudo bash
<password> bash -c "$(curl https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xo_install.sh)"
The default username and password are applied, admin@admin.net and admin for the password The default username and password are applied, admin@admin.net and admin for the password
@@ -33,29 +33,13 @@ If you don't want NFS capabilities run ```sudo apt-get remove nfs-common```.
* Do not use LAMP * Do not use LAMP
* SSH Access is optional, but highly recommended * SSH Access is optional, but highly recommended
## Updates
To maintain your installation from Source or from this repo. (either prepackaged or scripted installation) we recommend using the update script which this community maintains. This can be [found here](https://github.com/Jarli01/xenorchestra_updater) and doesn't require you to download or install a separate package to your XOCE installation. Simply run it via shell session of your XOCE host.
# Declarations # Declarations
This script automates the manual process which can be [found here](https://xen-orchestra.com/docs/from_the_sources.html) as well as removes a few feature restrictions that otherwise would need to be changed manually if following the manual installation process. This script is not officially supported by the Vates team, but is supported by this community. This script automates the manual process which can be [found here](https://docs.xen-orchestra.com/installation) as well as removes a few feature restrictions that otherwise would need to be changed manually if following the manual installation process. This script is not officially supported by the Vates team, but is supported by this community.
# Prepacked installation
* *This is a very small installation and while it will operate, it may not meet all of your requirements, use at your own discretion*
To download and deploy a prepacked Ubuntu 20.04 installation of Xen Orchestra (CE) run the below from an SSH session on your XCP-NG/Citrix Hypervisor (XenServer) host(s)
bash -c "$(curl -s https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xoce-import.sh)"
MD5 Checksum `5db537c4b6388a4323583357b6e13d20`
SHA256 Checksum `c487d63f2eef67fcaf0e9c4e4998d4a3948fdad960cb1af5a70fcb80b07c2551`
For verification of SHA256 checksum the XVA file can be downloaded directly and verified/imported.
Direct Download https://srv-file8.gofile.io/download/CYaI0l/XOCE.xva
To login to the console use:
Username: **XOCE**
Password: **XOCE**
**Change the password if you are using this in production**
# Self-signed SSL # Self-signed SSL
@@ -99,4 +83,11 @@ While the goal initially was to have a solution as close to XOA as possible, wit
To keep XOCE up to date I recommend that anyone who's used this installation script or the sources installation to use this: https://github.com/Jarli01/xenorchestra_updater To keep XOCE up to date I recommend that anyone who's used this installation script or the sources installation to use this: https://github.com/Jarli01/xenorchestra_updater
## Adding XOCE v6 to your installation (this is a Work In Progress by Vates)
cd /opt/xen-orchestra
yarn run turbo run build --filter @xen-orchestra/web
Once the installation is completed, you can then go to [https://your-host-ip/v6](https://your-host-ip/v6)

View File

@@ -1,101 +1,184 @@
#!/bin/bash #!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# Check if we were effectively run as root # --- Check if we were effectively run as root ---
[ $EUID = 0 ] || { echo "This script needs to be run as root!"; exit 1; } [ "${EUID:-$(id -u)}" = 0 ] || { echo "This script needs to be run as root!"; exit 1; }
# Check for required memory # --- Check for required memory ---
totalk=$(awk '/^MemTotal:/{print $2}' /proc/meminfo) totalk=$(awk '/^MemTotal:/{print $2}' /proc/meminfo)
if [ "$totalk" -lt "3000000" ]; then echo "XOCE Requires at least 3GB Memory!"; exit 1; fi if [ "$totalk" -lt "2000000" ]; then echo "XOCE Requires at least 2GB Memory!"; exit 1; fi
export DEBIAN_FRONTEND=noninteractive
distro=$(/usr/bin/lsb_release -is) # --- OS detection ---
if [ "$distro" = "Ubuntu" ]; then /usr/bin/add-apt-repository multiverse; fi if [ -f /etc/os-release ]; then
. /etc/os-release
distro="$ID"
version="$VERSION_ID"
else
echo "Unable to detect OS via /etc/os-release"; exit 1
fi
# --- Deb Point Release Check ---
if [ "$distro" = "debian" ] && [ -r /etc/debian_version ]; then
deb_point=$(sed -E 's/^([0-9]+(\.[0-9]+)?).*/\1/' /etc/debian_version)
version="${deb_point:-$version}"
fi
echo "Detected: $distro $version"
# --- Version compare helper ---
version_ge() { dpkg --compare-versions "$1" ge "$2"; }
# --- Minimum supported versions ---
case "$distro" in
debian)
version_ge "$version" "12.5" || { echo "Debian $version too old (min 12.5)"; exit 1; }
;;
ubuntu)
version_ge "$version" "24.04" || { echo "Ubuntu $version too old (min 24.04)"; exit 1; }
;;
*)
echo "Unsupported distribution: $distro"; exit 1
;;
esac
# --- Helper: apt install if available ---
apt_install_if_available() {
local pkg="$1"
/usr/bin/apt-get update -qq
if /usr/bin/apt-cache policy "$pkg" 2>/dev/null | grep -q 'Candidate:'; then
echo "Installing $pkg"
/usr/bin/apt-get --yes install "$pkg"
return 0
else
return 1
fi
}
# --- FUSE runtime install ---
install_fuse_runtime() {
echo "Ensuring FUSE runtime (libfuse.so.2)..."
for p in libfuse2 libfuse2t64; do
apt_install_if_available "$p" && break
done
/sbin/ldconfig -v 2>/dev/null || true
if ! /sbin/ldconfig -p | grep -Fq 'libfuse.so.2'; then
echo "ERROR: libfuse.so.2 not found. XO requires FUSE2 runtime."
exit 1
fi
echo "libfuse.so.2 verified."
}
# --- Install dependencies ---
install_deps() {
echo "Installing general dependencies..."
/usr/bin/apt-get update
/usr/bin/apt-get --yes install git curl apt-transport-https gnupg ca-certificates
case "$distro" in
debian)
echo "Installing Debian-specific dependencies..."
install_fuse_runtime
/usr/bin/apt-get --yes install libnbd-bin nbdkit nbdkit-plugin-vddk || true
;;
ubuntu)
echo "Installing Ubuntu-specific dependencies..."
/usr/bin/apt-get --yes install software-properties-common
/usr/bin/add-apt-repository -y multiverse || true
/usr/bin/apt-get update
install_fuse_runtime
/usr/bin/apt-get --yes install libnbd-bin nbdkit || true
;;
esac
echo "Installing XOCE common dependencies..."
/usr/bin/apt-get --yes install \
build-essential redis-server libpng-dev python3-minimal \
libvhdi-utils nfs-common lvm2 cifs-utils openssl || true
}
install_deps
# --- Script variables ---
xo_branch="master" xo_branch="master"
xo_server="https://github.com/vatesfr/xen-orchestra" xo_server="https://github.com/vatesfr/xen-orchestra"
n_repo="https://raw.githubusercontent.com/tj/n/master/bin/n" n_repo="https://raw.githubusercontent.com/tj/n/master/bin/n"
yarn_repo="deb https://dl.yarnpkg.com/debian/ stable main" yarn_repo="deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main"
yarn_gpg="https://dl.yarnpkg.com/debian/pubkey.gpg" yarn_gpg="https://dl.yarnpkg.com/debian/pubkey.gpg"
n_location="/usr/local/bin/n" n_location="/usr/local/bin/n"
xo_server_dir="/opt/xen-orchestra" xo_server_dir="/opt/xen-orchestra"
systemd_service_dir="/lib/systemd/system" systemd_service_dir="/lib/systemd/system"
xo_service="xo-server.service" xo_service="xo-server.service"
# Ensures that Yarn dependencies are installed # --- Install Yarn ---
/usr/bin/apt-get update
/usr/bin/apt-get --yes install git curl apt-transport-https gnupg
#Install yarn
cd /opt cd /opt
/usr/bin/curl -sSL "$yarn_gpg" | gpg --dearmor | tee /usr/share/keyrings/yarnkey.gpg >/dev/null
/usr/bin/curl -sS $yarn_gpg | apt-key add -
echo "$yarn_repo" | tee /etc/apt/sources.list.d/yarn.list echo "$yarn_repo" | tee /etc/apt/sources.list.d/yarn.list
/usr/bin/apt-get update /usr/bin/apt-get update
/usr/bin/apt-get install --yes yarn /usr/bin/apt-get install --yes yarn
# Install n # --- Install Node via n ---
/usr/bin/curl -o $n_location $n_repo /usr/bin/curl -o "$n_location" "$n_repo"
/bin/chmod +x $n_location /bin/chmod +x "$n_location"
/usr/local/bin/n lts
# Install node via n # Ensure new Node is used
n lts export PATH="/usr/local/bin:$PATH"
hash -r
# Symlink node directories node_version=$(node -v | sed 's/v//')
ln -s /usr/bin/node /usr/local/bin/node dpkg --compare-versions "$node_version" lt "20.18" && {
echo "ERROR: Node version $node_version too old. XO requires >=20.18"
exit 1
}
# Install XO dependencies # --- Clone & build XO ---
/usr/bin/apt-get install --yes build-essential redis-server libpng-dev git python2-minimal libvhdi-utils nfs-common lvm2 cifs-utils /usr/bin/git clone -b "$xo_branch" "$xo_server" "$xo_server_dir" 2>/dev/null || true
cd "$xo_server_dir"
/usr/bin/git clone -b $xo_branch $xo_server
cd $xo_server_dir
/usr/bin/yarn /usr/bin/yarn
/usr/bin/yarn build /usr/bin/yarn build
cd packages/xo-server cd packages/xo-server
cp sample.config.toml .xo-server.toml cp -f sample.config.toml .xo-server.toml
dest=/usr/local/lib/node_modules/ dest=/usr/local/lib/node_modules/
#Create node_modules directory if doesn't exist mkdir -p "$dest"
mkdir -p $dest
# Plugins to ignore
ignoreplugins=("xo-server-test") ignoreplugins=("xo-server-test")
for source in $(ls -d /opt/xen-orchestra/packages/xo-server-* 2>/dev/null || true); do
# Symlink all plugins plugin=$(basename "$source")
for source in $(ls -d /opt/xen-orchestra/packages/xo-server-*); do [[ " ${ignoreplugins[*]} " == *" $plugin "* ]] && continue
plugin=$(basename $source) ln -sfn "$source" "$dest"
if [[ "${ignoreplugins[@]}" =~ $plugin ]]; then
echo "Ignoring $plugin plugin"
else
ln -s "$source" "$dest"
fi
done done
if [[ ! -e $systemd_service_dir/$xo_service ]] ; then # --- systemd service ---
if [[ -e "$systemd_service_dir/$xo_service" ]]; then
/bin/cat << EOF >> $systemd_service_dir/$xo_service rm -f "$systemd_service_dir/$xo_service"
# Systemd service for XO-Server. fi
/bin/cat << 'EOF' > "$systemd_service_dir/$xo_service"
[Unit] [Unit]
Description= XO Server Description= XO Server
After=network-online.target After=network-online.target
[Service] [Service]
WorkingDirectory=/opt/xen-orchestra/packages/xo-server/ WorkingDirectory=/opt/xen-orchestra/packages/xo-server/
ExecStart=/usr/local/bin/node ./bin/xo-server ExecStart=/usr/local/bin/node ./dist/cli.mjs
Restart=always Restart=always
SyslogIdentifier=xo-server SyslogIdentifier=xo-server
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
fi
/bin/systemctl daemon-reload /bin/systemctl daemon-reload
/bin/systemctl enable $xo_service /bin/systemctl enable "$xo_service"
/bin/systemctl start $xo_service /bin/systemctl start "$xo_service" || (sleep 2 && /bin/systemctl start "$xo_service")
echo ""
echo ""
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!"
echo
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!"

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
XOCE_URL=https://nc.nl.tab.digital/s/5tKYF9AyLjowm3E/download XOCE_URL=https://nc.nl.tab.digital/s/WQmCwmH4e9EdTTA/download
# Welcome message # Welcome message
printf "\n\033[1mWelcome to the XOCE auto-deploy script!\033[0m\n\n" printf "\n\033[1mWelcome to the XOCE auto-deploy script!\033[0m\n\n"
@@ -10,7 +10,7 @@ then
echo echo
echo 'Sorry, the xe command is required for this auto-deploy.' echo 'Sorry, the xe command is required for this auto-deploy.'
echo echo
echo 'Please, make sure you are on a XenServer host.' echo 'Please, make sure you are on a XCP-ng/XenServer host.'
echo echo
exit 1 exit 1
fi fi
@@ -18,8 +18,8 @@ fi
# Basic check: are we on a XS host? # Basic check: are we on a XS host?
if grep -Fxq "XenServer" /etc/issue if grep -Fxq "XenServer" /etc/issue
then then
printf "\nSorry, it seems you are not on a XenServer (XCP-ng) host.\n\n" printf "\nSorry, it seems you are not on a XCP-ng/XenServer host.\n\n"
printf "\n\033[1mThis script is meant to be deployed on XenServer (or XCP-ng) only.\033[0m\n\n" printf "\n\033[1mThis script is meant to be deployed on XCP-ng or XenServer only.\033[0m\n\n"
exit 1 exit 1
fi fi
@@ -36,7 +36,7 @@ then
read -p "dns? [8.8.8.8] " dns read -p "dns? [8.8.8.8] " dns
dns=${dns:-8.8.8.8} dns=${dns:-8.8.8.8}
else else
printf "\nYour XOCE will be started using DHCP\n\n" printf "\nYour XOCE installation will be started using DHCP\n\n"
fi fi
# Downloading and importing the VM # Downloading and importing the VM
@@ -56,7 +56,7 @@ fi
import=$? import=$?
if [ $import -ne 0 ] if [ $import -ne 0 ]
then then
printf "\n\nAuto deploy failed. Please contact us on xen-orchestra.com live chat for assistance.\nError:\n\n %s\n\n" "$uuid" printf "\n\nAuto deploy failed. Please contact us on https://github.com/Jarli01/xenorchestra_installer/issues for assistance.\nError:\n\n %s\n\n" "$uuid"
exit 0 exit 0
fi fi
@@ -75,7 +75,7 @@ sleep 2
# Waiting for the VM IP from Xen tools for 60 secs # Waiting for the VM IP from Xen tools for 60 secs
printf "Waiting for your XOCE to be ready…\n" printf "Waiting for XOCE to be ready…\n"
url=$(xe vm-param-get uuid=$uuid param-name=networks param-key=0/ip 2> /dev/null) url=$(xe vm-param-get uuid=$uuid param-name=networks param-key=0/ip 2> /dev/null)
wait=0 wait=0
limit=60 limit=60
@@ -95,7 +95,7 @@ done
if [ "$ip" != 'dhcp' ] if [ "$ip" != 'dhcp' ]
then then
printf "\n\033[1mYour XOCE is ready on https://%s/\033[0m\n" "$ip" printf "\n\033[1mYour XOCE is ready at https://%s/\033[0m\n" "$ip"
# clean the xenstore data # clean the xenstore data
xe vm-param-remove param-name=xenstore-data param-key=vm-data/dns param-key=vm-data/ip param-key=vm-data/netmask param-key=vm-data/gateway uuid=$uuid xe vm-param-remove param-name=xenstore-data param-key=vm-data/dns param-key=vm-data/ip param-key=vm-data/netmask param-key=vm-data/gateway uuid=$uuid
@@ -105,7 +105,7 @@ elif [ -z "$url" ]
then then
printf "\n\033[1mYour XOCE booted but we couldn't fetch its IP address\033[0m\n" printf "\n\033[1mYour XOCE booted but we couldn't fetch its IP address\033[0m\n"
else else
printf "\n\033[1mYour XOCE is ready on https://%s/\033[0m\n" "$url" printf "\n\033[1mYour XOCE is ready at https://%s/\033[0m\n" "$url"
fi fi
printf "\nDefault UI credentials: admin@admin.net/admin\nDefault console credentials: xoce/xoce\n" printf "\nDefault UI credentials: admin@admin.net/admin\nDefault console credentials: xoce/xoce\n"
printf "\nVM UUID: %s\n\n" "$uuid" printf "\nVM UUID: %s\n\n" "$uuid"