On a Pi settings.js has httpStatic: '/home/pi/.node-red/node-red-static/'
I put weather icon files in /home/pi/.node-red/node-red-static/icons and then copied them into a subdirectory /home/pi/.node-red/node-red-static/icons/owm.
A ui-template correctly shows the first one, but fails with the second (any icon filename gives the same, incorrect arrow icon):
It seems there must be: moving /home/pi/.node-red/node-red-static/icons/owm directory to /home/pi/.node-red/node-red-static/icons_owm, the template can find and display the icons using the new pathnames.
It's a clash between the built-in admin routes for serving icons (icons/) and what you have in httpStatic.
For example, if you set httpAdminRoot to /editor so you access the editor there instead of /, then you wouldn't have a clash (as the built-in icon route would now be /editor/icons)
But this is actually incorrect, at least for the way that I run Node-RED, because that points to folder where I run npm start (manually run on my dev PC). It should be:
So the simple work-around is to treat "icons" and "editor" (and others) as if they were reserved words and structure the directories differently.
"icons" works but "icons/subdirectory" doesn't.
Could the Node-red startup process look for these troublesome directories and issue a warning?
(Maybe it already does - who looks at the startup logs? )