From 42c02d132698f6d2b192fa77a9cf6c6244515aa0 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 21:07:05 +0200 Subject: [PATCH] Add openthread-br (ct) (#13536) Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> --- ct/openthread-br.sh | 87 +++++++++++++++++++++++++++++ install/openthread-br-install.sh | 94 ++++++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100644 ct/openthread-br.sh create mode 100644 install/openthread-br-install.sh diff --git a/ct/openthread-br.sh b/ct/openthread-br.sh new file mode 100644 index 000000000..310318cff --- /dev/null +++ b/ct/openthread-br.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://openthread.io/guides/border-router + +APP="OpenThread-BR" +var_tags="${var_tags:-thread;iot;border-router;matter}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_unprivileged="${var_unprivileged:-0}" +var_tun="${var_tun:-yes}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/ot-br-posix ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + cd /opt/ot-br-posix + LOCAL_COMMIT=$(git rev-parse HEAD) + $STD git fetch --depth 1 origin main + REMOTE_COMMIT=$(git rev-parse origin/main) + + if [[ "${LOCAL_COMMIT}" == "${REMOTE_COMMIT}" ]]; then + msg_ok "Already up to date (${LOCAL_COMMIT:0:7})" + exit + fi + + msg_info "Stopping Services" + systemctl stop otbr-web + systemctl stop otbr-agent + msg_ok "Stopped Services" + + msg_info "Updating Source" + $STD git reset --hard origin/main + $STD git submodule update --depth 1 --init --recursive + msg_ok "Updated Source" + + msg_info "Rebuilding OpenThread Border Router (Patience)" + cd /opt/ot-br-posix/build + $STD cmake -GNinja \ + -DBUILD_TESTING=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DOTBR_DBUS=ON \ + -DOTBR_MDNS=openthread \ + -DOTBR_REST=ON \ + -DOTBR_WEB=ON \ + -DOTBR_BORDER_ROUTING=ON \ + -DOTBR_BACKBONE_ROUTER=ON \ + -DOT_FIREWALL=ON \ + -DOT_POSIX_NAT64_CIDR="192.168.255.0/24" \ + .. + $STD ninja + $STD ninja install + msg_ok "Rebuilt OpenThread Border Router" + + msg_info "Starting Services" + systemctl start otbr-agent + systemctl start otbr-web + msg_ok "Started Services" + msg_ok "Updated successfully!" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/openthread-br-install.sh b/install/openthread-br-install.sh new file mode 100644 index 000000000..82c3fea45 --- /dev/null +++ b/install/openthread-br-install.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://openthread.io/guides/border-router + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + build-essential \ + cmake \ + ninja-build \ + pkg-config \ + git \ + iproute2 \ + libreadline-dev \ + libncurses-dev \ + rsyslog \ + dbus \ + libdbus-1-dev \ + libjsoncpp-dev \ + iptables \ + ipset \ + bind9 \ + libnetfilter-queue1 \ + libnetfilter-queue-dev \ + libprotobuf-dev \ + protobuf-compiler \ + socat +msg_ok "Installed Dependencies" + +setup_nodejs + +msg_info "Cloning OpenThread Border Router" +# git clone is needed to fetch submodules, fetch_and_deploy_gh_release doesn't support this. We use --depth 1 to minimize the amount of data cloned, but it still may take a while. +$STD git clone --depth 1 https://github.com/openthread/ot-br-posix /opt/ot-br-posix +cd /opt/ot-br-posix +$STD git submodule update --depth 1 --init --recursive +msg_ok "Cloned OpenThread Border Router" + +msg_info "Building OpenThread Border Router (Patience)" +mkdir -p build && cd build +$STD cmake -GNinja \ + -DBUILD_TESTING=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DOTBR_DBUS=ON \ + -DOTBR_MDNS=openthread \ + -DOTBR_REST=ON \ + -DOTBR_WEB=ON \ + -DOTBR_BORDER_ROUTING=ON \ + -DOTBR_BACKBONE_ROUTER=ON \ + -DOT_FIREWALL=ON \ + -DOT_POSIX_NAT64_CIDR="192.168.255.0/24" \ + .. +$STD ninja +$STD ninja install +msg_ok "Built OpenThread Border Router" + +msg_info "Configuring Network" +cat </etc/sysctl.d/99-otbr.conf +net.ipv6.conf.all.forwarding=1 +net.ipv4.ip_forward=1 +EOF +$STD sysctl -p /etc/sysctl.d/99-otbr.conf +msg_ok "Configured Network" + +msg_info "Configuring Services" +cat <<'EOF' >/etc/default/otbr-agent +# USB example: +# OTBR_AGENT_OPTS="-I wpan0 -B eth0 --vendor-name OpenThread --model-name BorderRouter --rest-listen-address 0.0.0.0 --rest-listen-port 8081 spinel+hdlc+uart:///dev/ttyACM0" +# TCP via socat (for network-attached RCP like SLZB-06/SLZB-MR3): + +# OTBR_AGENT_OPTS="-I wpan0 -B eth0 --vendor-name OpenThread --model-name BorderRouter --rest-listen-address 0.0.0.0 --rest-listen-port 8081 spinel+hdlc+forkpty:///usr/bin/socat?forkpty-arg=-,rawer&forkpty-arg=tcp:IP:PORT trel://eth0" +OTBR_AGENT_OPTS="-I wpan0 -B eth0 --vendor-name OpenThread --model-name BorderRouter --rest-listen-address 0.0.0.0 --rest-listen-port 8081 spinel+hdlc+uart:///dev/ttyACM0" +EOF +cat <<'EOF' >/etc/default/otbr-web +OTBR_WEB_OPTS="-I wpan0 -a 0.0.0.0 -p 80" +EOF +systemctl enable -q dbus rsyslog otbr-agent otbr-web +systemctl enable -q bind9 2>/dev/null || systemctl enable -q named 2>/dev/null || true +systemctl start -q dbus rsyslog bind9 +msg_ok "Configured Services" + +motd_ssh +customize +cleanup_lxc