#!/usr/bin/env bash # Install all OpenClaw channel plugins + signal-cli into the RUNNING clawtainer # container via docker exec. No image rebuild or container replace. # Run after: docker compose up -d set -e cd "$(dirname "$0")/.." CONTAINER="${CLAWTAINER_CONTAINER:-clawtainer}" OPENCLAW_USER=1000 SIGNAL_CLI_VER="0.13.24" # Channel plugins from npm (official @openclaw) PLUGINS=( "@openclaw/mattermost" "@openclaw/msteams" "@openclaw/matrix" "@openclaw/nostr" "@openclaw/zalo" "@openclaw/zalouser" ) if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then echo "Container ${CONTAINER} is not running. Start with: docker compose up -d" exit 1 fi echo "Installing OpenClaw channel plugins..." for pkg in "${PLUGINS[@]}"; do echo " -> $pkg" docker exec -u "$OPENCLAW_USER" "$CONTAINER" \ openclaw --yes plugins install "$pkg" || true done echo "Installing signal-cli..." docker exec -u root "$CONTAINER" bash -c ' set -e VER='"$SIGNAL_CLI_VER"' ARCH=$(uname -m) INSTALL_DIR=/usr/local cd /tmp if command -v signal-cli >/dev/null 2>&1 && signal-cli --version 2>/dev/null | grep -q "$VER"; then echo " signal-cli $VER already installed" exit 0 fi mkdir -p "$INSTALL_DIR/bin" if [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "amd64" ]; then echo " Using native binary (x86_64)" curl -fsSL -o signal-cli.tar.gz \ "https://github.com/AsamK/signal-cli/releases/download/v${VER}/signal-cli-${VER}-Linux-native.tar.gz" tar xzf signal-cli.tar.gz mv signal-cli "$INSTALL_DIR/bin/" else echo " Using JVM build (${ARCH})" apt-get update -qq && apt-get install -y -qq openjdk-21-jre-headless curl -fsSL -o signal-cli.tar.gz \ "https://github.com/AsamK/signal-cli/releases/download/v${VER}/signal-cli-${VER}.tar.gz" tar xzf signal-cli.tar.gz cp -a signal-cli-${VER} /opt/signal-cli ln -sf /opt/signal-cli/bin/signal-cli "$INSTALL_DIR/bin/signal-cli" fi chmod +x "$INSTALL_DIR/bin/signal-cli" rm -rf /tmp/signal-cli* echo " signal-cli installed" ' echo "" echo "Done. Installed:" echo " - Plugins: ${PLUGINS[*]}" echo " - signal-cli (for Signal channel)" echo "" echo "Restart the gateway to load plugins: docker exec $CONTAINER openclaw gateway restart"