Install
$ agentstack add skill-xobotyi-cc-foundry-unraid ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Unraid
Unraid is a storage-first operating system. Every decision flows from how data is stored, protected, and accessed. Understand the storage layer before touching Docker, VMs, or shares.
References
Extended configuration details, command examples, and decision tables live in the references directory.
- Array and storage — [
${CLAUDE_SKILL_DIR}/references/array-and-storage.md] Storage architecture comparison, write
modes with speed benchmarks, cache strategies, allocation methods, split level, ZFS configuration, SSD limitations, RAIDZ expansion (7.2), foreign ZFS import (7.1), external FS support (7.2), encryption
- Docker containers — [
${CLAUDE_SKILL_DIR}/references/docker-containers.md] Network modes, macvlan vs ipvlan
stability, custom networks, Docker Compose Manager plugin workflow, native Compose roadmap, Traefik integration, VPN container routing, fork bomb prevention, overlay2 on ZFS, volume mappings, startup management
- VM management — [
${CLAUDE_SKILL_DIR}/references/vm-management.md] BIOS/machine types, vDisk types, GPU
passthrough setup, IOMMU group risks, ACS override caveats, CPU pinning, IOThreads, NUMA, SR-IOV, snapshots, templates, VM backup
- Shares and permissions — [
${CLAUDE_SKILL_DIR}/references/shares-and-permissions.md] Security levels, share
creation workflow, export visibility options, Windows SMB considerations, NFS configuration, user access control, flash device security
- Plugins and scripts — [
${CLAUDE_SKILL_DIR}/references/plugins-and-scripts.md] Plugin catalog, script scheduling
options, automation patterns, Docker template XML, notification agents, heartbeat monitoring, script repositories
- Security and networking — [
${CLAUDE_SKILL_DIR}/references/security-and-networking.md] SSL hardening, port
security, remote access methods (Tailscale/WireGuard), Wi-Fi (7.1), OIDC/SSO (7.2), 3-2-1 backup rule, offsite tools (Borgmatic/Kopia/Restic), UPS/NUT integration, official GraphQL API (7.2), MCP agent, WebGUI features
Storage Architecture
Unraid supports three storage approaches. Choose based on workload:
- Traditional array (XFS/BTRFS + parity) — Growing media collections, power efficiency matters, easy expansion
- ZFS pools — Data integrity critical, multi-user throughput, snapshots needed
- Hybrid (array + ZFS pools) — Mixed workloads — fast pool for active data, array for cold storage
Unraid 7+ supports array-free operation for all-SSD/NVMe builds using only pools.
Parity
- Parity drives must be >= largest data drive
- Single parity: one drive failure. Dual parity: two drive failures
- Schedule monthly parity checks via Settings > Scheduler
- Parity is not a backup — protects against drive failure only
Write Modes
- Read/Modify/Write (default) — 20-40 MB/s, low power (2 drives). Most workloads, energy savings
- Turbo Write (Reconstruct) — 40-120 MB/s, high power (all drives). Large transfers, array rebuilds
- Cache Write (SSD/NVMe) — 50-900 MB/s, varies. Apps, VMs, frequent writes
Enable Turbo Write: Settings > Disk Settings > Tunable (mdwritemethod).
Cache and Pools
- Store
docker.imgandappdataon cache pool for performance - Use Mover to transfer files between cache and array on schedule
- Mover Tuning plugin: prevents moves when cache below threshold, supports age-based filtering (e.g., only move
files older than 40 days)
- ZFS pools enable snapshots, lz4 compression, self-healing, and RAIDZ expansion (7.2)
- Files on cache are unprotected by parity until moved — back up appdata separately
- SSDs in array are unsupported — no TRIM/Discard, causes degradation. Use SSDs only in cache pools or as unassigned
devices
- External FS support (7.2): NTFS, exFAT, EXT2/3/4 drives can be added to array with data intact (before parity is
assigned)
Allocation
- High-Water (default): progressively fills disks. Most-Free: spreads across disks. Fill-Up: sequential
- Set Minimum Free Space to 2x largest file size
- Split Level controls directory distribution — takes priority over free space
- See the array and storage reference for detailed allocation methods and split level options
Docker Containers
Network Modes
- Bridge (default) — Most applications; safest, only mapped ports exposed
- Host — Application requires direct network stack access
- Custom (macvlan/ipvlan) — Service needs its own LAN IP (Pi-hole, Home Assistant)
- None — Isolated workloads with no network needs
Only modify the host port in bridge mode, not the container port.
macvlan vs ipvlan
macvlan on br0 causes kernel call traces and crashes — switch to ipvlan (default since 6.11.5) or disable bridging. See the Docker containers reference for detailed migration steps.
Enable Host access to custom networks in Settings > Docker if containers with custom IPs need to reach the Unraid host.
Docker Compose
Unraid's native Docker management uses XML templates. Docker Compose is community-supported via the Docker Compose Manager plugin (install from CA). Compose containers cannot be edited via WebGUI — all changes must be made in YAML. See the Docker containers reference for full setup workflow and limitations.
Volume Mappings
- Store app config in
/mnt/user/appdata/mapped to/config - Use read-only access mode unless write is required
- Reference container paths in application settings, not host paths
- Paths are case-sensitive:
/mnt/user/Media!=/mnt/user/media - Never hardcode secrets in images — use environment variables (
PUID,PGID,TZ)
Startup Order
Order containers by dependency (database before app, VPN before dependent services). Set wait times between starts in Advanced View on the Docker tab.
Custom Docker Networks
Create custom bridge networks for inter-container DNS resolution and isolation. Preserve across restarts with a User Script at array start. See the Docker containers reference for setup details.
Reverse Proxy
- Traefik: Docker labels for dynamic routing and automatic SSL. Mount Docker socket read-only. Best for IaC/Compose
workflows
- Nginx Proxy Manager: GUI-based, simpler setup, manual per-service config. Best for users who prefer visual
configuration
Virtual Machines
Prerequisites
- Enable IOMMU (Intel VT-d / AMD-Vi) in BIOS
- Upload OS ISOs and VirtIO drivers to
isosshare - Use OVMF (UEFI) for modern OSes and GPU passthrough
- Use Q35 machine type for Linux VMs and GPU passthrough
GPU Passthrough
- Bind GPU + audio device to vfio-pci: Tools > System Devices
- Reboot after binding
- Select bound GPU in VM settings, assign USB keyboard/mouse
- If black screen: switch to OVMF + Q35, then try manual ROM injection as last resort
IOMMU group risks: on consumer motherboards, the GPU may share an IOMMU group with the SATA controller — binding it to a VM strips the host of disk access. ACS Override splits groups but bypasses hardware isolation. See the VM management reference for detailed risks and safer alternatives.
Performance Tuning
- CPU pinning: assign dedicated cores to VMs, avoid core 0
- IOThreads: enable VirtIO IOThreads for up to 20% latency reduction
- NUMA pinning: place vCPU, IOThreads, and memory on same NUMA node as storage controller for 5%+ IOPS improvement
- VirtIO drivers: install paravirtualized drivers for Windows VMs (auto-attach ISO via Settings > VM Manager)
- QEMU Guest Agent: install in Windows VMs for graceful shutdown/hibernation
Snapshots (Unraid 7+)
- Require QCOW2 vDisk format
- Create before significant changes (updates, software installs)
- Revert to restore state, Block Commit to make changes permanent
- Not a backup replacement — complement with VM XML + NVRAM backups
GPU Sharing (Unraid 7+)
- VirGL: share Intel/AMD GPU among Linux VMs (no physical output, no Windows)
- SR-IOV: efficient Intel iGPU sharing across multiple VMs
- QXL: multi-screen virtual GPU with configurable video memory
Shares
User Shares vs Disk Shares
- User shares: aggregated view under
/mnt/user/, spans drives - Disk shares: direct drive access under
/mnt/diskXor/mnt/pool-name - Never copy between user shares and disk shares with matching names — causes data corruption
Security Levels
- Public — Read: everyone, Write: everyone. Non-sensitive media (Windows 10+ blocks guest SMB)
- Secure — Read: everyone, Write: authorized users. Collaborative folders
- Private — Read: authorized users, Write: authorized users. Sensitive data
- Create dedicated user accounts for share access (root cannot access network shares)
- Windows allows only one credential per server — use name for one share, IP for another
- New shares are not network-visible by default — configure SMB/NFS export after creation
- Use "Yes (Hidden)" export for shares that should be accessible but not discoverable
Default Shares
Do not change permissions on appdata, system, or domains. Only isos should be network-accessible.
Plugins and Automation
Essential Plugins
- Community Applications — App store interface; install first
- CA Appdata Backup/Restore — Container config and appdata backup
- Fix Common Problems — Configuration error and security risk alerts
- Unassigned Devices — Mount drives outside array/pools
- Dynamix Cache Dirs — Prevent unnecessary drive spinups
- Dynamix System Temp — Hardware temperature monitoring
- File Integrity — Bitrot detection and data integrity verification
- Mover Tuning — Advanced mover schedule and threshold control
- Tips and Tweaks — System-level performance optimizations
- NUT (Network UPS Tools) — UPS monitoring and graceful shutdown
- User Scripts — Custom automation via scheduled shell scripts
User Scripts
Install from Apps tab. Access via Settings > User Scripts.
- Schedule with cron expressions or preset intervals
- Common uses: container start/stop for backups, custom mover per share, log trimming, SMART checks, flash drive
backups, VM XML backups
- Run at: array start, array stop, first boot, or custom cron schedule
- GPU idle script: kick Nvidia GPUs into idle at startup (prevents full-power draw when only used by containers)
- Turbo Write automation: toggle based on drive spin state
- Heartbeat monitoring: send pings to healthchecks.io; alerts if a script fails
Security
Non-Negotiable Defaults
- Set a strong root password immediately after install
- Disable Telnet, FTP, and USB Export unless explicitly required
- Never expose the server to the internet or place in router DMZ
- Never forward ports 445 (SMB), 22/23 (SSH/Telnet), or 57xx (VNC)
- Keep OS, plugins, and containers up to date
WebGUI Hardening
- Provision SSL certificate via Let's Encrypt (myunraid.net wildcard)
- Set Use SSL/TLS to Strict for forced HTTPS
- Change default HTTPS port to a random port over 1000
- Install Fix Common Problems plugin for automated security auditing
Remote Access
- Tailscale (recommended): built-in plugin, no port forwarding needed
- WireGuard: built into Unraid, encrypted VPN tunnel
- Unraid Connect: remote WebGUI, requires port forward
- Never expose the WebGUI directly to the internet
Share Security
- Set sensitive shares to Private
- Use user accounts with strong passwords, not Public access
- Apply least-privilege permissions per user
- Keep flash device share Private or disabled
- Review permissions regularly, remove unused accounts
UPS Integration
- Install NUT plugin for UPS monitoring and automated graceful shutdown
- Configure shutdown trigger with sufficient battery runtime for full array stop
- Install QEMU Guest Agent in Windows VMs for clean shutdown during power events
- Unclean shutdowns trigger parity checks on next boot — avoid at all costs
Backup Strategy
Parity protects against drive failure. Backups protect against everything else. Follow the 3-2-1 rule: 3 copies, 2 media types, 1 offsite.
- Flash drive: back up via Tools > Flash Backup — contains config, license, plugin settings, and Docker template
XMLs
- Appdata: use CA Appdata Backup/Restore plugin on schedule — stop containers during backup for consistency. Back up
to a "scratch" drive (Unassigned Devices) for speed
- VM configs: back up XML files and OVMF NVRAM via User Scripts
- VM state: use QCOW2 snapshots before updates, but snapshots are not a backup replacement
- ZFS snapshots: useful for quick recovery from bad operations, but not offsite backup
- Offsite: use Borgmatic, Kopia, Restic, or Duplicacy for deduplicated, versioned offsite backups (Hetzner Storage
Box, Backblaze B2). Simple rclone sync lacks versioning — cannot recover from ransomware
- Monitoring: use healthchecks.io to verify backup jobs run on schedule. Configure Telegram/Pushover/Slack
notifications for disk errors and backup failures
Programmatic Access (Unraid 7.2+)
- Official GraphQL API: built into Unraid 7.2+, fully open-source. Powers the Notifications panel and Dashboard CPU
stats. Supports OIDC/SSO authentication for secure remote access. More WebGUI features will migrate to the API over time
- Unraid Management Agent: third-party plugin providing REST API, WebSocket, MCP (54 tools for AI agents),
Prometheus metrics (41 metrics), and MQTT for Home Assistant. Independent from the official API
- User Scripts: primary automation engine for host-level scripting
Gotchas
Storage
- Cache data has zero parity protection until the Mover runs — treat it as volatile
- Allocation and disk inclusion changes apply prospectively; existing files stay put
- Split Level overrides free space calculations — diagnose "disk full" errors here first
- Array SSD performance degrades silently over time (no TRIM) — pools only
- RAIDZ expansion does not restripe existing data — old files remain on original drives until rewritten. Expansion
of a 14TB drive into an 8TB pool takes 26-36 hours
- ZFS pool upgrade is one-way — upgraded pools cannot mount on Unraid versions before 7.1
Docker
- A corrupted
docker.imgmeans rebuilding every container from scratch — appdata backups are your only recovery path - Template defaults set correct container ports — only ever change the host-side mapping
- App settings must reference container-internal paths (
/config), not host mount points - Case mismatches in paths silently create duplicate directory trees
- Closing the browser mid-install corrupts the container config — wait for completion
- The
br0+ macvlan combination is a known crash vector — use ipvlan or macvtap - Docker on ZFS: use overlay2 storage driver (Settings > Docker). The legacy native driver causes stability issues.
Switch requires deleting Docker directory contents for re-download
Shares
cp/rsyncbetween/mnt/user/and/mnt/diskX/with the same folder name corrupts data — both views point to the
same underlying files
- Windows caches one credential set per server — use hostname for one share, IP for another as a workaround
- All new shares default to Public read/write — lock down sensitive shares before exposing them on the network
VMs
- Hot-plugging USB devices into running VMs is unreliable — attach before start
- Hardware changes can silently unbind PCI devices — re-verify in System Devices
- Passing through the only GPU leaves Unraid without a local display
- vDisk shrinking is unsupported — only expand, then resize the guest partition
- ACS Override trades IOMMU isolation for group splitting — weigh data corruption risk against passthrough convenience
Application
When configuring Unraid systems: apply conventions silently. Provide production-ready configurations with security hardening included by default
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: xobotyi
- Source: xobotyi/cc-foundry
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.