From c1df29de5876fb5b7fb1c89e8577737fbe31f48b Mon Sep 17 00:00:00 2001 From: dappnodedev Date: Mon, 27 May 2024 17:25:52 +0200 Subject: [PATCH] Fix prerequisites for Ubuntu --- scripts/dappnode_install_pre.sh | 77 ++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/scripts/dappnode_install_pre.sh b/scripts/dappnode_install_pre.sh index 2966bb1b..781ea0ff 100755 --- a/scripts/dappnode_install_pre.sh +++ b/scripts/dappnode_install_pre.sh @@ -6,7 +6,6 @@ DAPPNODE_DIR="/usr/src/dappnode" LOGS_DIR="$DAPPNODE_DIR/logs" lsb_dist="$(. /etc/os-release && echo "$ID")" - #!ISOBUILD Do not modify, variables above imported for ISO build detect_installation_type() { @@ -20,7 +19,6 @@ detect_installation_type() { fi } - add_docker_repo() { apt-get update -y apt-get remove -y docker docker-engine docker.io containerd runc | tee -a $LOG_FILE @@ -28,7 +26,7 @@ add_docker_repo() { mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings curl -fsSL "https://download.docker.com/linux/${lsb_dist}/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$lsb_dist $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$lsb_dist $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list >/dev/null } # DOCKER INSTALLATION @@ -37,10 +35,10 @@ install_docker() { apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin | tee -a $LOG_FILE # Ensure xz is installed - [ -f "/usr/bin/xz" ] || ( apt-get install -y xz-utils) + [ -f "/usr/bin/xz" ] || (apt-get install -y xz-utils) - USER=$(grep 1000 "/etc/passwd" | cut -f 1 -d:) - [ -z "$USER" ] || usermod -aG docker "$USER" + CURRENT_USER=$(grep 1000 "/etc/passwd" | cut -f 1 -d:) + [ -z "$CURRENT_USER" ] || usermod -aG docker "$CURRENT_USER" # Disable check if ISO installation since it is not possible to check in this way if [ "$ISO_INSTALLATION" = "false" ]; then @@ -56,31 +54,31 @@ install_docker() { # DOCKER-COMPOSE FOR LEGACY SCRIPTS, SHOULD BE REMOVED EVENTUALLY alias_docker_compose() { - cat > /usr/local/bin/docker-compose</usr/local/bin/docker-compose </dev/null 2>&1 ; then + if modprobe wireguard >/dev/null 2>&1; then echo -e "\e[32m \n\n Verified wiregurd-dkms installation \n\n \e[0m" 2>&1 | tee -a $LOG_FILE else echo -e "\e[31m \n\n WARNING: wireguard kernel module is not installed, Wireguard DAppNode package might not work! \n\n \e[0m" 2>&1 | tee -a $LOG_FILE fi } -# LSOF INSTALLATION: used to scan host port 80 in use, https package installation will deppend on it +# LSOF INSTALLATION: used to scan host port 80 in use, https package installation will deppend on it install_lsof() { apt-get update -y apt-get install lsof -y | tee -a $LOG_FILE - if lsof -v >/dev/null 2>&1 ; then + if lsof -v >/dev/null 2>&1; then echo -e "\e[32m \n\n Verified lsof installation \n\n \e[0m" 2>&1 | tee -a $LOG_FILE else echo -e "\e[31m \n\n WARNING: lsof not installed, HTTPS DAppNode package might not be installed! \n\n \e[0m" 2>&1 | tee -a $LOG_FILE @@ -88,10 +86,10 @@ install_lsof() { } # IPTABLES INSTALLATION: mandatory for docker, on bullseye is not installed by default -install_iptables () { +install_iptables() { apt-get update -y apt-get install iptables -y | tee -a $LOG_FILE - if iptables -v >/dev/null 2>&1 ; then + if iptables -v >/dev/null 2>&1; then echo -e "\e[32m \n\n Verified iptables installation \n\n \e[0m" 2>&1 | tee -a $LOG_FILE else echo -e "\e[31m \n\n WARNING: iptables not installed, Docker may not work! \n\n \e[0m" 2>&1 | tee -a $LOG_FILE @@ -99,11 +97,39 @@ install_iptables () { } # HOST UPDATE -host_update () { +host_update() { apt-get update 2>&1 | tee -a $LOG_FILE apt-get -y upgrade 2>&1 | tee -a $LOG_FILE } +check_ubuntu_connectivity() { + { netplan get | grep "dhcp4: true" &>/dev/null; } || { + echo "Interfaces not found" + exit 1 + } +} + +check_debian_connectivity() { + { [ -f /etc/network/interfaces ] && grep "iface en.* inet dhcp" /etc/network/interfaces &>/dev/null; } || { + echo "Interfaces not found" + exit 1 + } +} + +add_debian_missing_interfaces() { + # shellcheck disable=SC2013 + for IFACE in $(grep "en.*" /usr/src/dappnode/hotplug); do + # shellcheck disable=SC2143 + if [[ $(grep -L "$IFACE" /etc/network/interfaces) ]]; then + { + echo "# $IFACE" + echo "allow-hotplug $IFACE" + echo "iface $IFACE inet dhcp" + } >>/etc/network/interfaces + fi + done +} + ############################################## #### SCRIPT START #### ############################################## @@ -122,8 +148,7 @@ if [ "$1" == "UPDATE" ]; then host_update 2>&1 | tee -a $LOG_FILE fi - -if find /etc/apt/ -name "*.list" -print0 | xargs --null cat | grep -q "https://download.docker.com/linux/$lsb_dist" ; then +if find /etc/apt/ -name "*.list" -print0 | xargs --null cat | grep -q "https://download.docker.com/linux/$lsb_dist"; then echo -e "\e[32m \n\n docker repo is already added \n\n \e[0m" 2>&1 | tee -a $LOG_FILE else add_docker_repo | tee -a $LOG_FILE @@ -144,7 +169,7 @@ else fi # Only install wireguard-dkms if needed -if modprobe wireguard >/dev/null 2>&1 ; then +if modprobe wireguard >/dev/null 2>&1; then echo -e "\e[32m \n\n wireguard-dkms is already installed \n\n \e[0m" 2>&1 | tee -a $LOG_FILE else install_wireguard_dkms 2>&1 | tee -a $LOG_FILE @@ -157,16 +182,10 @@ else install_lsof 2>&1 | tee -a $LOG_FILE fi -#Check connectivity -{ [ -f /etc/network/interfaces ] && grep "iface en.* inet dhcp" /etc/network/interfaces &>/dev/null; } || { echo "Interfaces not found"; exit 1; } - -## Add missing interfaces -if [ -f /usr/src/dappnode/hotplug ]; then - # shellcheck disable=SC2013 - for IFACE in $(grep "en.*" /usr/src/dappnode/hotplug); do - # shellcheck disable=SC2143 - if [[ $(grep -L "$IFACE" /etc/network/interfaces) ]]; then - { echo "# $IFACE"; echo "allow-hotplug $IFACE"; echo "iface $IFACE inet dhcp"; } >> /etc/network/interfaces - fi - done +## Add or Update Network Configuration Based on OS +if [ "$lsb_dist" = "ubuntu" ]; then + check_ubuntu_connectivity +else + check_debian_connectivity + add_debian_missing_interfaces fi