The Coe Lab
← Back to Blog

OpenClaw Unraid Setup: A Practical Guide

April 2, 20265 min read

Step-by-step guide to setting up OpenClaw on Unraid.

How I built a self-hosted AI assistant infrastructure, with model recommendations and hard-earned lessons from the setup process.

OpenClaw is an autonomous AI assistant framework that runs on your infrastructure. Here's how I set it up in Docker, configured cloud models, and integrated it with my homelab services.

Deploy OpenClaw as a Docker container. Key configuration:

This is where most people get stuck. Here's what worked for me:

Edit openclaw.json in your workspace:

{`{ "models": { "default": "ollama/qwen3.5:cloud", "available": [ { "id": "ollama/qwen3.5:cloud", "name": "Qwen 3.5" }, { "id": "ollama/devstral-small-2:cloud", "name": "Devstral Small 2" }, { "id": "ollama/glm-5:cloud", "name": "GLM-5" }, { "id": "ollama/ministral-3:8b-cloud", "name": "Ministral 3" } ] } }`} Model recommendations:

If you have a GPU with 24GB+ VRAM, you can run smaller models locally:

docker exec openclaw ollama pull llama3.2:3b Then update your config to use ollama/llama3.2:3b for simple tasks.

OpenClaw uses Neo4j as its primary memory store. Configure the connection in TOOLS.md:

{`## Neo4j Memory Graph **Connection:** bolt://your-server-ip:7687 **Auth:** neo4j / your-password`} The memory system automatically ingests data from markdown files and creates graph nodes for people, projects, goals, services, and events.

In the OpenClaw config, add your Discord bot token and server ID:

{`{ "plugins": { "entries": { "discord": { "token": "your-bot-token", "guildId": "your-server-id" } } } }`} Create channels for:

OpenClaw includes a cron system for scheduled tasks. Here are the essential jobs I configured:

{`{ "name": "hourly-alive-check", "schedule": "0 * * * *", "model": "ministral-3:8b-cloud", "task": "Check system health and post to Discord" }`} Media Manager (Every 30 Minutes) {`{ "name": "media-manager", "schedule": "*/30 * * * *", "model": "ministral-3:8b-cloud", "task": "Check Radarr/Sonarr/Lidarr for missing content and stalled downloads" }`} Daily Blog Prompt (6 AM) {`{ "name": "blog-prompt", "schedule": "0 6 * * *", "model": "glm-5:cloud", "task": "Generate a blog writing prompt and post to #blog-prompts" }`} Step 6: Configure Exec Permissions For OpenClaw to run shell commands (like checking Docker containers or rebooting nodes), you need to configure exec permissions. Edit exec-approvals.json:

{`{ "defaults": { "security": "full", "ask": "off" } }`} Security note: Only use security: "full" in trusted home network environments. For multi-user or exposed deployments, prefer security: "allowlist" with ask: "on-miss".

OpenClaw supports remote nodes (Windows, macOS, Linux) for distributed tasks. I set up a Windows gaming PC as a node for browser automation:

The main instance can now reboot the Windows node if it goes offline—a huge quality-of-life improvement.

With OpenClaw running, you can start building automations. Some ideas:

The framework is flexible—what you build depends on your needs. If you run into issues, the community Discord is active and helpful.

Prerequisites

Step 1: Deploy the OpenClaw Container

Step 2: Configure Models

Step 3: Set Up Neo4j Memory

Step 4: Configure Discord Integration

Step 5: Set Up Cron Jobs

Step 6: Configure Exec Permissions

Step 7: Add Node Support (Optional)

Hard-Earned Lessons

What's Next

OpenClaw Unraid Setup: A Practical Guide | The Coe Lab