0

Unifi CLI Install

Hi,

I’m trying to install my UDMP via SSH but i cant success.

 

When i connect my UDMP via ssh, when i paste the code;    sh -c 'sh -c "$(curl -sL https://nextdns.io/install)”’   nothing happend. I tried enter the shell or not. Result same.

 

My UDMP firmware is 1.11.0. I’m added screenshot. 

 

What's the exactly difference between forwarding 45.90.28.144 45.90.30.144 to these dns or installing UDMP?

 

Thank you.

4replies Oldest first
  • Oldest first
  • Newest first
  • Active threads
  • Popular
  • What does a “curl -vL https://nextdns.io/install” return?

    Like
    • NextDNS 


      # curl -vL https://nextdns.io/install * TLSv1.2 (OUT), TLS header, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): > GET /install HTTP/1.1 > Host: nextdns.io > User-Agent: curl/7.71.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, 08 Jan 2022 20:15:35 GMT < Content-Type: text/plain; charset=utf-8 < Transfer-Encoding: chunked < Connection: keep-alive < CF-Ray: 6ca819459e5f4e07-FRA < Access-Control-Allow-Origin: * < Cache-Control: max-age=300 < ETag: W/"50b0233d788a472ed0be09eeed200e749f26e0becddff9f0fc0495eee4448893" < Expires: Sat, 08 Jan 2022 20:20:35 GMT < Strict-Transport-Security: max-age=15552000; includeSubDomains; preload < Vary: Authorization,Accept-Encoding,Origin < Via: 1.1 varnish < CF-Cache-Status: DYNAMIC < Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; sandbox < Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" < Source-Age: 0 < X-Cache: HIT < X-Cache-Hits: 1 < X-Content-Type-Options: nosniff < X-Fastly-Request-ID: d0a42ab98e632f43aef07bdb73bb230b9d8202ca < X-Frame-Options: deny < X-GitHub-Request-Id: C6A0:3FD6:78AFF4:81B6B0:61D9BCE4 < X-Served-By: cache-fra19155-FRA < X-Timer: S1641672935.375627,VS0,VE140 < X-XSS-Protection: 1; mode=block < Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=h4WbrBhj9VOb2ekr99fJykDA4E%2Bpyd8qee8PO9I%2BvbSXQ%2BbKujNUpxMDSKKt%2FOUD3AuO9nqSWULwr2Ow5fVqnnQ4%2FHvEj6FTkHEboJVyc1Csp774k12gHYxGJcE%3D"}],"group":"cf-nel","max_age":604800} < NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800} < Server: cloudflare < alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400, h3-28=":443"; ma=86400, h3-27=":443"; ma=86400 < #!/bin/sh main() {     OS=$(detect_os)     GOARCH=$(detect_goarch)     GOOS=$(detect_goos)     NEXTDNS_BIN=$(bin_location)     INSTALL_RELEASE=$(get_release)     export NEXTDNS_INSTALLER=1     log_info "OS: $OS"     log_info "GOARCH: $GOARCH"     log_info "GOOS: $GOOS"     log_info "NEXTDNS_BIN: $NEXTDNS_BIN"     log_info "INSTALL_RELEASE: $INSTALL_RELEASE"     if [ -z "$OS" ] || [ -z "$GOARCH" ] || [ -z "$GOOS" ] || [ -z "$NEXTDNS_BIN" ] || [ -z "$INSTALL_RELEASE" ]; then         log_error "Cannot detect running environment."         exit 1     fi     case "$RUN_COMMAND" in     install|upgrade|uninstall|configure) "$RUN_COMMAND"; exit ;;     esac     while true; do         CURRENT_RELEASE=$(get_current_release)         log_debug "Start install loop with CURRENT_RELEASE=$CURRENT_RELEASE"         if [ "$CURRENT_RELEASE" ]; then             if ! is_version_current; then                 log_debug "NextDNS is out of date ($CURRENT_RELEASE != $INSTALL_RELEASE)"                 menu                     u "Upgrade NextDNS from $CURRENT_RELEASE to $INSTALL_RELEASE" upgrade                     c "Configure NextDNS" configure                     r "Remove NextDNS" uninstall                     e "Exit" exit             else                 log_debug "NextDNS is up to date ($CURRENT_RELEASE)"                 menu                     c "Configure NextDNS" configure                     r "Remove NextDNS" uninstall                     e "Exit" exit             fi         else             log_debug "NextDNS is not installed"             menu                 i "Install NextDNS" install                 e "Exit" exit         fi     done } install() {     if [ "$(get_current_release)" ]; then         log_info "Already installed"         return     fi     if type=$(install_type); then         log_info "Installing NextDNS..."         log_debug "Using $type install type"         if "install_$type"; then             if [ ! -x "$NEXTDNS_BIN" ]; then                 log_error "Installation failed: binary not installed in $NEXTDNS_BIN"                 return 1             fi             configure             post_install             exit 0         fi     else         return $?     fi } upgrade() {     if [ "$(get_current_release)" = "$INSTALL_RELEASE" ]; then         log_info "Already on the latest version"         return     fi     if type=$(install_type); then         log_info "Upgrading NextDNS..."         log_debug "Using $type install type"         "upgrade_$type"     else         return $?     fi } uninstall() {     if type=$(install_type); then         log_info "Uninstalling NextDNS..."         log_debug "Using $type uninstall type"         "uninstall_$type"     else         return $?     fi } configure() {     log_debug "Start configure"     args=""     add_arg() {         for value in $2; do             log_debug "Add arg -$1=$value"             args="$args -$1=$value"         done     }     add_arg_bool_ask() {         arg=$1         msg=$2         default=$3         if [ -z "$default" ]; then             default=$(get_config_bool "$arg")         fi         # shellcheck disable=SC2046         add_arg "$arg" $(ask_bool "$msg" "$default")     }     add_arg config "$(get_config_id)"     doc "Sending your devices name lets you filter analytics and logs by device."     add_arg_bool_ask report-client-info 'Report device name?' true     case $(guess_host_type) in     router)         add_arg setup-router true         ;;     unsure)         doc "Accept DNS request from other network hosts."         if [ "$(get_config_bool setup-router)" = "true" ]; then             router_default=true         fi         if [ "$(ask_bool 'Setup as a router?' $router_default)" = "true" ]; then             add_arg setup-router true         fi         ;;     esac     doc "Make nextdns CLI cache responses. This improves latency and reduces the amount"     doc "of queries sent to NextDNS."     if [ "$(guess_host_type)" = "router" ]; then         doc "Note that enabling this feature will disable dnsmasq for DNS to avoid double"         doc "caching."     fi     if [ "$(get_config cache-size)" != "0" ]; then         cache_default=true     fi     if [ "$(ask_bool 'Enable caching?' $cache_default)" = "true" ]; then         add_arg cache-size "10MB"         doc "Instant refresh will force low TTL on responses sent to clients so they rely"         doc "on CLI DNS cache. This will allow changes on your NextDNS config to be applied"         doc "on you LAN hosts without having to wait for their cache to expire."         if [ "$(get_config max-ttl)" = "5s" ]; then             instant_refresh_default=true         fi         if [ "$(ask_bool 'Enable instant refresh?' $instant_refresh_default)" = "true" ]; then             add_arg max-ttl "5s"         fi     fi     if [ "$(guess_host_type)" != "router" ]; then         doc "Changes DNS settings of the host automatically when nextdns is started."         doc "If you say no here, you will have to manually configure DNS to 127.0.0.1."         add_arg_bool_ask auto-activate 'Automatically setup local host DNS?' true     fi     # shellcheck disable=SC2086     asroot "$NEXTDNS_BIN" install $args } post_install() {     println     println "Congratulations! NextDNS is now installed."     println     println "To upgrade/uninstall, run this command again and select the approriate option."     println     println "You can use the nextdns command to control the daemon."     println "Here is a few important commands to know:"     println     println "# Start, stop, restart the daemon:"     println "nextdns start"     println "nextdns stop"     println "nextdns restart"     println     println "# Configure the local host to point to NextDNS or not:"     println "nextdns activate"     println "nextdns deactivate"     println     println "# Explore daemon logs:"     println "nextdns log"     println     println "# For more commands, use:"     println "nextdns help"     println } install_bin() {     bin_path=$NEXTDNS_BIN     if [ "$1" ]; then         bin_path=$1     fi     log_debug "Installing $INSTALL_RELEASE binary for $GOOS/$GOARCH to $bin_path"     case "$INSTALL_RELEASE" in     */*)         # Snapshot         branch=${INSTALL_RELEASE%/*}         hash=${INSTALL_RELEASE#*/}         url="https://snapshot.nextdns.io/${branch}/nextdns-${hash}_${GOOS}_${GOARCH}.tar.gz"         ;;     *)         url="https://github.com/nextdns/nextdns/releases/download/v${INSTALL_RELEASE}/nextdns_${INSTALL_RELEASE}_${GOOS}_${GOARCH}.tar.gz"         ;;     esac     log_debug "Downloading $url"     asroot mkdir -p "$(dirname "$bin_path")" &&         curl -sL "$url" | asroot sh -c "tar Ozxf - nextdns > \"$bin_path\"" &&         asroot chmod 755 "$bin_path" } upgrade_bin() {     tmp=$NEXTDNS_BIN.tmp     if install_bin "$tmp"; then         asroot "$NEXTDNS_BIN" uninstall         asroot mv "$tmp" "$NEXTDNS_BIN"         asroot "$NEXTDNS_BIN" install     fi     log_debug "Removing spurious temporary install file"     asroot rm -rf "$tmp" } uninstall_bin() {     asroot "$NEXTDNS_BIN" uninstall     asroot rm -f "$NEXTDNS_BIN" } install_rpm() {     asroot curl -Ls https://repo.nextdns.io/nextdns.repo -o /etc/yum.repos.d/nextdns.repo &&         asroot yum install -y nextdns } upgrade_rpm() {     asroot yum update -y nextdns } uninstall_rpm() {     asroot yum remove -y nextdns } install_zypper() {     if asroot zypper repos | grep -q nextdns >/dev/null; then         echo "Repository nextdns already exists. Skipping adding repository..."     else         asroot zypper ar -f -r https://repo.nextdns.io/nextdns.repo nextdns     fi     asroot zypper refresh && asroot zypper in -y nextdns } upgrade_zypper() {     asroot zypper up nextdns } uninstall_zypper() {     asroot zypper remove -y nextdns     case $(ask_bool 'Do you want to remove the repository from the repositories list?' true) in     true)         asroot zypper removerepo nextdns         ;;     esac } install_deb() {     if [ -f /etc/default/ubnt-dpkg-cache ]; then         # On UnifiOS 2, make sure the package is persisted over upgrades         sed -e '/^DPKG_CACHE_UBNT_PKGS+=" nextdns"/{:a;n;ba;q}'             -e '$aDPKG_CACHE_UBNT_PKGS+=" nextdns"'             -i /etc/default/ubnt-dpkg-cache     fi     # Fallback on curl, some debian based distrib don't have wget while debian     # doesn't have curl by default.     ( asroot wget -qO /usr/share/keyrings/nextdns.gpg https://repo.nextdns.io/nextdns.gpg ||       asroot curl -sfL https://repo.nextdns.io/nextdns.gpg -o /usr/share/keyrings/nextdns.gpg ) &&         asroot sh -c 'echo "deb [signed-by=/usr/share/keyrings/nextdns.gpg] https://repo.nextdns.io/deb stable main" > /etc/apt/sources.list.d/nextdns.list' &&         (dpkg --compare-versions $(dpkg-query --showformat='${Version}' --show apt) ge 1.1 ||          asroot ln -s /usr/share/keyrings/nextdns.gpg /etc/apt/trusted.gpg.d/.) &&         (test "$OS" = "debian" && asroot apt-get -y install apt-transport-https || true) &&         asroot apt-get update &&         asroot apt-get install -y nextdns } upgrade_deb() {     asroot apt-get update &&         asroot apt-get install -y nextdns } uninstall_deb() {     asroot apt-get remove -y nextdns } install_apk() {     repo=https://repo.nextdns.io/apk     asroot wget -O /etc/apk/keys/nextdns.pub https://repo.nextdns.io/nextdns.pub &&         (grep -v $repo /etc/apk/repositories; echo $repo) | asroot tee /etc/apk/repositories >/dev/null &&         asroot apk update &&         asroot apk add nextdns } upgrade_apk() {     asroot apk update && asroot apk upgrade nextdns } uninstall_apk() {     asroot apk del nextdns } install_arch() {     asroot pacman -Sy yay &&         yay -Sy nextdns } upgrade_arch() {     yay -Suy nextdns } uninstall_arch() {     asroot pacman -R nextdns } install_merlin_path() {     # Add next to Merlin's path     mkdir -p /tmp/opt/sbin     ln -sf "$NEXTDNS_BIN" /tmp/opt/sbin/nextdns } install_merlin() {     if install_bin; then         install_merlin_path     fi } uninstall_merlin() {     uninstall_bin     rm -f /tmp/opt/sbin/nextdns } upgrade_merlin() {     if upgrade_bin; then         install_merlin_path     fi } install_openwrt() {     opkg update &&         opkg install nextdns     rt=$?     if [ $rt -eq 0 ]; then         case $(ask_bool 'Install the GUI?' true) in         true)             opkg install luci-app-nextdns             rt=$?             ;;         esac     fi     return $rt } upgrade_openwrt() {     opkg update &&         opkg upgrade nextdns } uninstall_openwrt() {     opkg remove nextdns } install_ddwrt() {     if [ "$(nvram get enable_jffs2)" = "0" ]; then         log_error "JFFS support not enabled"         log_info "To enabled JFFS:"         log_info " 1. On the router web page click on Administration."         log_info " 2. Scroll down until you see JFFS2 Support section."         log_info " 3. Click Enable JFFS."         log_info " 4. Click Save."         log_info " 5. Wait couple seconds, then click Apply."         log_info " 6. Wait again. Go back to the Enable JFFS section, and enable Clean JFFS."         log_info " 7. Do not click Save. Click Apply instead."         log_info " 8. Wait till you get the web-GUI back, then disable Clean JFFS again."         log_info " 9. Click Save."         log_info "10. Relaunch this installer."         exit 1     fi     mkdir -p /jffs/nextdns &&         openssl_get https://curl.haxx.se/ca/cacert.pem | http_body > /jffs/nextdns/ca.pem &&         install_bin } upgrade_ddwrt() {     upgrade_bin } uninstall_ddwrt() {     uninstall_bin     rm -rf /jffs/nextdns } install_brew() {     silent_exec brew install nextdns/tap/nextdns } upgrade_brew() {     silent_exec brew upgrade nextdns/tap/nextdns     asroot "$NEXTDNS_BIN" install } uninstall_brew() {     silent_exec brew uninstall nextdns/tap/nextdns } install_freebsd() {     # TODO: port install     install_bin } upgrade_freebsd() {     # TODO: port upgrade     upgrade_bin } uninstall_freebsd() {     # TODO: port uninstall     uninstall_bin } install_pfsense() {     # TODO: port install + UI     install_bin } upgrade_pfsense() {     # TODO: port upgrade     upgrade_bin } uninstall_pfsense() {     # TODO: port uninstall     uninstall_bin } install_opnsense() {     # TODO: port install + UI     install_bin } upgrade_opnsense() {     # TODO: port upgrade     upgrade_bin } uninstall_opnsense() {     # TODO: port uninstall     uninstall_bin } ubios_install_source() {     echo "deb [signed-by=/usr/share/keyrings/nextdns.gpg] https://repo.nextdns.io/deb stable main" > /data/nextdns.list     podman exec unifi-os mv /data/nextdns.list /etc/apt/sources.list.d/nextdns.list     rm -f /tmp/nextdns.list     podman exec unifi-os apt-get install -y gnupg1 curl     podman exec unifi-os curl -sfL https://repo.nextdns.io/nextdns.gpg -o /usr/share/keyrings/nextdns.gpg     podman exec unifi-os apt-get update -o Dir::Etc::sourcelist="sources.list.d/nextdns.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" } install_ubios() {     ubios_install_source     podman exec unifi-os apt-get install -y nextdns } upgrade_ubios() {     ubios_install_source     podman exec unifi-os apt-get install --only-upgrade -y nextdns } uninstall_ubios() {     podman exec unifi-os apt-get remove -y nextdns } install_ubios_snapshot() {     branch=${INSTALL_RELEASE%/*}     hash=${INSTALL_RELEASE#*/}     url="https://snapshot.nextdns.io/${branch}/nextdns-${hash}_${GOOS}_${GOARCH}.tar.gz"     podman exec unifi-os sh -c "curl -o- $url | tar Ozxf - nextdns > /usr/bin/nextdns; /usr/bin/nextdns install" } upgrade_ubios_snapshot() {     /data/nextdns uninstall     install_ubios_snapshot } install_type() {     if [ "$FORCE_INSTALL_TYPE" ]; then         echo "$FORCE_INSTALL_TYPE"; return 0     fi     case "$INSTALL_RELEASE" in     */*)         case $OS in         ubios)             echo "ubios_snapshot"; return 0             ;;         *)             # Snapshot mode always use binary install             echo "bin"; return 0             ;;         esac     esac     case $OS in     centos|fedora|rhel)         echo "rpm"         ;;     opensuse-tumbleweed|opensuse-leap|opensuse)         echo "zypper"         ;;     debian|ubuntu|elementary|raspbian|linuxmint|pop|neon|sparky|vyos|Deepin)         echo "deb"         ;;     alpine)         echo "apk"         ;;     arch|manjaro)         #echo "arch" # TODO: fix AUR install         echo "bin"         ;;     openwrt)         # shellcheck disable=SC1091         . /etc/os-release         major=$(echo "$VERSION_ID" | cut -d. -f1)         case $major in             *[!0-9]*)                 if [ "$VERSION_ID" = "19.07.0-rc1" ]; then                     # No opkg support before 19.07.0-rc2                     echo "bin"                 else                     # Likely 'snapshot' bulid in this case, but still > major version 19                     echo "openwrt"                 fi                 ;;             *)                 if [ "$major" -lt 19 ]; then                     # No opkg support before 19.07.0-rc2                     echo "bin"                 else                     echo "openwrt"                 fi                 ;;         esac         ;;     asuswrt-merlin)         echo "merlin"         ;;     edgeos|synology|clear-linux-os|solus|openbsd|netbsd|overthebox)         echo "bin"         ;;     ddwrt)         echo "ddwrt"         ;;     darwin)         if [ -x /usr/local/bin/brew ]; then             echo "brew"         else             log_debug "Homebrew not installed, fallback on binary install"             echo "bin"         fi         ;;     freebsd)         echo "freebsd"         ;;     pfsense)         echo "pfsense"         ;;     opnsense)         echo "opnsense"         ;;     ubios)         echo "ubios"         ;;     void)         # TODO: pkg for xbps         echo "bin"         ;;     *)         log_error "Unsupported installation for $(detect_os)"         return 1         ;;     esac } get_config() {     "$NEXTDNS_BIN" config | grep -E "^$1 " | cut -d' ' -f 2 } get_config_bool() {     val=$(get_config "$1")     case $val in         true|false)             echo "$val"             ;;     esac     echo "$2" } get_config_id() {     log_debug "Get configuration ID"     while [ -z "$CONFIG_ID" ]; do         default=         prev_id=$(get_config config)         if [ "$prev_id" ]; then             log_debug "Previous config ID: $prev_id"             default=" (default=$prev_id)"         fi         print "NextDNS Configuration ID%s: " "$default"         read -r id         if [ -z "$id" ]; then             id=$prev_id         fi         if echo "$id" | grep -qE '^[0-9a-f]{6}$'; then             CONFIG_ID=$id             break         else             log_error "Invalid configuration ID."             println             println "ID format is 6 alphanumerical lowercase characters (example: 123abc)."             println "Your ID can be found on the Setup tab of https://my.nextdns.io."             println         fi     done     echo "$CONFIG_ID" } log_debug() {     if [ "$DEBUG" = "1" ]; then         printf "\033[30;1mDEBUG: %s\033[0m\n" "$*" >&2     fi } log_info() {     printf "INFO: %s\n" "$*" >&2 } log_error() {     printf "\033[31mERROR: %s\033[0m\n" "$*" >&2 } print() {     format=$1     if [ $# -gt 0 ]; then         shift     fi     # shellcheck disable=SC2059     printf "$format" "$@" >&2 } println() {     format=$1     if [ $# -gt 0 ]; then         shift     fi     # shellcheck disable=SC2059     printf "$format\n" "$@" >&2 } doc() {     # shellcheck disable=SC2059     printf "\033[30;1m%s\033[0m\n" "$*" >&2 } menu() {     while true; do         n=0         default=         for item in "$@"; do             case $((n%3)) in             0)                 key=$item                 if [ -z "$default" ]; then                     default=$key                 fi                 ;;             1)                 echo "$key) $item"                 ;;             esac             n=$((n+1))         done         print "Choice (default=%s): " "$default"         read -r choice         if [ -z "$choice" ]; then             choice=$default         fi         n=0         for item in "$@"; do             case $((n%3)) in             0)                 key=$item                 ;;             2)                 if [ "$key" = "$choice" ]; then                     if ! "$item"; then                         log_error "$item: exit $?"                     fi                     break 2                 fi                 ;;             esac             n=$((n+1))         done         echo "Invalid choice"     done } ask_bool() {     msg=$1     default=$2     case $default in     true)         msg="$msg [Y|n]: "         ;;     false)         msg="$msg [y|N]: "         ;;     *)         msg="$msg (y/n): "     esac     while true; do         print "%s" "$msg"         read -r answer         if [ -z "$answer" ]; then             answer=$default         fi         case $answer in         y|Y|yes|YES|true)             echo "true"             return 0             ;;         n|N|no|NO|false)             echo "false"             return 0             ;;         *)             echo "Invalid input, use yes or no"             ;;         esac     done } detect_endiannes() {     if ! hexdump /dev/null 2>/dev/null; then         # Some firmware do not contain hexdump, for those, try to detect endiannes         # differently         case $(cat /proc/cpuinfo) in         *BCM5300*)             # RT-AC66U does not support merlin version over 380.70 which             # lack hexdump command.             echo "le"             ;;         *)             log_error "Cannot determine endiannes"             return 1             ;;         esac         return 0     fi     case $(hexdump -s 5 -n 1 -e '"%x"' /bin/sh | head -c1) in     1)         echo "le"         ;;     2)         echo ""         ;;     esac } detect_goarch() {     if [ "$FORCE_GOARCH" ]; then         echo "$FORCE_GOARCH"; return 0     fi     case $(uname -m) in     x86_64|amd64)         echo "amd64"         ;;     i386|i686)         echo "386"         ;;     arm)         # Freebsd does not include arm version         case "$(sysctl -b hw.model 2>/dev/null)" in         *A9*)             echo "armv7"             ;;         *)             # Unknown version, fallback to the lowest             echo "armv5"             ;;         esac         ;;     armv5*)         echo "armv5"         ;;     armv6*|armv7*)         if grep -q vfp /proc/cpuinfo 2>/dev/null; then             echo "armv$(uname -m | sed -e 's/[[:alpha:]]//g')"         else             # Soft floating point             echo "armv5"         fi         ;;     aarch64)         case "$(uname -o 2>/dev/null)" in         ASUSWRT-Merlin*)             # XXX when using arm64 build on ASUS AC66U and ACG86U, we get Go error:             # "out of memory allocating heap arena metadata".             echo "armv7"             ;;         *)             echo "arm64"             ;;         esac         ;;     armv8*|arm64)         echo "arm64"         ;;     mips*)         # TODO: detect hardfloat         echo "$(uname -m)$(detect_endiannes)_softfloat"         ;;     *)         log_error "Unsupported GOARCH: $(uname -m)"         return 1         ;;     esac } detect_goos() {     if [ "$FORCE_GOOS" ]; then         echo "$FORCE_GOOS"; return 0     fi     case $(uname -s) in     Linux)         echo "linux"         ;;     Darwin)         echo "darwin"         ;;     FreeBSD)         echo "freebsd"         ;;     NetBSD)         echo "netbsd"         ;;     OpenBSD)         echo "openbsd"         ;;     *)         log_error "Unsupported GOOS: $(uname -s)"         return 1     esac } detect_os() {     if [ "$FORCE_OS" ]; then         echo "$FORCE_OS"; return 0     fi     case $(uname -s) in     Linux)         case $(uname -o) in         GNU/Linux|Linux)             if grep -q -e '^EdgeRouter' -e '^UniFiSecurityGateway' /etc/version 2> /dev/null; then                 echo "edgeos"; return 0             fi             if uname -u 2>/dev/null | grep -q '^synology'; then                 echo "synology"; return 0             fi             # shellcheck disable=SC1091             dist=$(. /etc/os-release; echo "$ID")             case $dist in             ubios)                 if [ -z "$(command -v podman)" ]; then                     log_error "This version of UnifiOS is not supported. Make sure you run version 1.7.0 or above."                     return 1                 fi                 echo "$dist"; return 0                 ;;             debian|ubuntu|elementary|raspbian|centos|fedora|rhel|arch|manjaro|openwrt|clear-linux-os|linuxmint|opensuse-tumbleweed|opensuse-leap|opensuse|solus|pop|neon|overthebox|sparky|vyos|void|alpine|Deepin)                 echo "$dist"; return 0                 ;;             esac             # shellcheck disable=SC1091             for dist in $(. /etc/os-release; echo "$ID_LIKE"); do                 case $dist in                 debian|ubuntu|rhel|fedora|openwrt)                     log_debug "Using ID_LIKE"                     echo "$dist"; return 0                     ;;                 esac             done             ;;         ASUSWRT-Merlin*)             echo "asuswrt-merlin"; return 0             ;;         DD-WRT)             echo "ddwrt"; return 0         esac         ;;     Darwin)         echo "darwin"; return 0         ;;     FreeBSD)         if [ -f /etc/platform ]; then             case $(cat /etc/platform) in             pfSense)                 echo "pfsense"; return 0                 ;;             esac         fi         if [ -x /usr/local/sbin/opnsense-version ]; then             case $(/usr/local/sbin/opnsense-version -N) in             OPNsense)                 echo "opnsense"; return 0                 ;;             esac         fi         echo "freebsd"; return 0         ;;     NetBSD)         echo "netbsd"; return 0         ;;     OpenBSD)         echo "openbsd"; return 0         ;;     *)     esac     log_error "Unsupported OS: $(uname -o) $(grep ID "/etc/os-release" 2>/dev/null | xargs)"     return 1 } guess_host_type() {     if [ -d /data/unifi ]; then         # Special case when installer is run from inside the ubios podman         echo "router"; return 0     fi     case $OS in     pfsense|opnsense|openwrt|asuswrt-merlin|edgeos|ddwrt|synology|overthebox|ubios)         echo "router"         ;;     darwin)         echo "workstation"         ;;     *)         echo "unsure"         ;;     esac } asroot() {     # Some platform (merlin) do not have the "id" command and $USER report a non root username with uid 0.     if [ "$(grep '^Uid:' /proc/$$/status 2>/dev/null|cut -f2)" = "0" ] || [ "$USER" = "root" ] || [ "$(id -u 2>/dev/null)" = "0" ]; then         "$@"     elif [ "$(command -v sudo 2>/dev/null)" ]; then         sudo "$@"     else         echo "Root required"         su -m root -c "$*"     fi } silent_exec() {     if [ "$DEBUG" = 1 ]; then         "$@"     else         if ! out=$("$@" 2>&1); then             rt=$?             println "\033[30;1m%s\033[0m" "$out"             return $rt         fi     fi } bin_location() {     case $OS in     centos|fedora|rhel|debian|ubuntu|elementary|raspbian|arch|manjaro|clear-linux-os|linuxmint|opensuse-tumbleweed|opensuse-leap|opensuse|solus|pop|neon|sparky|vyos|void|alpine|Deepin)         echo "/usr/bin/nextdns"         ;;     openwrt|overthebox)         echo "/usr/sbin/nextdns"         ;;     synology)         echo "/usr/local/bin/nextdns" ;;     darwin) echo "$(brew --prefix 2>/dev/null || echo /usr/local)/bin/nextdns"         ;;     asuswrt-merlin|ddwrt)         echo "/jffs/nextdns/nextdns"         ;;     freebsd|pfsense|opnsense|netbsd|openbsd)         echo "/usr/local/sbin/nextdns"         ;;     edgeos)         echo "/config/nextdns/nextdns"         ;;     ubios)         echo "/data/nextdns"         ;;     *)         log_error "Unknown bin location for $OS"         ;;     esac } is_version_current() {     case "$INSTALL_RELEASE" in     */*)         # Snapshot         hash=${INSTALL_RELEASE#*/}         test "0.0.0-$hash" = "$CURRENT_RELEASE"         ;;     *)         test "$INSTALL_RELEASE" = "$CURRENT_RELEASE"         ;;     esac } get_current_release() {     if [ -x "$NEXTDNS_BIN" ]; then         $NEXTDNS_BIN version|cut -d' ' -f 3     fi } get_release() {     if [ "$NEXTDNS_VERSION" ]; then         echo "$NEXTDNS_VERSION"     else         for cmd in curl wget openssl true; do             # command is the "right" way but may be compiled out of busybox shell             ! command -v $cmd > /dev/null 2>&1 || break             ! which $cmd > /dev/null 2>&1 || break         done         case "$cmd" in         curl) cmd="curl -A curl -s" ;;         wget) cmd="wget -qO- -U curl" ;;         openssl) cmd="openssl_get" ;;         *)             log_error "Cannot retrieve latest version"             return             ;;         esac         v=$($cmd "https://api.github.com/repos/nextdns/nextdns/releases/latest" |             grep '"tag_name":' | esed 's/.*"([^"]+)".*/\1/' | sed -e 's/^v//')         if [ -z "$v" ]; then             log_error "Cannot get latest version: $out"         fi         echo "$v"     fi } esed() {     if (echo | sed -E '' >/dev/null 2>&1); then         sed -E "$@"     else         sed -r "$@"     fi } http_redirect() {     while read -r header; do         case $header in             Location:*)                 echo "${header#Location: }"                 return             ;;         esac         if [ "$header" = "" ]; then             break         fi     done     cat > /dev/null     return 1 } http_body() {     sed -n '/^\r/,$p' | sed 1d } openssl_get() {     host=${1#https://*} # https://dom.com/path -> dom.com/path     path=/${host#*/}    # dom.com/path -> /path     host=${host%$path}  # dom.com/path -> dom.com     printf "GET %s HTTP/1.0\nHost: %s\nUser-Agent: curl\n\n" "$path" "$host" |         openssl s_client -quiet -connect "$host:443" 2>/dev/null } umask 0022 main #
      Like
    • Ayberk Altuntop please try the install command prefixed with DEBUG=1

      Like
    • NextDNS didn't work your command I try different command and it success. I will share the command;

      FORCE_OS=edgeos sh -c "$(curl -sL https://nextdns.io/install)"
      

      I don't know how, but it working now. Do I need to write 127.0.0.1 as DNS from WAN section or is it enough to leave it blank?

      Thanks.

      Like
Like Follow
  • 7 days agoLast active
  • 4Replies
  • 69Views
  • 2 Following