clawtainer/scripts/install-channel-clients.sh

72 lines
2.2 KiB
Bash
Executable File

#!/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"