#!/bin/bash set -e SKILLS_DIR="${SKILLS_DIR:-/skills}" OPENCLAW_DATA_DIR="${OPENCLAW_DATA_DIR:-/data/openclaw}" # Install Node.js 22+ (required for OpenClaw) install_node() { if command -v node &>/dev/null; then local version=$(node --version | sed 's/v//' | cut -d. -f1) if [ "$version" -ge 22 ]; then echo "Node.js already installed: $(node --version)" return 0 fi echo "Node.js version too old, upgrading..." fi echo "Installing Node.js 22..." curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt-get install -y nodejs echo "Node.js installed: $(node --version)" } # Install OpenClaw install_openclaw() { if command -v openclaw &>/dev/null; then echo "OpenClaw already installed: $(openclaw --version 2>/dev/null || echo 'installed')" return 0 fi echo "Installing OpenClaw..." npm install -g openclaw@latest echo "OpenClaw installed" } # Setup directories setup_dirs() { mkdir -p "$OPENCLAW_DATA_DIR" echo "Data directory: $OPENCLAW_DATA_DIR" } # Configure Caddy if present configure_caddy() { local caddy_dir="$SKILLS_DIR/caddy" local openclaw_port="${OPENCLAW_PORT:-18789}" local openclaw_domain="${OPENCLAW_DOMAIN:-}" if [ ! -d "$caddy_dir" ]; then echo "Caddy not found - OpenClaw on port $openclaw_port" return 0 fi echo "Caddy detected - configuring reverse proxy..." mkdir -p "$caddy_dir/snippets.d" local snippet="$caddy_dir/snippets.d/openclaw.caddy" if [ -n "$openclaw_domain" ]; then cat > "$snippet" << EOF # Auto-generated by openclaw skill $openclaw_domain { reverse_proxy localhost:$openclaw_port } EOF echo "Caddy config: $openclaw_domain -> localhost:$openclaw_port" else cat > "$snippet" << EOF # Auto-generated by openclaw skill # Add to your site block: # handle /openclaw/* { # uri strip_prefix /openclaw # reverse_proxy localhost:$openclaw_port # } EOF echo "Caddy snippet created (manual config needed)" fi } # Check auth check_auth() { if [ -z "$ANTHROPIC_API_KEY" ]; then echo "WARNING: ANTHROPIC_API_KEY not set - OpenClaw needs this for Claude" else echo "Authentication configured" fi } install_node install_openclaw setup_dirs configure_caddy check_auth echo "OpenClaw setup complete" echo "Run 'openclaw onboard' to configure channels"