{"id":16337,"date":"2021-02-21T04:46:36","date_gmt":"2021-02-21T03:46:36","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=16337"},"modified":"2021-02-20T20:06:11","modified_gmt":"2021-02-20T19:06:11","slug":"nodered-upload-lokaler-nodes-im-tgz-format-ueber-gui-fuer-docker-kontainer","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=16337","title":{"rendered":"Wie &#8222;geht&#8220; ein upload eines lokalen NodeRed-Nodes im tgz-Archiv Format \u00fcber die NodeRed-GUI f\u00fcr Docker Kontainer?"},"content":{"rendered":"<p>Wie kann man einen lokalen Node von der Festplatte in NodeRed hochladen, wenn er nicht im Repository vorhanden ist und nur lokal auf der Platte liegt? Und wenn dann noch NodeRed in einem Docker Kontainer l\u00e4uft, wie geht es dann? Es kann nat\u00fcrlich auch \u00fcber die Kommandozeil des Raspberry Pi laufen, aber das will man ja nicht immer.<\/p>\n<p>Hier eine kurze Beschreibung wie das geht. Der Button zum hochladen ist etwas versteckt, unter &#8222;<strong>Palette verwalten<\/strong>&#8220; und &#8222;<strong>Palette<\/strong>&#8220; und &#8222;<strong>Installieren<\/strong>&#8222;, im Dialog zu finden.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/02\/crypt-tgz-upload-nodered.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/02\/crypt-tgz-upload-nodered.png\" alt=\"\" width=\"1744\" height=\"768\" class=\"aligncenter size-full wp-image-16338\" \/><\/a><\/p>\n<p>Nach einem klick, einfach das <strong>tgz-Archiv<\/strong> ausw\u00e4hlen und hochladen. Dann ist unbedingt ein <strong>Neustart<\/strong> von NodeRed n\u00f6tig. Das ist im Docker Kontainer mit einem <strong>Restart<\/strong> schnell gemacht.<\/p>\n<p>Kommt es beim hochladen zu einem Fehler, kann es sein das das npm-Package f\u00fcr den Node nicht richtig erzeugt wurde. Die npm-Packages m\u00fcssen mit <strong>npm pack<\/strong> im jeweiligen <strong>node_modul<\/strong> erzeugt worden sein, z.B. so: &#8230;<!--more--><\/p>\n<pre class=\"lang:default decode:true \" >\r\n\r\nroot@pi-vier:\/home\/pi\/IOTstack\/volumes\/nodered\/data\/node_modules\/node-red-contrib-cryptography# tar -tf node-red-contrib-cryptography-0.0.3.tgz\r\npackage\/package.json\r\npackage\/LICENSE\r\npackage\/README.md\r\npackage\/aes256\/.gitkeep\r\npackage\/aes256\/sha256.html\r\npackage\/aes256\/sha256.js\r\npackage\/examples\/.gitkeep\r\npackage\/examples\/example-flow.json\r\n<\/pre>\n<p>Wenn sie einfach mit <strong>tar cfzv namr.tgz verzeichnis<\/strong> erzeugt werden, haben sie nicht die richtige Struktur, wie man hier sehen kann. Es fehlt dann das <strong>package<\/strong> Verzeichnis.<\/p>\n<pre class=\"lang:default decode:true \" >root@pi-vier:\/home\/pi\/IOTstack\/volumes\/nodered\/data\/node_modules# tar cfzv node-red-contrib-cryptography-0.3.3.tgz node-red-contrib-cryptography\/\r\nnode-red-contrib-cryptography\/\r\nnode-red-contrib-cryptography\/package.json\r\nnode-red-contrib-cryptography\/aes256\/\r\nnode-red-contrib-cryptography\/aes256\/sha256.html\r\nnode-red-contrib-cryptography\/aes256\/.gitkeep\r\nnode-red-contrib-cryptography\/aes256\/sha256.js\r\nnode-red-contrib-cryptography\/examples\/\r\nnode-red-contrib-cryptography\/examples\/.gitkeep\r\nnode-red-contrib-cryptography\/examples\/example-flow.json\r\nnode-red-contrib-cryptography\/node-red-contrib-cryptography-0.0.3.tgz\r\nnode-red-contrib-cryptography\/LICENSE\r\nnode-red-contrib-cryptography\/README.md<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Wie kann man einen lokalen Node von der Festplatte in NodeRed hochladen, wenn er nicht im Repository vorhanden ist und nur lokal auf der Platte liegt? Und wenn dann noch NodeRed in einem Docker Kontainer l\u00e4uft, wie geht es dann? Es kann nat\u00fcrlich auch \u00fcber die Kommandozeil des Raspberry Pi laufen, aber das will man &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=16337\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie &#8222;geht&#8220; ein upload eines lokalen NodeRed-Nodes im tgz-Archiv Format \u00fcber die NodeRed-GUI f\u00fcr Docker Kontainer?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,3137,2520,79,1023,1319],"tags":[2502,2793,2475,2473,2824,2518,1531,4638,4637,1221,2463,2238,4639,4636,326],"class_list":["post-16337","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-javascript","category-node-red","category-programmierung","category-raspberry-pi","category-sicherheit-2","tag-docker","tag-kontainer","tag-node","tag-node-red","tag-nodered","tag-nodes","tag-npm","tag-npm-pack","tag-pack","tag-package","tag-restart","tag-tar","tag-tar-cfzv","tag-tgz","tag-upload"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/16337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16337"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/16337\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16337"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}