File Path Reference
✅ Validated against Unraid 7.2.3 - Directory paths and persistence behavior verified.
This page is a stub. Help us expand it!
Overview
This reference provides a complete mapping of important directories and files in Unraid for plugin development.
Persistence Quick Reference
| Location | Persists? | Notes |
|---|---|---|
/boot/ |
✅ Yes | USB flash drive |
/etc/ |
❌ No | RAM - recreated on boot |
/usr/local/ |
❌ No | RAM - recreated on boot |
/var/ |
❌ No | RAM - recreated on boot |
/mnt/user/ |
✅ Yes | Array shares |
/mnt/cache/ |
✅ Yes | Cache drive |
/mnt/disk*/ |
✅ Yes | Individual array disks |
Plugin Directories
Configuration (Persistent)
/boot/config/plugins/yourplugin/
├── yourplugin.cfg # Main configuration
├── settings.cfg # Additional settings
├── *.txz # Downloaded packages
└── custom/ # User customizations
Runtime (RAM)
/usr/local/emhttp/plugins/yourplugin/
├── YourPlugin.page # Main page
├── YourPluginSettings.page
├── *.php # PHP scripts
├── scripts/ # Shell scripts
│ ├── start.sh
│ └── stop.sh
├── include/ # Included PHP files
└── images/ # Plugin images
Web Interface
emhttp Root
/usr/local/emhttp/
├── plugins/ # Plugin pages
├── webGui/ # Core Unraid UI
│ ├── scripts/ # System scripts
│ │ └── notify # Notification script
│ ├── include/ # PHP includes
│ └── images/ # UI images
└── state/ # Runtime state
Page Files Search Order
/usr/local/emhttp/
├── plugins/yourplugin/*.page # Plugin pages
└── webGui/*.page # Core pages
System Configuration
/boot/config/
/boot/config/
├── docker.cfg # Docker settings
├── disk.cfg # Disk assignments
├── network.cfg # Network configuration
├── ident.cfg # Server identity
├── share.cfg # Share settings
├── go # Startup script
├── plugins/ # Plugin configs
│ └── yourplugin/
└── super.dat # Registration key
State Files
/var/local/emhttp/
Runtime state files (read-only for plugins):
/var/local/emhttp/
├── var.ini # System variables
├── disks.ini # Disk information
├── shares.ini # Share information
├── users.ini # User information
├── network.ini # Network state
└── plugins/ # Plugin state files
Service Management
rc.d Scripts
/etc/rc.d/
├── rc.yourplugin # Your service script
├── rc.docker # Docker service
├── rc.nginx # Web server
└── ...
Cron
/etc/cron.d/
├── yourplugin # Your cron jobs
└── ...
Events
/usr/local/emhttp/plugins/yourplugin/event/
├── starting_array # Runs when array starts
├── stopping_array # Runs when array stops
├── docker_started # Docker service started
└── ...
Logging
/var/log/
├── syslog # System log
├── messages # General messages
└── yourplugin.log # Your plugin log (if created)
Docker
/var/lib/docker/ # Docker data (varies based on config)
/var/run/docker.sock # Docker socket
/boot/config/docker.cfg # Docker configuration
/boot/config/plugins/dockerMan/
├── templates/ # Saved Docker templates
├── templates-user/ # User-created templates
└── images/ # Container icons
Docker Template Locations
/boot/config/plugins/dockerMan/templates-user/my-[Container].xml
Temporary Files
/tmp/ # Temporary files (RAM) - cleared on boot
├── plugins/ # Plugin temp data
├── yourplugin_work/ # Working directory
└── phpXXXXXX # PHP temp files
/var/tmp/ # Temporary files (RAM) - may persist longer
/run/ # Runtime data (symlink to /var/run)
/var/run/ # Runtime data
├── yourplugin.pid # Plugin PID files
├── yourplugin.sock # Plugin sockets
└── docker.sock # Docker socket
Logging
/var/log/
├── syslog # Main system log
├── messages # General messages
├── dmesg # Kernel messages
├── nginx/ # Web server logs
│ ├── access.log
│ └── error.log
├── docker.log # Docker daemon log (if enabled)
├── libvirt/ # VM logs
│ └── qemu/
└── yourplugin.log # Plugin-specific log (if created)
Plugin Logging Locations
Plugins can write logs to several locations:
<?
// Option 1: /var/log/ (RAM, lost on reboot)
$logFile = "/var/log/yourplugin.log";
// Option 2: Plugin config dir (persistent)
$logFile = "/boot/config/plugins/yourplugin/yourplugin.log";
// Option 3: Array location (if array needed anyway)
$logFile = "/mnt/user/appdata/yourplugin/logs/yourplugin.log";
?>
User Data
Shares
/mnt/user/ # Combined user shares view
├── ShareName/ # Specific share
├── appdata/ # Common container data location
│ └── yourplugin/ # Your plugin's data
├── domains/ # VM disk images
└── isos/ # ISO files
/mnt/disk1/ShareName/ # Direct disk access
/mnt/disk2/ShareName/
/mnt/cache/ShareName/ # Cache drive access
/mnt/cache_nvme/ShareName/ # Named pool access
Appdata (Common Location)
/mnt/user/appdata/
├── yourplugin/ # Plugin data on array
│ ├── config/
│ ├── data/
│ └── logs/
├── binhex-plexpass/ # Example container
└── ...
Cache/Pools
/mnt/cache/ # Default cache pool
/mnt/pool_name/ # Named pools
/mnt/cache_nvme/ # Example: NVMe cache pool
Network Configuration
/boot/config/
├── network.cfg # Network settings
├── network-rules.cfg # Network rules
└── wireguard/ # WireGuard configs (if enabled)
└── wg0.conf
SSL/Certificates
/boot/config/ssl/
├── certs/
│ ├── certificate_bundle.pem # SSL certificate
│ └── yourserver_unraid_net.key # Private key
└── ...
/etc/ssl/ # System SSL certificates
Flash Drive Layout
/boot/ # Flash drive root (FAT32)
├── bzimage # Linux kernel
├── bzroot # Initial ramdisk
├── bzroot-gui # GUI components
├── bzmodules # Kernel modules
├── bzfirmware # Firmware files
├── syslinux/ # Bootloader
├── config/ # All configuration
│ ├── go # Startup script
│ ├── ident.cfg # Server identity
│ ├── disk.cfg # Disk config
│ ├── share.cfg # Share config
│ ├── network.cfg # Network config
│ ├── docker.cfg # Docker config
│ ├── domain.cfg # VM config
│ ├── modprobe.d/ # Kernel module options
│ └── plugins/ # Plugin configs
└── extra/ # Extra packages to load
Common Absolute Paths
Plugin Development
| Path | Description |
|---|---|
/usr/local/emhttp/plugins/yourplugin/ |
Plugin runtime files (RAM) |
/boot/config/plugins/yourplugin/ |
Plugin config files (persistent) |
/usr/local/emhttp/webGui/ |
Core web interface |
/usr/local/emhttp/webGui/include/ |
PHP includes |
/usr/local/emhttp/webGui/scripts/ |
System scripts |
State Files
| Path | Description |
|---|---|
/var/local/emhttp/var.ini |
System variables ($var) |
/var/local/emhttp/disks.ini |
Disk information |
/var/local/emhttp/shares.ini |
Share information |
/var/local/emhttp/users.ini |
User information |
/var/local/emhttp/network.ini |
Network state |
/var/local/emhttp/devs.ini |
Device information |
System Utilities
| Path | Description |
|---|---|
/usr/local/emhttp/webGui/scripts/notify |
Notification script |
/usr/local/sbin/emhttp |
Main emhttp daemon |
/etc/rc.d/rc.docker |
Docker service script |
/etc/rc.d/rc.nginx |
Nginx service script |
Service Management
| Path | Description |
|---|---|
/etc/rc.d/rc.yourplugin |
Your service script |
/etc/cron.d/yourplugin |
Your cron jobs |
/var/run/yourplugin.pid |
Your PID file |
Path Variables in PHP
<?
// Plugin path constants
define('PLUGIN_NAME', 'yourplugin');
define('PLUGIN_PATH', '/usr/local/emhttp/plugins/' . PLUGIN_NAME);
define('CONFIG_PATH', '/boot/config/plugins/' . PLUGIN_NAME);
define('CONFIG_FILE', CONFIG_PATH . '/' . PLUGIN_NAME . '.cfg');
// State files
define('VAR_FILE', '/var/local/emhttp/var.ini');
define('DISKS_FILE', '/var/local/emhttp/disks.ini');
define('SHARES_FILE', '/var/local/emhttp/shares.ini');
define('USERS_FILE', '/var/local/emhttp/users.ini');
// Common paths
define('DOCROOT', '/usr/local/emhttp');
define('WEBGUI_PATH', DOCROOT . '/webGui');
define('NOTIFY_SCRIPT', WEBGUI_PATH . '/scripts/notify');
// Usage
$var = parse_ini_file(VAR_FILE);
$disks = parse_ini_file(DISKS_FILE, true);
$cfg = parse_plugin_cfg(PLUGIN_NAME);
?>
Path Variables in Bash
#!/bin/bash
# Plugin paths
PLUGIN="yourplugin"
PLUGIN_PATH="/usr/local/emhttp/plugins/$PLUGIN"
CONFIG_PATH="/boot/config/plugins/$PLUGIN"
CONFIG_FILE="$CONFIG_PATH/$PLUGIN.cfg"
# System paths
EMHTTP="/usr/local/emhttp"
NOTIFY="$EMHTTP/webGui/scripts/notify"
# State files
VAR_FILE="/var/local/emhttp/var.ini"