ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

unraid-xml-generator

Generate Unraid DockerMan user template XML files from structured input. Use when: the user asks to "生成 Unraid XML 模板", "创建 Docker 模板", "为 XXX 写 Unraid 模板", or "生成 DockerMan XML" for any container. Key technique learned (2026-04-02): Unraid DockerMan templates support <ExtraParams>--entrypoint /bin/sh</ExtraParams> + <PostArgs> to bypass the container image's ENTRYPOINT. This allows overriding any image's startup command from the template. Config variables use: <Config Name="..." Target="ENV_VAR" Default="..." Type="..." Display="..." Required="..." Mask="..."> These become environment variables passed into the container. The skill generates a complete, valid XML and optionally deploys it to /boot/config/plugins/dockerMan/templates-user/my-<name>.xml (requires user confirmation before writing).

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/ashanzzz/ashanzzz-unraid-xml-generator
Or

Unraid XML Generator

Core Pattern

The key insight for Unraid Docker templates:

<Container version="2">
  <Name>mycontainer</Name>
  <Repository>image:tag</Repository>
  <Network>bridge</Network>

  <!-- KEY: override ENTRYPOINT to /bin/sh -->
  <ExtraParams>--entrypoint /bin/sh</ExtraParams>

  <!-- KEY: pass real startup command through shell -ec -->
  <PostArgs>-ec 'real startup command here'</PostArgs>

  <!-- User-configurable variables -->
  <Config Name="Display Name" Target="ENV_VAR" Default="..." Type="Variable" Display="always" Required="false" Mask="true">default_value</Config>
  <Config Name="Port" Target="PORT" Default="8080" Mode="tcp" Type="Port" Display="always" Required="true">8080</Config>
  <Config Name="Data Path" Target="/data" Default="/mnt/user/appdata/mycontainer" Mode="rw" Type="Path" Display="always" Required="true">/mnt/user/appdata/mycontainer</Config>
</Container>

Template Field Reference

FieldPurpose
<Name>Unique container identifier
<Repository>Docker image with tag
<Registry>Registry URL (optional, informational)
<Network>Network mode: bridge, host, none
<Shell>Default shell (bash / sh)
<ExtraParams>Extra docker run flags (e.g. --entrypoint /bin/sh)
<PostArgs>Startup command passed to shell -ec
<WebUI>Format: http://[IP]:[PORT:nnnn]/ — shows button in Unraid UI
<Icon>URL to icon image
<Category>Unraid category string
<Config>User-configurable parameter

Config Types

TypeExample
VariableEnvironment variable (Target = env var name)
PortPort mapping (Mode="tcp"/"udp")
PathVolume path (Mode="rw"/"ro")
SliderNumeric slider (requires Min, Max, Step)
DescriptionRead-only description text

Config Display Options

Display valueWhen shown
alwaysAlways visible in UI
advancedHidden behind "Advanced" toggle
hiddenNever shown (manual config)

Masked Variables (secrets)

Set Mask="true" on Type="Variable" Config entries to:

  • Hide the value from the UI (shown as ••••••)
  • Treat as sensitive (API keys, tokens, passwords)

PostArgs Shell Pattern

# Correct way to write PostArgs in XML:
<PostArgs>-ec 'export VAR1="value1" && export VAR2="value2" && exec real_command --flag arg'</PostArgs>

# Breaking down:
# -e  : exit on error
# -c  : read command from string (not stdin)
# '...' : single-quoted command string

Standard Config Variables to Include

For any container:

Metadata

Author@ashanzzz
Stars4126
Views0
Updated2026-04-15
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-ashanzzz-ashanzzz-unraid-xml-generator": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.