Infrastructure: - Created LXC 224 (openclaw-lxc) at 10.10.0.224 - 2 CPU cores, 4GB RAM, 32GB disk - Docker-in-LXC with AppArmor unconfined - OpenClaw installed via npm with MiniMax M2.1 and Discord integration Documentation: - productivity/openclaw/CONTEXT.md - Comprehensive technology overview - productivity/openclaw/troubleshooting.md - Complete troubleshooting guide - productivity/openclaw/README.md - Quick reference - productivity/openclaw/DEPLOYMENT_STATUS.md - Deployment checklist and status Configuration: - Added OpenClaw keywords to CLAUDE.md auto-loading rules - Updated server-configs/hosts.yml with openclaw host entry - Backed up LXC config to server-configs/proxmox/lxc/224.conf - Created .env.example template in server-configs/openclaw/ Status: Fully operational - Gateway accessible at http://10.10.0.224:18789 (SSH tunnel required) - Discord bot connected and online - MiniMax M2.1 model configured (200K context window) - Daemon running as systemd service Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
417 lines
12 KiB
Markdown
417 lines
12 KiB
Markdown
# OpenClaw Troubleshooting Guide
|
|
|
|
## Gateway Startup Issues
|
|
|
|
### Container Won't Start
|
|
**Symptoms:** `docker compose up` fails immediately
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
docker compose logs openclaw-gateway
|
|
```
|
|
|
|
**Common Causes:**
|
|
1. **Missing environment variables:**
|
|
- Check `.env` file exists and contains required keys
|
|
- Verify `MINIMAX_API_KEY` and `DISCORD_BOT_TOKEN` are set
|
|
- Solution: Copy `.env.example` to `.env` and populate
|
|
|
|
2. **Port conflict (18789 already in use):**
|
|
- Check: `netstat -tulpn | grep 18789`
|
|
- Solution: Stop conflicting service or change port in docker-compose.yml
|
|
|
|
3. **Invalid openclaw.json syntax:**
|
|
- JSON5 allows comments and trailing commas
|
|
- Validate: `docker compose config` (checks interpolation)
|
|
- Solution: Fix syntax errors, remove invalid characters
|
|
|
|
### Container Starts but Exits Immediately
|
|
**Symptoms:** Container runs briefly then stops
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
docker compose logs --tail=50 openclaw-gateway
|
|
docker compose ps
|
|
```
|
|
|
|
**Common Causes:**
|
|
1. **Invalid MiniMax API key:**
|
|
- Error: "Authentication failed" or "Invalid API key"
|
|
- Solution: Verify key at https://platform.minimax.io/
|
|
- Check key format: Should start with `sk-`
|
|
|
|
2. **Docker socket permission denied:**
|
|
- Error: "Cannot connect to Docker daemon"
|
|
- Check: `ls -l /var/run/docker.sock`
|
|
- Solution: Already mounted in compose file; check LXC nesting enabled
|
|
|
|
3. **Configuration file not found:**
|
|
- Error: "Cannot read openclaw.json"
|
|
- Check: `ls -la /opt/openclaw/openclaw.json`
|
|
- Solution: Create file from plan template
|
|
|
|
## Discord Integration Issues
|
|
|
|
### Bot Not Connecting to Discord
|
|
**Symptoms:** Bot shows offline in Discord server
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
docker compose logs openclaw-gateway | grep -i discord
|
|
docker compose exec openclaw-gateway openclaw channels status --probe
|
|
```
|
|
|
|
**Common Causes:**
|
|
1. **Invalid bot token:**
|
|
- Error: "Incorrect login credentials"
|
|
- Solution: Regenerate token in Discord Developer Portal
|
|
- Update `.env` file and restart: `docker compose restart`
|
|
|
|
2. **Missing Message Content Intent:**
|
|
- Error: "Used disallowed intents"
|
|
- Solution:
|
|
1. Go to Discord Developer Portal
|
|
2. Bot → Privileged Gateway Intents
|
|
3. Enable "Message Content Intent"
|
|
4. Restart OpenClaw gateway
|
|
|
|
3. **Bot not invited to server:**
|
|
- No error, just offline status
|
|
- Solution: Generate invite URL from OAuth2 → URL Generator
|
|
- Use scopes: `bot` + `applications.commands`
|
|
- Invite with required permissions
|
|
|
|
### Bot Online but Not Responding to DMs
|
|
**Symptoms:** Bot shows online but doesn't reply to messages
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check channel configuration
|
|
docker compose exec openclaw-gateway openclaw channels status discord
|
|
|
|
# Check recent logs
|
|
docker compose logs --tail=100 openclaw-gateway | grep -E "(DM|discord)"
|
|
```
|
|
|
|
**Common Causes:**
|
|
1. **Pairing required but not approved:**
|
|
- Bot sends pairing code on first message
|
|
- Code expires after 1 hour
|
|
- Solution: Approve pairing:
|
|
```bash
|
|
docker compose exec openclaw-gateway openclaw pairing list discord
|
|
docker compose exec openclaw-gateway openclaw pairing approve discord <code>
|
|
```
|
|
|
|
2. **Policy set to disabled:**
|
|
- Check `openclaw.json` → `channels.discord.dm.policy`
|
|
- Should be `"pairing"` or `"open"`
|
|
- Solution: Change policy and restart
|
|
|
|
3. **Message Content Intent disabled (again):**
|
|
- Bot can't read message text
|
|
- Solution: See "Missing Message Content Intent" above
|
|
|
|
### Pairing Code Not Working
|
|
**Symptoms:** User receives pairing code but approval command fails
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# List all pending pairing requests
|
|
docker compose exec openclaw-gateway openclaw pairing list discord
|
|
|
|
# Check logs for pairing errors
|
|
docker compose logs openclaw-gateway | grep -i pairing
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **Code expired (>1 hour old):**
|
|
- Regenerate: Send new DM to bot
|
|
- Approve new code within 1 hour
|
|
|
|
2. **Wrong pairing code format:**
|
|
- Code format: Usually 6-digit alphanumeric
|
|
- Case-sensitive: Use exact code from Discord message
|
|
|
|
3. **Multiple pending codes:**
|
|
- List all codes: `openclaw pairing list discord`
|
|
- Approve latest code (most recent timestamp)
|
|
|
|
## MiniMax API Issues
|
|
|
|
### API Authentication Errors
|
|
**Symptoms:** "Authentication failed" or "Invalid API key" in logs
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check API key is set
|
|
docker compose exec openclaw-gateway env | grep MINIMAX
|
|
|
|
# Test API key directly
|
|
curl -X POST https://api.minimax.io/anthropic/v1/messages \
|
|
-H "Authorization: Bearer $MINIMAX_API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"model":"MiniMax-M2.1","max_tokens":10,"messages":[{"role":"user","content":"test"}]}'
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **Key not set or incorrect:**
|
|
- Verify `.env` file contains: `MINIMAX_API_KEY=sk-...`
|
|
- Restart after changes: `docker compose restart`
|
|
|
|
2. **Key revoked or expired:**
|
|
- Log in to https://platform.minimax.io/
|
|
- Check API key status
|
|
- Generate new key if needed
|
|
|
|
3. **Interpolation not working:**
|
|
- Check `openclaw.json` uses: `"apiKey": "${MINIMAX_API_KEY}"`
|
|
- Verify `.env` file is in same directory as docker-compose.yml
|
|
|
|
### Rate Limiting or Quota Errors
|
|
**Symptoms:** "Rate limit exceeded" or "Insufficient quota"
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check recent API errors
|
|
docker compose logs openclaw-gateway | grep -i "rate\|quota"
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **Rate limit (temporary):**
|
|
- Wait 60 seconds and retry
|
|
- Reduce message frequency
|
|
- Consider upgrading MiniMax plan
|
|
|
|
2. **Quota exceeded (billing):**
|
|
- Check account balance at https://platform.minimax.io/
|
|
- Add credits or upgrade plan
|
|
- Set usage alerts to prevent future issues
|
|
|
|
3. **Context window exceeded:**
|
|
- Error: "Context length too long"
|
|
- Reduce `historyLimit` in openclaw.json (default 20)
|
|
- Current limit: 200,000 tokens (very high, unlikely to hit)
|
|
|
|
## Performance Issues
|
|
|
|
### High Memory Usage
|
|
**Symptoms:** Container using >2GB RAM, system sluggish
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check container stats
|
|
docker stats openclaw
|
|
|
|
# Check for stuck browser processes
|
|
docker compose exec openclaw-gateway ps aux | grep -E "(chrome|firefox|playwright)"
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **Browser automation processes not cleaned up:**
|
|
- Restart gateway: `docker compose restart`
|
|
- Consider disabling browser skills if not needed
|
|
|
|
2. **Large workspace files:**
|
|
- Check workspace size: `du -sh /opt/openclaw/workspace`
|
|
- Clean old files: Review and remove unnecessary workspace data
|
|
|
|
3. **Memory leak (rare):**
|
|
- Update to latest version: `docker compose pull && docker compose up -d`
|
|
- Report issue to OpenClaw GitHub
|
|
|
|
### Slow Response Times
|
|
**Symptoms:** Bot takes >30 seconds to respond
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check API latency
|
|
docker compose logs openclaw-gateway | grep -i "duration\|latency"
|
|
|
|
# Check network connectivity
|
|
docker compose exec openclaw-gateway ping -c 3 api.minimax.io
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **MiniMax API slow:**
|
|
- Switch to lightning model: `minimax/MiniMax-M2.1-lightning`
|
|
- Edit `openclaw.json` → `agents.defaults.model.primary`
|
|
- Restart gateway
|
|
|
|
2. **Large context window:**
|
|
- Reduce `historyLimit` in openclaw.json (e.g., 10 instead of 20)
|
|
- Shorter history = faster responses
|
|
|
|
3. **Network latency:**
|
|
- Check internet connection on LXC: `ping -c 5 8.8.8.8`
|
|
- Verify DNS resolution: `nslookup api.minimax.io`
|
|
|
|
### High CPU Usage
|
|
**Symptoms:** Constant high CPU (>50%) even when idle
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check process CPU usage
|
|
docker compose exec openclaw-gateway top -b -n 1
|
|
|
|
# Check for infinite loops in logs
|
|
docker compose logs --tail=200 openclaw-gateway
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **Stuck skill execution:**
|
|
- Identify stuck process in logs
|
|
- Restart gateway: `docker compose restart`
|
|
|
|
2. **Discord WebSocket reconnect loop:**
|
|
- Error: "WebSocket closed, reconnecting..."
|
|
- Check Discord API status: https://discordstatus.com/
|
|
- Verify bot token is valid
|
|
|
|
3. **Log spam:**
|
|
- Reduce log level: Add `LOG_LEVEL=warn` to .env
|
|
- Restart gateway
|
|
|
|
## Configuration Issues
|
|
|
|
### Changes Not Taking Effect
|
|
**Symptoms:** Modified openclaw.json but behavior unchanged
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Restart gateway to reload configuration
|
|
docker compose restart openclaw-gateway
|
|
|
|
# Verify configuration loaded
|
|
docker compose logs openclaw-gateway | grep "Configuration loaded"
|
|
|
|
# Check for configuration errors
|
|
docker compose logs openclaw-gateway | grep -i "config\|error"
|
|
```
|
|
|
|
### Environment Variables Not Interpolating
|
|
**Symptoms:** Literal `${VAR_NAME}` in logs instead of values
|
|
|
|
**Diagnosis:**
|
|
```bash
|
|
# Check environment variables are set in container
|
|
docker compose exec openclaw-gateway env | grep -E "(MINIMAX|DISCORD)"
|
|
```
|
|
|
|
**Solutions:**
|
|
1. **Docker Compose not loading .env:**
|
|
- Verify `.env` file is in same directory as docker-compose.yml
|
|
- Check file permissions: `ls -la .env` (should be readable)
|
|
|
|
2. **Variable name mismatch:**
|
|
- Ensure `.env` uses exact name from openclaw.json
|
|
- Case-sensitive: `MINIMAX_API_KEY` not `minimax_api_key`
|
|
|
|
3. **Quoting issues:**
|
|
- Don't quote values in .env: `KEY=value` not `KEY="value"`
|
|
- OpenClaw handles interpolation, Docker doesn't need quotes
|
|
|
|
## Emergency Recovery
|
|
|
|
### Complete Service Reset
|
|
If all else fails, nuclear option:
|
|
|
|
```bash
|
|
# Stop and remove all containers
|
|
docker compose down -v
|
|
|
|
# Clear workspace (CAUTION: deletes all agent memory/files)
|
|
rm -rf workspace/*
|
|
rm -rf logs/*
|
|
|
|
# Reset configuration to defaults
|
|
cp openclaw.json openclaw.json.backup
|
|
# Re-create openclaw.json from plan template
|
|
|
|
# Recreate from scratch
|
|
docker compose up -d
|
|
|
|
# Watch logs for errors
|
|
docker compose logs -f
|
|
```
|
|
|
|
### LXC Container Issues
|
|
If Docker itself is broken:
|
|
|
|
```bash
|
|
# From Proxmox host
|
|
ssh root@10.10.0.11
|
|
|
|
# Restart LXC
|
|
pct restart 224
|
|
|
|
# If restart fails, stop and start
|
|
pct stop 224
|
|
pct start 224
|
|
|
|
# Check LXC status
|
|
pct status 224
|
|
|
|
# Access LXC console directly
|
|
pct enter 224
|
|
```
|
|
|
|
### Rollback to Previous Version
|
|
If update caused issues:
|
|
|
|
```bash
|
|
# Pin to specific working version
|
|
# Edit docker-compose.yml, change:
|
|
# image: openclaw/gateway:latest
|
|
# To:
|
|
# image: openclaw/gateway:2026.1.24-1
|
|
|
|
# Recreate container
|
|
docker compose down
|
|
docker compose up -d
|
|
```
|
|
|
|
## Diagnostic Commands Reference
|
|
|
|
```bash
|
|
# Full system health check
|
|
docker compose exec openclaw-gateway openclaw doctor
|
|
|
|
# Channel status (Discord, etc.)
|
|
docker compose exec openclaw-gateway openclaw channels status --probe
|
|
|
|
# Model configuration
|
|
docker compose exec openclaw-gateway openclaw models list
|
|
docker compose exec openclaw-gateway openclaw models get minimax/MiniMax-M2.1
|
|
|
|
# Pairing management
|
|
docker compose exec openclaw-gateway openclaw pairing list discord
|
|
docker compose exec openclaw-gateway openclaw pairing approve discord <code>
|
|
docker compose exec openclaw-gateway openclaw pairing revoke discord <user_id>
|
|
|
|
# Container health
|
|
docker compose ps
|
|
docker compose logs --tail=50 openclaw-gateway
|
|
docker stats openclaw
|
|
|
|
# Network connectivity
|
|
docker compose exec openclaw-gateway ping -c 3 api.minimax.io
|
|
docker compose exec openclaw-gateway curl -I https://discord.com/api/v10/gateway
|
|
|
|
# File system check
|
|
docker compose exec openclaw-gateway df -h
|
|
docker compose exec openclaw-gateway du -sh /workspace/*
|
|
```
|
|
|
|
## Getting Help
|
|
|
|
**Official Resources:**
|
|
- Documentation: https://docs.openclaw.ai/
|
|
- GitHub Issues: https://github.com/openclaw/openclaw/issues
|
|
- Community Discord: [Check OpenClaw website for invite]
|
|
|
|
**Homelab-Specific:**
|
|
- Check MemoryGraph: `python ~/.claude/skills/memorygraph/client.py recall "openclaw"`
|
|
- Review CONTEXT.md: `/mnt/NV2/Development/claude-home/productivity/openclaw/CONTEXT.md`
|
|
- Infrastructure inventory: `/mnt/NV2/Development/claude-home/server-configs/hosts.yml`
|