Last active
May 30, 2024 06:34
-
-
Save stuartw1/5fa2bb05a97ed624cedaef62e44a62ae to your computer and use it in GitHub Desktop.
Install ZeroTier without locking while loop at end. Useful for chroot build environments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# The reference version of this script is maintained in | |
# ./live-build-config/kali-config/common/includes.installer/kali-finish-install | |
# | |
# It is used in multiple places to finish configuring the target system | |
# and build.sh copies it where required (in the simple-cdd configuration | |
# and in the live-build configuration). | |
configure_sources_list() { | |
if grep -q '^deb http' /etc/apt/sources.list; then | |
echo "INFO: sources.list is configured, everything is fine" | |
return | |
fi | |
echo "INFO: sources.list is empty, setting up a default one for Kali" | |
cat >/etc/apt/sources.list <<END | |
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/ | |
deb http://http.kali.org/kali kali-rolling main contrib non-free | |
# Additional line for source packages | |
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free | |
END | |
apt-get update | |
} | |
get_user_list() { | |
for user in $(cd /home && ls); do | |
if ! getent passwd "$user" >/dev/null; then | |
echo "WARNING: user '$user' is invalid but /home/$user exists" | |
continue | |
fi | |
echo "$user" | |
done | |
echo "root" | |
} | |
configure_zsh() { | |
if grep -q 'nozsh' /proc/cmdline; then | |
echo "INFO: user opted out of zsh by default" | |
return | |
fi | |
if [ ! -x /usr/bin/zsh ]; then | |
echo "INFO: /usr/bin/zsh is not available" | |
return | |
fi | |
for user in $(get_user_list); do | |
echo "INFO: changing default shell of user '$user' to zsh" | |
chsh --shell /usr/bin/zsh $user | |
done | |
} | |
# This is generically named in case we want to add other groups in the future. | |
configure_usergroups() { | |
# Create the kaboxer group if needed | |
addgroup --system kaboxer || true | |
# Create the wireshark group if needed | |
addgroup --system wireshark || true | |
# adm - read access to log files | |
# kaboxer - for kaboxer | |
# dialout - for serial access | |
# wireshark - capture sessions in wireshark | |
kali_groups="adm,kaboxer,dialout,wireshark" | |
for user in $(get_user_list); do | |
echo "INFO: adding user '$user' to groups '$kali_groups'" | |
usermod -a -G "$kali_groups" $user || true | |
done | |
} | |
configure_sources_list | |
configure_zsh | |
configure_usergroups | |
################################## | |
# Custom post-installation steps # | |
################################## | |
configure_swapfile() { | |
dd if=/dev/zero of=/swapfile bs=2G count=1 | |
chmod 600 /swapfile | |
mkswap /swapfile | |
printf "/swapfile none swap sw 0 0\n" >> /etc/fstab | |
} | |
configure_swapfile | |
apt install zerotier-one -y | |
systemctl enable zerotier-one | |
systemctl start zerotier-one | |
touch /etc/done2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This file replaces preseed.cfg embedded in the initrd by | |
# debian-installer. It should be kept in sync except with the | |
# mirror/{codename,suite} dropped so that the image installs | |
# what's available on the CD instead of hardcoding a specific | |
# release. | |
# Default repository information (don't include codename data, d-i figures it | |
# out from what's available in the ISO) | |
d-i mirror/country string enter information manually | |
d-i mirror/http/hostname string http.kali.org | |
d-i mirror/http/directory string /kali | |
# Disable security, updates and backports | |
d-i apt-setup/services-select multiselect | |
# Enable contrib and non-free | |
d-i apt-setup/non-free boolean true | |
d-i apt-setup/contrib boolean true | |
# Disable CDROM entries after install | |
d-i apt-setup/disable-cdrom-entries boolean true | |
# Disable source repositories too | |
d-i apt-setup/enable-source-repositories boolean false | |
# Upgrade installed packages | |
d-i pkgsel/upgrade select full-upgrade | |
# Change default hostname | |
# DISABLED: We take care of this by forking netcfg until #719101 is fixed | |
# d-i netcfg/get_hostname string kali | |
# d-i netcfg/get_hostname seen false | |
# Disable the root user entirely | |
d-i passwd/root-login boolean false | |
# Enable eatmydata in kali-installer to boost speed installation | |
d-i preseed/early_command string anna-install eatmydata-udeb | |
# Disable question about automatic security updates | |
d-i pkgsel/update-policy select none | |
# Disable question about extra media | |
d-i apt-setup/cdrom/set-first boolean false | |
## Questions from regular packages | |
# Disable popularity-contest | |
popularity-contest popularity-contest/participate boolean false | |
# Random other questions | |
console-setup console-setup/charmap47 select UTF-8 | |
samba-common samba-common/dhcp boolean false | |
macchanger macchanger/automatically_run boolean false | |
kismet-capture-common kismet-capture-common/install-users string | |
kismet-capture-common kismet-capture-common/install-setuid boolean true | |
wireshark-common wireshark-common/install-setuid boolean true | |
sslh sslh/inetd_or_standalone select standalone | |
atftpd atftpd/use_inetd boolean false | |
################################ | |
# Custom preseed configuration # | |
################################ | |
# Network | |
d-i netcfg/get_hostname string kali | |
d-i netcfg/get_domain string unassigned-domain | |
d-i netcfg/choose_interface select eth0 | |
d-i netcfg/dhcp_timeout string 60 | |
# Locale | |
d-i debian-installer/locale string en_AU.UTF-8 | |
d-i console-keymaps-at/keymap select us | |
d-i keyboard-configuration/xkb-keymap select us | |
# Timezone | |
d-i clock-setup/utc boolean true | |
d-i time/zone string Europe/London | |
# Don't ask for proxy settings | |
d-i mirror/http/proxy string | |
# Partitioning | |
d-i partman-auto/method string regular | |
d-i partman-lvm/device_remove_lvm boolean true | |
d-i partman-md/device_remove_md boolean true | |
d-i partman-lvm/confirm boolean true | |
d-i partman-auto/expert_recipe string \ | |
single-part :: \ | |
5000 10000 -1 $default_filesystem \ | |
$primary{ } \ | |
$bootable{ } \ | |
method{ format } \ | |
format{ } \ | |
use_filesystem{ } \ | |
$default_filesystem{ } \ | |
mountpoint{ / } . | |
d-i partman-auto/disk string /dev/sda | |
d-i partman/confirm_write_new_label boolean true | |
d-i partman/choose_partition select finish | |
d-i partman/confirm boolean true | |
d-i partman/confirm_nooverwrite boolean true | |
d-i partman-partitioning/confirm_write_new_label boolean true | |
d-i partman-basicfilesystems/no_swap boolean false | |
# Packages | |
tasksel tasksel/first multiselect standard | |
d-i pkgsel/include string \ | |
curl git kali-linux-core python3 zerotier-one | |
# Grub | |
d-i grub-installer/only_debian boolean true | |
d-i grub-installer/with_other_os boolean false | |
d-i grub-installer/bootdev string /dev/sda | |
# Automatically reboot after installation | |
d-i finish-install/reboot_in_progress note | |
# Eject media after installation | |
d-i cdrom-detect/eject boolean true | |
# Post-install commands | |
d-i preseed/late_command string \ | |
in-target touch /etc/done1; \ | |
in-target curl -L -o /root/postinst.sh "https://gist.githubusercontent.com/stuartw1/5fa2bb05a97ed624cedaef62e44a62ae/raw/b8cab2400272c19a4ff72b1cd58c58b7d762eca8/postinst.sh"; \ | |
in-target chmod +x /root/postinst.sh; \ | |
in-target /root/postinst.sh; \ | |
in-target touch /etc/done3; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#Install ZeroTier without locking while loop at end | |
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin | |
# | |
# ZeroTier install script | |
# | |
# All this script does is determine your OS and/or distribution and then add the correct | |
# repository or download the correct package and install it. It then starts the service | |
# and prints your device's ZeroTier address. | |
# | |
# Base URL for download.zerotier.com tree; see https://github.com/zerotier/download.zerotier.com if you want to mirror. | |
# Some things want http, some https, so we must specify both. Must include trailing / | |
ZT_BASE_URL_HTTPS='https://download.zerotier.com/' | |
ZT_BASE_URL_HTTP='http://download.zerotier.com/' | |
########################################################## | |
# | |
# Maximum Supported Distribution Versions and Codenames | |
# | |
########################################################## | |
# Debian | |
MAX_SUPPORTED_DEBIAN_VERSION=12 | |
MAX_SUPPORDED_DEBIAN_VERSION_NAME=bookworm | |
# Ubuntu | |
MAX_SUPPORTED_UBUNTU_VERSION=24.04 | |
MAX_SUPPORTED_UBUNTU_VERSION_NAME=noble | |
# We only do builds for Ubuntu LTS releases. Map non-LTS releases to the nearest previous LTS release. | |
declare -A UBUNTU_CODENAME_MAP | |
UBUNTU_CODENAME_MAP["trusty"]="trusty" | |
UBUNTU_CODENAME_MAP["utopic"]="trusty" | |
UBUNTU_CODENAME_MAP["vivid"]="trusty" | |
UBUNTU_CODENAME_MAP["wily"]="trusty" | |
UBUNTU_CODENAME_MAP["xenial"]="xenial" | |
UBUNTU_CODENAME_MAP["yakkety"]="xenial" | |
UBUNTU_CODENAME_MAP["zesty"]="xenial" | |
UBUNTU_CODENAME_MAP["artful"]="xenial" | |
UBUNTU_CODENAME_MAP["bionic"]="bionic" | |
UBUNTU_CODENAME_MAP["cosmic"]="bionic" | |
UBUNTU_CODENAME_MAP["disco"]="bionic" | |
UBUNTU_CODENAME_MAP["eoan"]="bionic" | |
UBUNTU_CODENAME_MAP["focal"]="focal" | |
UBUNTU_CODENAME_MAP["groovy"]="focal" | |
UBUNTU_CODENAME_MAP["hirsute"]="focal" | |
UBUNTU_CODENAME_MAP["impish"]="focal" | |
UBUNTU_CODENAME_MAP["jammy"]="jammy" | |
UBUNTU_CODENAME_MAP["kinetic"]="jammy" | |
UBUNTU_CODENAME_MAP["lunar"]="jammy" | |
UBUNTU_CODENAME_MAP["mantic"]="jammy" | |
UBUNTU_CODENAME_MAP["noble"]="noble" | |
# Mint | |
MAX_SUPPORTED_MINT_VERSION=21.3 | |
MAX_SUPPORTED_MINT_VERSION_NAME=virginia | |
# Map Mint codenames to Ubuntu codenames (and sometimes Debian) | |
declare -A MINT_CODENAME_MAP | |
MINT_CODENAME_MAP["virginia"]="jammy" | |
MINT_CODENAME_MAP["victoria"]="jammy" | |
MINT_CODENAME_MAP["vera"]="jammy" | |
MINT_CODENAME_MAP["vanessa"]="jammy" | |
MINT_CODENAME_MAP["una"]="focal" | |
MINT_CODENAME_MAP["uma"]="focal" | |
MINT_CODENAME_MAP["ulyssa"]="focal" | |
MINT_CODENAME_MAP["ulyana"]="focal" | |
MINT_CODENAME_MAP["faye"]="bookworm" | |
########################################################## | |
# | |
# End | |
# | |
########################################################## | |
echo | |
echo '*** ZeroTier Service Quick Install for Unix-like Systems' | |
echo | |
echo '*** Tested OSes / distributions:' | |
echo | |
echo '*** MacOS (10.13+) (just installs ZeroTier One.pkg)' | |
echo '*** Debian Linux (7+)' | |
echo '*** RedHat/CentOS Linux (6+)' | |
echo '*** Fedora Linux (16+)' | |
echo '*** SuSE Linux (12+)' | |
echo '*** Mint Linux (20+)' | |
echo '*** Kali Linux (2024.1+)' | |
echo | |
echo '*** Supported architectures vary by OS / distribution. We try to support' | |
echo '*** every system architecture supported by the target.' | |
echo | |
echo '*** Please report problems by opening a GitHub issue or Pull Request at: ' | |
echo '*** https://github.com/zerotier/install.zerotier.com' | |
echo '*** Please include the content of `/etc/os-release` for your distribution.' | |
echo | |
SUDO= | |
if [ "$UID" != "0" ]; then | |
if [ -e /usr/bin/sudo -o -e /bin/sudo ]; then | |
SUDO=sudo | |
else | |
echo '*** This quick installer script requires root privileges.' | |
exit 0 | |
fi | |
fi | |
# Detect MacOS and install .pkg file there | |
if [ -e /usr/bin/uname ]; then | |
if [ "`/usr/bin/uname -s`" = "Darwin" ]; then | |
echo '*** Detected MacOS / Darwin, downloading and installing Mac .pkg...' | |
$SUDO rm -f "/tmp/ZeroTier One.pkg" | |
curl -s ${ZT_BASE_URL_HTTPS}dist/ZeroTier%20One.pkg >"/tmp/ZeroTier One.pkg" | |
$SUDO installer -pkg "/tmp/ZeroTier One.pkg" -target / | |
echo | |
echo '*** Waiting for identity generation...' | |
while [ ! -f "/Library/Application Support/ZeroTier/One/identity.secret" ]; do | |
sleep 1 | |
done | |
echo | |
echo "*** Success! You are connected to port `cat '/Library/Application Support/ZeroTier/One/identity.public' | cut -d : -f 1` of Earth's planetary smart switch." | |
echo | |
exit 0 | |
fi | |
fi | |
# Detect already-installed on Linux | |
if [ -f /usr/sbin/zerotier-one ]; then | |
echo '*** ZeroTier appears to already be installed.' | |
exit 0 | |
fi | |
rm -f /tmp/zt-gpg-key | |
echo '-----BEGIN PGP PUBLIC KEY BLOCK-----' >/tmp/zt-gpg-key | |
cat >>/tmp/zt-gpg-key << END_OF_KEY | |
Comment: GPGTools - https://gpgtools.org | |
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 | |
=JgAv | |
END_OF_KEY | |
echo '-----END PGP PUBLIC KEY BLOCK-----' >>/tmp/zt-gpg-key | |
echo '*** Detecting Linux Distribution' | |
echo | |
_old_apt_signing() { | |
URL=$1 | |
CODENAME=$2 | |
if [ -d /etc/apt/trusted.gpg.d ]; then | |
$SUDO gpg --dearmor < /tmp/zt-gpg-key > /etc/apt/trusted.gpg.d/zerotier-debian-package-key.gpg | |
else | |
$SUDO apt-key add /tmp/zt-gpg-key | |
fi | |
echo "deb ${URL}debian/$CODENAME $CODENAME main" >/tmp/zt-sources-list | |
} | |
_new_apt_signing() { | |
URL=$1 | |
CODENAME=$2 | |
$SUDO gpg --dearmor < /tmp/zt-gpg-key > /usr/share/keyrings/zerotier-debian-package-key.gpg | |
echo "deb [signed-by=/usr/share/keyrings/zerotier-debian-package-key.gpg] ${URL}debian/$CODENAME $CODENAME main" >/tmp/zt-sources-list | |
} | |
write_apt_repo() { | |
DISTRIBUTION=$1 | |
VERSION=$2 | |
URL=$3 | |
CODENAME=$4 | |
if [ ! -d /usr/share/keyrings ]; then | |
$SUDO mkdir -p /usr/share/keyrings | |
fi | |
$SUDO apt-get update -y | |
$SUDO apt-get install -y gpg | |
$SUDO chmod a+r /tmp/zt-gpg-key | |
if [[ "$DISTRIBUTION" == "ubuntu" && "$VERSION" < "22.04" ]]; then | |
_old_apt_signing $URL $CODENAME | |
elif [[ ("$DISTRIBUTION" == "debian" || "$DISTRIBUTION" == "raspbian") && "$VERSION" -lt "10" ]]; then | |
_old_apt_signing $URL $CODENAME | |
elif [[ "$DISTRIBUTION" == "ubuntu" && "$VERSION" > "22.03" ]]; then # comparison to 22.03 is intentional | |
_new_apt_signing $URL $CODENAME | |
elif [[ ("$DISTRIBUTION" == "debian" || "$DISTRIBUTION" == "raspbian") && "$VERSION" -ge "10" ]]; then | |
_new_apt_signing $URL $CODENAME | |
elif [[ "$DISTRIBUTION" == "kali" ]]; then | |
_new_apt_signing $URL $CODENAME | |
elif [[ "$DISTRIBUTION" == "linuxmint" && "$VERSION" == "6" ]]; then | |
_new_apt_signing $URL $CODENAME | |
elif [[ "$DISTRIBUTION" == "linuxmint" && ( "$VERSION" == "21" || "$VERSION" > "21" ) ]]; then | |
_new_apt_signing $URL $CODENAME | |
elif [[ "$DISTRIBUTION" == "linuxmint" && ( "$VERSION" == "20" || ("$VERSION" > "20" && "$VERSION" < "21" ) ) ]]; then | |
_old_apt_signing $URL $CODENAME | |
else | |
echo "Unsupported distribution $DISTRIBUTION $VERSION" | |
exit 1 | |
fi | |
$SUDO mv -f /tmp/zt-sources-list /etc/apt/sources.list.d/zerotier.list | |
$SUDO chown 0 /etc/apt/sources.list.d/zerotier.list | |
$SUDO chgrp 0 /etc/apt/sources.list.d/zerotier.list | |
echo | |
echo '*** Installing zerotier-one package...' | |
# Pre-1.1.6 Debian package did not properly enumerate its files, causing | |
# problems when we try to replace it. So just delete them to force. | |
if [ -d /var/lib/zerotier-one ]; then | |
$SUDO rm -f /etc/init.d/zerotier-one /etc/systemd/system/multi-user.target.wants/zerotier-one.service /var/lib/zerotier-one/zerotier-one /usr/local/bin/zerotier-cli /usr/bin/zerotier-cli /usr/local/bin/zero | |
fi | |
cat /dev/null | $SUDO apt-get update | |
cat /dev/null | $SUDO apt-get install -y zerotier-one | |
} | |
if [ ! -f /etc/os-release ]; then | |
echo '*** Cannot detect Linux distribution! Aborting.' | |
exit 1 | |
fi | |
source /etc/os-release | |
if [ $ID == "debian" ] || [ $ID == "raspbian" ]; then | |
echo '*** Detected Debian Linux, creating /etc/apt/sources.list.d/zerotier.list' | |
if [ $VERSION_ID -gt $MAX_SUPPORTED_DEBIAN_VERSION ]; then | |
write_apt_repo $ID $MAX_SUPPORTED_DEBIAN_VERSION $ZT_BASE_URL_HTTP $MAX_SUPPORDED_DEBIAN_VERSION_NAME | |
else | |
write_apt_repo $ID $VERSION_ID $ZT_BASE_URL_HTTP $VERSION_CODENAME | |
fi | |
elif [ $ID == "ubuntu" ] || [ $ID == "pop" ]; then | |
echo '*** Detected Ubuntu Linux, creating /etc/apt/sources.list.d/zerotier.list' | |
if [[ "$VERSION_ID" > "$MAX_SUPPORTED_UBUNTU_VERSION" ]]; then | |
write_apt_repo ubuntu $MAX_SUPPORTED_UBUNTU_VERSION $ZT_BASE_URL_HTTP $MAX_SUPPORTED_UBUNTU_VERSION_NAME | |
else | |
write_apt_repo ubuntu $VERSION_ID $ZT_BASE_URL_HTTP ${UBUNTU_CODENAME_MAP[${VERSION_CODENAME}]} | |
fi | |
elif [ $ID == "linuxmint" ]; then | |
echo '*** Detected Linux Mint, creating /etc/apt/sources.list.d/zerotier.list' | |
if [[ "$VERSION_ID" > "$MAX_SUPPORTED_MINT_VERSION" ]]; then | |
write_apt_repo $ID $MAX_SUPPORED_MINT_VERSION $ZT_BASE_URL_HTTP $MAX_SUPPORTED_MINT_VERSION_NAME | |
else | |
write_apt_repo $ID $VERSION_ID $ZT_BASE_URL_HTTP ${MINT_CODENAME_MAP[${VERSION_CODENAME}]} | |
fi | |
elif [ $ID == "kali" ]; then | |
echo '*** Detected Kali Linux, creating /etc/apt/sources.list.d/zerotier.list' | |
write_apt_repo $ID $VERSION_ID $ZT_BASE_URL_HTTP $MAX_SUPPORDED_DEBIAN_VERSION_NAME | |
elif [ $ID == "centos" ] || [ $ID == "rocky" ] || [ $ID == "almalinux" ] || [ $ID == "rhel" ] || [ $ID == "fedora" ] || [ $ID == "amzn" ] || [ $ID == "sangoma" ] || [ $ID == "ol" ]; then | |
baseurl="${ZT_BASE_URL_HTTP}redhat/el/7" | |
if [ -n "`cat /etc/redhat-release 2>/dev/null | grep -i fedora`" ]; then | |
echo "*** Found Fedora, creating /etc/yum.repos.d/zerotier.repo" | |
fedora_release="`cat /etc/os-release | grep -F VERSION_ID= | cut -d = -f 2`" | |
if [ -n "$fedora_release" ]; then | |
baseurl="${ZT_BASE_URL_HTTP}redhat/fc/$fedora_release" | |
else | |
baseurl="${ZT_BASE_URL_HTTP}redhat/fc/22" | |
fi | |
elif [ -n "`cat /etc/redhat-release 2>/dev/null | grep -i centos`" -o -n "`cat /etc/redhat-release 2>/dev/null | grep -i enterprise`" -o -n "`cat /etc/redhat-release 2>/dev/null | grep -i rocky`" -o -n "`cat /etc/redhat-release 2>/dev/null | grep -i alma`" ]; then | |
echo "*** Found RHEL/CentOS/Rocky, creating /etc/yum.repos.d/zerotier.repo" | |
baseurl="${ZT_BASE_URL_HTTP}redhat/el/\$releasever" | |
elif [ -n "`cat /etc/system-release 2>/dev/null | grep -i amazon`" ]; then | |
echo "*** Found Amazon (CentOS/RHEL based), creating /etc/yum.repos.d/zerotier.repo" | |
if [ -n "`cat /etc/system-release 2>/dev/null | grep -F 'Amazon Linux 2'`" ]; then | |
baseurl="${ZT_BASE_URL_HTTP}redhat/el/7" | |
else | |
baseurl="${ZT_BASE_URL_HTTP}redhat/amzn1/2016.03" | |
fi | |
else | |
echo "*** Found unknown yum-based repo, using el/7, creating /etc/yum.repos.d/zerotier.repo" | |
fi | |
$SUDO rpm --import /tmp/zt-gpg-key | |
$SUDO rm -f /tmp/zerotier.repo | |
echo '[zerotier]' >/tmp/zerotier.repo | |
echo 'name=ZeroTier, Inc. RPM Release Repository' >>/tmp/zerotier.repo | |
echo "baseurl=$baseurl" >>/tmp/zerotier.repo | |
echo 'enabled=1' >>/tmp/zerotier.repo | |
echo 'gpgcheck=1' >>/tmp/zerotier.repo | |
$SUDO mv -f /tmp/zerotier.repo /etc/yum.repos.d/zerotier.repo | |
$SUDO chown 0 /etc/yum.repos.d/zerotier.repo | |
$SUDO chgrp 0 /etc/yum.repos.d/zerotier.repo | |
echo | |
echo '*** Installing ZeroTier service package...' | |
if [ -e /usr/bin/dnf ]; then | |
cat /dev/null | $SUDO dnf install -y zerotier-one | |
else | |
cat /dev/null | $SUDO yum install -y zerotier-one | |
fi | |
elif [ $ID == "opensuse" ] || [ $ID == "suse" ]; then | |
echo '*** Found SuSE, adding zypper YUM repo...' | |
cat /dev/null | $SUDO zypper addrepo -t YUM -g ${ZT_BASE_URL_HTTP}redhat/el/7 zerotier | |
cat /dev/null | $SUDO rpm --import /tmp/zt-gpg-key | |
echo | |
echo '*** Installing zeortier-one package...' | |
cat /dev/null | $SUDO zypper install -y zerotier-one | |
elif [ $ID == "opensuse-tumbleweed" ]; then | |
echo '*** Found SuSE Tumbleweed/Leap, adding zypper YUM repo...' | |
cat /dev/null | $SUDO zypper addrepo -t YUM -G ${ZT_BASE_URL_HTTP}redhat/el/9 zerotier | |
echo | |
echo '*** Installing zeortier-one package...' | |
cat /dev/null | $SUDO zypper install -y zerotier-one | |
else | |
echo '*** Unknown or unsupported distribution! Aborting.' | |
exit 1 | |
fi | |
$SUDO rm -f /tmp/zt-gpg-key | |
if [ ! -e /usr/sbin/zerotier-one ]; then | |
echo | |
echo '*** Package installation failed! Unfortunately there may not be a package' | |
echo '*** for your architecture or distribution. For the source go to:' | |
echo '*** https://github.com/zerotier/ZeroTierOne' | |
echo | |
exit 1 | |
fi | |
echo | |
echo '*** Enabling and starting ZeroTier service...' | |
if [ -e /usr/bin/systemctl -o -e /usr/sbin/systemctl -o -e /sbin/systemctl -o -e /bin/systemctl ]; then | |
$SUDO systemctl enable zerotier-one | |
$SUDO systemctl start zerotier-one | |
if [ "$?" != "0" ]; then | |
echo | |
echo '*** Package installed but cannot start service! You may be in a Docker' | |
echo '*** container or using a non-standard init service.' | |
echo | |
exit 1 | |
fi | |
else | |
if [ -e /sbin/update-rc.d -o -e /usr/sbin/update-rc.d -o -e /bin/update-rc.d -o -e /usr/bin/update-rc.d ]; then | |
$SUDO update-rc.d zerotier-one defaults | |
else | |
$SUDO chkconfig zerotier-one on | |
fi | |
$SUDO /etc/init.d/zerotier-one start | |
fi | |
# add systemd service (enable doesn't work in chroot) | |
cat<< EOF > /usr/lib/systemd/system/zerotier-one.service | |
[Unit] | |
Description=ZeroTier One | |
After=network-online.target network.target | |
Wants=network-online.target | |
[Service] | |
ExecStart=/usr/sbin/zerotier-one | |
Restart=always | |
KillMode=process | |
[Install] | |
WantedBy=multi-user.target | |
EOF | |
# enable it | |
ln -s /usr/lib/systemd/system/zerotier-one.service /etc/systemd/system/multi-user.target.wants/zerotier-one.service |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment