You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

226 lines
5.5 KiB

#!/usr/bin/env bash
set -euo pipefail
# Default options
BOOTSTRAPPED="false"
PRINT_WARNING="true"
UPDATE_APT="true"
INSTALL_APT_DEPS="true"
INSTALL_AVAHI="true"
INSTALL_DOCKER="true"
INSTALL_DOCKER_COMPOSE="true"
INSTALL_UMBREL="true"
UMBREL_VERSION="release"
UMBREL_REPO="lukechilds/umbrel"
UMBREL_INSTALL_PATH="$HOME/umbrel"
# Parse arguments
arguments=${@:-}
if [[ "${arguments}" = *"--bootstrapped"* ]]
then
BOOTSTRAPPED="true"
fi
if [[ "${arguments}" = *"--no-warning"* ]]
then
PRINT_WARNING="false"
fi
if [[ "${arguments}" = *"--no-install-avahi"* ]]
then
INSTALL_AVAHI="false"
fi
if [[ "${arguments}" = *"--no-install-docker"* ]]
then
INSTALL_DOCKER="false"
fi
if [[ "${arguments}" = *"--no-install-compose"* ]]
then
INSTALL_DOCKER_COMPOSE="false"
fi
if [[ "${arguments}" = *"--no-install-umbrel"* ]]
then
INSTALL_UMBREL="false"
fi
if [[ "${arguments}" = *"--no-install-deps"* ]]
then
UPDATE_APT="false"
INSTALL_APT_DEPS="false"
INSTALL_AVAHI="false"
INSTALL_DOCKER="false"
INSTALL_DOCKER_COMPOSE="false"
INSTALL_UMBREL="true"
fi
if [[ "${arguments}" = *"--version"* ]]
then
UMBREL_VERSION="$(echo "${arguments}" | sed 's/.*--version \([^ ]*\).*/\1/')"
fi
if [[ "${arguments}" = *"--install-path"* ]]
then
UMBREL_INSTALL_PATH="$(echo "${arguments}" | sed 's/.*--install-path \([^ ]*\).*/\1/')"
fi
get_umbrel_version() {
version="${UMBREL_VERSION}"
if [[ "${version}" = "release" ]]
then
version=$(curl --silent https://api.github.com/repos/${UMBREL_REPO}/releases/latest | sed -n 's/.*"tag_name": "\([^"]*\).*/\1/p')
fi
echo $version
}
bootstrap() {
version=$(get_umbrel_version)
curl --location --silent "https://raw.githubusercontent.com/${UMBREL_REPO}/${version}/scripts/install" | \
bash -s -- --bootstrapped $arguments
}
update_apt() {
sudo apt-get update --yes
}
install_apt_deps() {
sudo apt-get install --yes fswatch jq rsync curl git
}
install_avahi() {
sudo apt-get install --yes avahi-daemon avahi-discover libnss-mdns
}
install_docker() {
# Install Docker
sudo apt-get install --yes gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --batch --yes --dearmor --output /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install --yes docker-ce docker-ce-cli containerd.io
# Add current user to docker group
sudo usermod --append --groups docker $USER
# Load new group instantly
newgrp docker
}
install_docker_compose() {
sudo apt-get install --yes python3-pip libffi-dev
sudo pip3 install docker-compose
}
install_umbrel() {
version=$(get_umbrel_version)
curl --location "https://api.github.com/repos/${UMBREL_REPO}/tarball/${version}" | \
tar --extract --gzip --strip-components=1 --directory="${UMBREL_INSTALL_PATH}"
}
main() {
if [[ "${BOOTSTRAPPED}" = "false" ]]
then
echo "Bootstrapping install script..."
bootstrap
exit
fi
if [[ "${PRINT_WARNING}" = "true" ]]
then
cat << 'EOF'
,;###GGGGGGGGGGl#Sp
,##GGGlW""^' '`""%GGGG#S,
,#GGG" "lGG#o
#GGl^ '$GG#
,#GGb \GGG,
lGG" "GGG
#GGGlGGGl##p,,p##lGGl##p,,p###ll##GGGG
!GGGlW"""*GGGGGGG#""""WlGGGGG#W""*WGGGGS
"" "^ '" ""
@GGS lG#
!GGG !GGG
!GGG !GGG
!GGG !GGG
!GGG !GGG
!GGG !GGG
'GGG $GGl
"GGG#psqp##GG#
"%GGGGGG#"
Thanks for trying out Umbrel!
This install script is for advanced users who already have an existing system they want to install Umbrel on. We recommend running Umbrel OS on a Raspberry Pi for the best experience.
Umbrel is currently in beta and is not yet safe to be exposed to the internet, it should only be run on a secure private network.
This installation method assumes a fresh Debian install. If you already have Docker or Docker Compose installed you may wish to exclude them with --no-install-docker or --no-install-compose.
You can pass flags to the installer like this:
curl -L https://umbrel.sh | bash -s -- --no-install-docker --no-install-compose
Sleeping for 30 seconds...
You may press Ctrl+C now to abort the install.
EOF
sleep 30
fi
if [[ "${INSTALL_UMBREL}" = "true" ]]
then
mkdir -p "${UMBREL_INSTALL_PATH}"
if [[ "$(ls --almost-all "${UMBREL_INSTALL_PATH}")" ]]
then
echo "Error: Umbrel install path \"${UMBREL_INSTALL_PATH}\" already contains files"
exit 1
fi
fi
if [[ "${UPDATE_APT}" = "true" ]]
then
update_apt
fi
if [[ "${INSTALL_APT_DEPS}" = "true" ]]
then
install_apt_deps
fi
if [[ "${INSTALL_AVAHI}" = "true" ]]
then
install_avahi
fi
if [[ "${INSTALL_DOCKER}" = "true" ]]
then
install_docker
fi
if [[ "${INSTALL_DOCKER_COMPOSE}" = "true" ]]
then
install_docker_compose
fi
if [[ "${INSTALL_UMBREL}" = "true" ]]
then
install_umbrel
cat << EOF
Umbrel has been sucessfully installed!
You can start Umbrel with "sudo ${UMBREL_INSTALL_PATH}/scripts/start".
You may want to setup a system service that runs "./scripts/start" and "./scripts/stop" at system startup/shutdown.
EOF
fi
}
main