Add openclaw dropshell template for personal AI assistant
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 14s

This commit is contained in:
j
2026-03-11 20:48:14 +13:00
parent 932fe45303
commit 23ec097b39
16 changed files with 555 additions and 0 deletions

143
openclaw/install.sh Executable file
View File

@@ -0,0 +1,143 @@
#!/bin/bash
source "${AGENT_PATH}/common.sh"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
_check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG" "DATA_PATH" "GATEWAY_PORT"
# Require at least one LLM provider
if [ -z "$ANTHROPIC_API_KEY" ] && [ -z "$OPENROUTER_API_KEY" ]; then
_die "At least one LLM API key must be set (ANTHROPIC_API_KEY or OPENROUTER_API_KEY) in config/service.env"
fi
_check_docker_installed || _die "Docker test failed, aborting installation..."
# Create data directories
mkdir -p "${DATA_PATH}/config"
mkdir -p "${DATA_PATH}/workspace"
# Set ownership to node user (uid 1000) used by the OpenClaw container
chown -R 1000:1000 "${DATA_PATH}"
# Generate gateway token if one doesn't already exist
TOKEN_FILE="${DATA_PATH}/gateway.token"
if [ -f "$TOKEN_FILE" ]; then
GATEWAY_TOKEN=$(cat "$TOKEN_FILE")
else
GATEWAY_TOKEN=$(openssl rand -hex 32)
echo -n "$GATEWAY_TOKEN" > "$TOKEN_FILE"
chown 1000:1000 "$TOKEN_FILE"
fi
# Generate openclaw.json configuration
CONFIG_FILE="${DATA_PATH}/config/openclaw.json"
# Build model configuration
MODEL_PRIMARY="${DEFAULT_MODEL:-anthropic/claude-sonnet-4-5}"
MODEL_FALLBACK="${FALLBACK_MODEL:-openrouter/anthropic/claude-sonnet-4-5}"
# Build channels section
TELEGRAM_CONFIG=""
if [ -n "$TELEGRAM_BOT_TOKEN" ]; then
TELEGRAM_CONFIG=$(cat <<TGEOF
"telegram": {
"enabled": true,
"token": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "${DM_POLICY:-pairing}"
}
TGEOF
)
fi
# Build env section for API keys
ENV_ENTRIES=""
if [ -n "$ANTHROPIC_API_KEY" ]; then
ENV_ENTRIES="\"ANTHROPIC_API_KEY\": \"${ANTHROPIC_API_KEY}\""
fi
if [ -n "$OPENROUTER_API_KEY" ]; then
[ -n "$ENV_ENTRIES" ] && ENV_ENTRIES="${ENV_ENTRIES},"
ENV_ENTRIES="${ENV_ENTRIES}
\"OPENROUTER_API_KEY\": \"${OPENROUTER_API_KEY}\""
fi
# Build fallbacks array
FALLBACKS_JSON=""
if [ -n "$OPENROUTER_API_KEY" ] && [ -n "$ANTHROPIC_API_KEY" ]; then
FALLBACKS_JSON="\"fallbacks\": [\"${MODEL_FALLBACK}\"],"
fi
cat > "$CONFIG_FILE" <<CFGEOF
{
"env": {
${ENV_ENTRIES}
},
"agents": {
"defaults": {
"model": {
"primary": "${MODEL_PRIMARY}",
${FALLBACKS_JSON}
"params": {}
}
}
},
"channels": {
${TELEGRAM_CONFIG}
},
"gateway": {
"token": "${GATEWAY_TOKEN}",
"bind": "lan",
"auth": {
"mode": "password"
}
}
}
CFGEOF
chown 1000:1000 "$CONFIG_FILE"
# Export variables for docker compose
export CONTAINER_NAME DATA_PATH GATEWAY_PORT
export IMAGE_REGISTRY IMAGE_REPO IMAGE_TAG
export ANTHROPIC_API_KEY OPENROUTER_API_KEY
cd "$SCRIPT_DIR" || _die "Failed to change to script directory"
# Pull images
docker compose -p "${CONTAINER_NAME}" pull || _die "Failed to pull images"
# Stop existing containers
docker compose -p "${CONTAINER_NAME}" down 2>/dev/null || true
# Start containers
docker compose -p "${CONTAINER_NAME}" up -d || _die "Failed to start containers"
echo ""
echo "=========================================="
echo "OpenClaw installation complete!"
echo "=========================================="
echo ""
echo "Gateway Token (save this!):"
echo " ${GATEWAY_TOKEN}"
echo ""
echo "Web Dashboard:"
echo " http://localhost:${GATEWAY_PORT}"
echo " Paste the gateway token above into Settings to authenticate."
echo ""
if [ -n "$TELEGRAM_BOT_TOKEN" ]; then
echo "Telegram: Enabled - send a message to your bot to start!"
fi
if [ -n "$GMAIL_ADDRESS" ] && [ -n "$GMAIL_APP_PASSWORD" ]; then
echo ""
echo "Gmail: To enable email, install the IMAP skill after the gateway is running:"
echo " docker exec ${CONTAINER_NAME} openclaw skills install imap-smtp-email"
echo " Then configure it in the Control UI (http://localhost:${GATEWAY_PORT})"
echo " IMAP: imap.gmail.com:993 (TLS) | SMTP: smtp.gmail.com:587 (STARTTLS)"
echo " Username: ${GMAIL_ADDRESS}"
echo " Password: (your app password from service.env)"
fi
echo ""
echo "WebChat: Always available at http://localhost:${GATEWAY_PORT}"
echo ""
echo "To add WhatsApp (interactive, requires QR code):"
echo " docker exec -it ${CONTAINER_NAME} openclaw channels login"
echo ""
echo "Check status: ds status <server> openclaw"
echo "View logs: ds logs <server> openclaw"