Skip to content

Commit

Permalink
Fix prerequisites for Ubuntu
Browse files Browse the repository at this point in the history
  • Loading branch information
dappnodedev committed May 27, 2024
1 parent 0260762 commit c1df29d
Showing 1 changed file with 48 additions and 29 deletions.
77 changes: 48 additions & 29 deletions scripts/dappnode_install_pre.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -20,15 +19,14 @@ 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
apt-get install -y ca-certificates curl gnupg lsb-release | tee -a $LOG_FILE
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
Expand All @@ -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
Expand All @@ -56,54 +54,82 @@ install_docker() {

# DOCKER-COMPOSE FOR LEGACY SCRIPTS, SHOULD BE REMOVED EVENTUALLY
alias_docker_compose() {
cat > /usr/local/bin/docker-compose<<EOL
cat >/usr/local/bin/docker-compose <<EOL
#!/bin/bash
docker compose "\$@"
EOL
chmod +x /usr/local/bin/docker-compose
}

# WIREGUARD INSTALLATION
# WIREGUARD INSTALLATION
install_wireguard_dkms() {
apt-get update -y

apt-get install wireguard-dkms -y | tee -a $LOG_FILE

if modprobe wireguard >/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
fi
}

# 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
fi
}

# 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 ####
##############################################
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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

0 comments on commit c1df29d

Please sign in to comment.