nm-quick-server.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. echo "checking for root permissions..."
  3. if [ $EUID -ne 0 ]; then
  4. echo "This script must be run as root"
  5. exit 1
  6. fi
  7. echo "checking dependencies..."
  8. declare -A osInfo;
  9. osInfo[/etc/debian_version]="apt-get install -y"
  10. osInfo[/etc/alpine-release]="apk --update add"
  11. osInfo[/etc/centos-release]="yum install -y"
  12. osInfo[/etc/fedora-release]="dnf install -y"
  13. for f in ${!osInfo[@]}
  14. do
  15. if [[ -f $f ]];then
  16. install_cmd=${osInfo[$f]}
  17. fi
  18. done
  19. dependencies=("docker.io" "docker-compose" "wireguard")
  20. for dependency in ${dependencies[@]}; do
  21. is_installed=$(dpkg-query -W --showformat='${Status}\n' ${dependency} | grep "install ok installed")
  22. if [ "${is_installed}" == "install ok installed" ]; then
  23. echo " " ${dependency} is installed
  24. else
  25. echo " " ${dependency} is not installed. Attempting install.
  26. ${install_cmd} ${dependency}
  27. sleep 5
  28. is_installed=$(dpkg-query -W --showformat='${Status}\n' ${dependency} | grep "install ok installed")
  29. if [ "${is_installed}" == "install ok installed" ]; then
  30. echo " " ${dependency} is installed
  31. elif [ -x "$(command -v ${dependency})" ]; then
  32. echo " " ${dependency} is installed
  33. else
  34. echo " " failed to install ${dependency}. Exiting.
  35. exit 1
  36. fi
  37. fi
  38. done
  39. set -e
  40. echo "setting public ip values..."
  41. NETMAKER_BASE_DOMAIN=nm.$(curl -s ifconfig.me | tr . -).nip.io
  42. COREDNS_IP=$(ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p')
  43. SERVER_PUBLIC_IP=$(curl -s ifconfig.me)
  44. REPLACE_MASTER_KEY=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo '')
  45. EMAIL="[email protected]"
  46. echo " domain: $NETMAKER_BASE_DOMAIN"
  47. echo " coredns ip: $COREDNS_IP"
  48. echo " public ip: $SERVER_PUBLIC_IP"
  49. echo " master key: $REPLACE_MASTER_KEY"
  50. echo "setting caddyfile..."
  51. wget -O /root/Caddyfile https://raw.githubusercontent.com/gravitl/netmaker/master/docker/Caddyfile
  52. sed -i "s/NETMAKER_BASE_DOMAIN/$NETMAKER_BASE_DOMAIN/g" /root/Caddyfile
  53. sed -i "s/YOUR_EMAIL/$EMAIL/g" /root/Caddyfile
  54. echo "setting docker-compose..."
  55. wget -O /root/docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/compose/docker-compose.caddy.yml
  56. sed -i "s/NETMAKER_BASE_DOMAIN/$NETMAKER_BASE_DOMAIN/g" /root/docker-compose.yml
  57. sed -i "s/SERVER_PUBLIC_IP/$SERVER_PUBLIC_IP/g" /root/docker-compose.yml
  58. sed -i "s/COREDNS_IP/$COREDNS_IP/g" /root/docker-compose.yml
  59. sed -i "s/REPLACE_MASTER_KEY/$REPLACE_MASTER_KEY/g" /root/docker-compose.yml
  60. echo "starting containers..."
  61. docker-compose -f /root/docker-compose.yml up -d
  62. cat << "EOF"
  63. ______ ______ ______ __ __ __ ______ __
  64. /\ ___\ /\ == \ /\ __ \ /\ \ / / /\ \ /\__ _\ /\ \
  65. \ \ \__ \ \ \ __< \ \ __ \ \ \ \'/ \ \ \ \/_/\ \/ \ \ \____
  66. \ \_____\ \ \_\ \_\ \ \_\ \_\ \ \__| \ \_\ \ \_\ \ \_____\
  67. \/_____/ \/_/ /_/ \/_/\/_/ \/_/ \/_/ \/_/ \/_____/
  68. __ __ ______ ______ __ __ ______ __ __ ______ ______
  69. /\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \
  70. \ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __<
  71. \ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\
  72. \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/
  73. EOF
  74. echo " finished installing"
  75. echo " "
  76. echo " visit dashboard.$NETMAKER_BASE_DOMAIN to log in"
  77. echo " "
  78. echo " "