{"id":7419,"date":"2026-08-20T18:34:50","date_gmt":"2026-08-20T16:34:50","guid":{"rendered":"https:\/\/www.webhostingsrbija.rs\/?p=7419"},"modified":"2026-08-20T18:34:50","modified_gmt":"2026-08-20T16:34:50","slug":"nodejs-aplikacije","status":"publish","type":"post","link":"https:\/\/www.webhostingsrbija.rs\/en\/nodejs-aplikacije\/","title":{"rendered":"Node.js applications in WHSPanel"},"content":{"rendered":"<p>Node.js App Manager allows you to run Node applications (Express, Next.js, NestJS and others) directly on your hosting account via Nginx Unit, a fast application server with WebSocket support and no startup delays. Each application runs as an isolated process bound to a single domain.<\/p>\n\n<h2>1. Overview<\/h2>\n<p>Open in the menu <strong>Software<\/strong> well <strong>Node.js<\/strong>. The table shows your applications with columns <strong>Application name<\/strong> (and domain), <strong>Node version<\/strong>, <strong>Entry file<\/strong>, <strong>Status<\/strong> (stopped or running) and <strong>Actions<\/strong>.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac31b5aa3c01&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac31b5aa3c01\" class=\"wp-block-image size-large wp-lightbox-container\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"636\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-populated-a-1024x636.avif\" alt=\"Node.js aplikacije u WHSPanelu\" class=\"wp-image-7541\" title=\"\" srcset=\"https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-populated-a-1024x636.avif 1024w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-populated-a-300x186.avif 300w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-populated-a-768x477.avif 768w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-populated-a-1536x955.avif 1536w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-populated-a-2048x1273.avif 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-block-image__caption\">Populated state: app with Start\/Stop\/Restart\/npm install\/Modify\/Delete controls.<\/figcaption><\/figure>\n\n\n<h2>2. How to create an application<\/h2>\n<ol>\n<li>Click <strong>Create an application<\/strong>.<\/li>\n<li><strong>Application name<\/strong> and <strong>Domain<\/strong> on which he is working.<\/li>\n<li><strong>Node.js version<\/strong> (for example 20 LTS).<\/li>\n<li><strong>Application directory<\/strong> where is the code and <strong>Entry file<\/strong> (for example <code>app.js<\/code>).<\/li>\n<li><strong>Environment variables<\/strong> in the form of <code>KEY=VALUE<\/code>, one per line.<\/li>\n<li>Click <strong>OK<\/strong>.<\/li>\n<\/ol>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac31b5aa3f7c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac31b5aa3f7c\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"640\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-create-p-1024x640.avif\" alt=\"Dijalog Kreiraj Node.js aplikaciju\" class=\"wp-image-7542\" title=\"\" srcset=\"https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-create-p-1024x640.avif 1024w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-create-p-300x188.avif 300w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-create-p-768x480.avif 768w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-create-p-1536x960.avif 1536w, https:\/\/www.webhostingsrbija.rs\/wp-content\/uploads\/2026\/08\/node-create-p-2048x1280.avif 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-block-image__caption\">Creating a Node application.<\/figcaption><\/figure>\n\n\n<h2>3. Application controls<\/h2>\n<p>When the application is created, in the column <strong>Actions<\/strong> you get a full set of controls:<\/p>\n<table>\n<thead><tr><th>Control<\/th><th>What does it do?<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>Start<\/strong><\/td><td>Starts the application (status changes to <em>running<\/em>) to start serving traffic.<\/td><\/tr>\n<tr><td><strong>Stop<\/strong><\/td><td>Stops the application.<\/td><\/tr>\n<tr><td><strong>Restart<\/strong><\/td><td>Restarts the application (for example after changing the code).<\/td><\/tr>\n<tr><td><strong>npm install<\/strong><\/td><td>Installs dependencies from <code>package.json<\/code>, without the need for SSH.<\/td><\/tr>\n<tr><td><strong>Edit<\/strong><\/td><td>Changes settings (Node version, entry file, environment variables).<\/td><\/tr>\n<tr><td><strong>Delete<\/strong><\/td><td>Removes the application.<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n<blockquote><p><strong>Workflow:<\/strong> first upload the code to the selected directory (via Git repository or File Manager), so <strong>create an application<\/strong>, click <strong>npm install<\/strong> to remove dependencies, and finally <strong>Start<\/strong>. When the application is running (status <em>running<\/em>), is available on its own domain.<\/p><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>How to run Node.js application (Express, Next.js, NestJS) in WHSPanel via Nginx Unit.<\/p>","protected":false},"author":1,"featured_media":7311,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[211,203],"tags":[],"class_list":["post-7419","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softver","category-whs-panel"],"_links":{"self":[{"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/posts\/7419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/comments?post=7419"}],"version-history":[{"count":1,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/posts\/7419\/revisions"}],"predecessor-version":[{"id":7577,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/posts\/7419\/revisions\/7577"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/media\/7311"}],"wp:attachment":[{"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/media?parent=7419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/categories?post=7419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webhostingsrbija.rs\/en\/wp-json\/wp\/v2\/tags?post=7419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}