[GH-ISSUE #1727] Dashboard keeps loading endlessly #583

Open
opened 2026-02-27 14:52:18 +03:00 by kerem · 0 comments
Owner

Originally created by @maraouf on GitHub (Dec 28, 2025).
Original GitHub issue: https://github.com/netbootxyz/netboot.xyz/issues/1727

[]: This bug persists when memory is increased beyond 8GB.

I have memory of 32GB for the VM running the docker for netboot.xyz
So it is not a memory or disk issue

Describe the bug
The dashboard keeps loading endlessly showing Getting Dashboard

To Reproduce
Get the latest version or any version, the dashboard doesn't load but shows Getting Dashboard

Expected behavior
Dashboard loads normally

Screenshots
Image

Additional context
I have been troubleshooting the issue and looing deeply into the code

First it was that the web port not logging any socket request

[program:webapp]
environment=NODE_ENV="production",PORT=%(ENV_WEB_APP_PORT)s
command=/usr/bin/node app.js
directory=/app
user=nbxyz
priority = 3
stdout_logfile=/dev/null <----- ALL OUTPUT GOES TO /dev/null!
stderr_logfile=/dev/null <----- ALL ERRORS GO TO /dev/null!

So I modified the output to show me the issue

[program:webapp]
environment=NODE_ENV="production",PORT=%(ENV_WEB_APP_PORT)s
command=/usr/bin/node app.js
directory=/app
user=nbxyz
priority = 3
redirect_stderr=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0

After this I found the dashboard not loading due to

There was a problem with the fetch operation: request to https://api.github.com/repos/netbootxyz/netboot.xyz/releases/latest failed, reason: getaddrinfo EAI_AGAIN api.github.com

So I checked the resolving from inside the docker container

docker exec netbootxyz nslookup api.github.com 2>&1 || docker exec netbootxyz getent hosts api.github.com
Server: 127.0.0.11
Address: 127.0.0.11:53
Non-authoritative answer:
Non-authoritative answer:
Name: api.github.com
Address: 140.82.121.5

docker exec netbootxyz wget -O- --timeout=5 https://api.github.com/repos/netbootxyz/netboot.xyz/releases/latest 2>&1 | head -20
Connecting to api.github.com (140.82.121.5:443)
writing to stdout
{
"url": "https://api.github.com/repos/netbootxyz/netboot.xyz/releases/260862276",
"assets_url": "https://api.github.com/repos/netbootxyz/netboot.xyz/releases/260862276/assets",
"upload_url": "https://uploads.github.com/repos/netbootxyz/netboot.xyz/releases/260862276/assets{?name,label}",
"html_url": "https://github.com/netbootxyz/netboot.xyz/releases/tag/2.0.89",
"id": 260862276,
"author": {
"login": "github-actions[bot]",
"id": 41898282,
"node_id": "MDM6Qm90NDE4OTgyODI=",
"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/github-actions%5Bbot%5D",
"html_url": "https://github.com/apps/github-actions",
"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",

So the issue is not dns resolving from container

So mainly the issue is getaddrinfo EAI_AGAIN means "temporary DNS failure - try again". This suggests Node.js is trying to resolve api.github.com before the container's DNS is fully initialized.

So I edited the container code and now it is working

docker exec netbootxyz sh -c 'cat > /tmp/getdash_fixed.txt << '''ENDCODE'''
socket.on('''getdash''', function(){
var tftpcmd = '''/usr/sbin/dnsmasq --version | head -n1''';
var nginxcmd = '''/usr/sbin/nginx -v''';
var dashinfo = {};
dashinfo['''webversion'''] = version;
dashinfo['''menuversion'''] = fs.readFileSync('''/config/menuversion.txt''', '''utf8''');
dashinfo['''remotemenuversion'''] = dashinfo['''menuversion''']; // Default to local version

si.cpu(function(cpu) {
  dashinfo['\''cpu'\''] = cpu;
  si.mem(function(mem) {
    dashinfo['\''mem'\''] = mem;
    si.currentLoad(function(currentLoad) {
      dashinfo['\''CPUpercent'\''] = currentLoad.currentload_user;
      exec(tftpcmd, function (err, stdout) {
        dashinfo['\''tftpversion'\''] = stdout;
        exec(nginxcmd, function (err, stdout, stderr) {
           dashinfo['\''nginxversion'\''] = stderr;
           io.sockets.in(socket.id).emit('\''renderdash'\'',dashinfo);
        });
      });
    });
  });
});

});
ENDCODE
'

Replace lines 64-99 with the fixed version
docker exec netbootxyz sh -c 'head -63 /app/app.js > /tmp/app_new.js && cat /tmp/getdash_fixed.txt >> /tmp/app_new.js && tail -n +100 /app/app.js >> /tmp/app_new.js && cp /tmp/app_new.js /app/app.js'

The question is why this resolve blocking the dashboard?

Originally created by @maraouf on GitHub (Dec 28, 2025). Original GitHub issue: https://github.com/netbootxyz/netboot.xyz/issues/1727 []: This bug persists when memory is increased beyond 8GB. I have memory of 32GB for the VM running the docker for netboot.xyz So it is not a memory or disk issue **Describe the bug** The dashboard keeps loading endlessly showing Getting Dashboard **To Reproduce** Get the latest version or any version, the dashboard doesn't load but shows Getting Dashboard **Expected behavior** Dashboard loads normally **Screenshots** <img width="1907" height="786" alt="Image" src="https://github.com/user-attachments/assets/3bd014cd-3d25-4a26-b15e-4d889a617050" /> **Additional context** I have been troubleshooting the issue and looing deeply into the code First it was that the web port not logging any socket request [program:webapp] environment=NODE_ENV="production",PORT=%(ENV_WEB_APP_PORT)s command=/usr/bin/node app.js directory=/app user=nbxyz priority = 3 stdout_logfile=/dev/null <----- ALL OUTPUT GOES TO /dev/null! stderr_logfile=/dev/null <----- ALL ERRORS GO TO /dev/null! So I modified the output to show me the issue [program:webapp] environment=NODE_ENV=\"production\",PORT=%(ENV_WEB_APP_PORT)s command=/usr/bin/node app.js directory=/app user=nbxyz priority = 3 redirect_stderr=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 After this I found the dashboard not loading due to There was a problem with the fetch operation: request to https://api.github.com/repos/netbootxyz/netboot.xyz/releases/latest failed, reason: getaddrinfo EAI_AGAIN api.github.com So I checked the resolving from inside the docker container docker exec netbootxyz nslookup api.github.com 2>&1 || docker exec netbootxyz getent hosts api.github.com Server: 127.0.0.11 Address: 127.0.0.11:53 Non-authoritative answer: Non-authoritative answer: Name: api.github.com Address: 140.82.121.5 docker exec netbootxyz wget -O- --timeout=5 https://api.github.com/repos/netbootxyz/netboot.xyz/releases/latest 2>&1 | head -20 Connecting to api.github.com (140.82.121.5:443) writing to stdout { "url": "https://api.github.com/repos/netbootxyz/netboot.xyz/releases/260862276", "assets_url": "https://api.github.com/repos/netbootxyz/netboot.xyz/releases/260862276/assets", "upload_url": "[https://uploads.github.com/repos/netbootxyz/netboot.xyz/releases/260862276/assets{?name,label}](https://uploads.github.com/repos/netbootxyz/netboot.xyz/releases/260862276/assets%7B?name,label})", "html_url": "https://github.com/netbootxyz/netboot.xyz/releases/tag/2.0.89", "id": 260862276, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "[https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}](https://api.github.com/users/github-actions%5Bbot%5D/following%7B/other_user%7D)", "gists_url": "[https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}](https://api.github.com/users/github-actions%5Bbot%5D/gists%7B/gist_id%7D)", "starred_url": "[https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}](https://api.github.com/users/github-actions%5Bbot%5D/starred%7B/owner%7D%7B/repo%7D)", So the issue is not dns resolving from container So mainly the issue is getaddrinfo EAI_AGAIN means "temporary DNS failure - try again". This suggests Node.js is trying to resolve api.github.com before the container's DNS is fully initialized. So I edited the container code and now it is working docker exec netbootxyz sh -c 'cat > /tmp/getdash_fixed.txt << '\''ENDCODE'\'' socket.on('\''getdash'\'', function(){ var tftpcmd = '\''/usr/sbin/dnsmasq --version | head -n1'\''; var nginxcmd = '\''/usr/sbin/nginx -v'\''; var dashinfo = {}; dashinfo['\''webversion'\''] = version; dashinfo['\''menuversion'\''] = fs.readFileSync('\''/config/menuversion.txt'\'', '\''utf8'\''); dashinfo['\''remotemenuversion'\''] = dashinfo['\''menuversion'\'']; // Default to local version si.cpu(function(cpu) { dashinfo['\''cpu'\''] = cpu; si.mem(function(mem) { dashinfo['\''mem'\''] = mem; si.currentLoad(function(currentLoad) { dashinfo['\''CPUpercent'\''] = currentLoad.currentload_user; exec(tftpcmd, function (err, stdout) { dashinfo['\''tftpversion'\''] = stdout; exec(nginxcmd, function (err, stdout, stderr) { dashinfo['\''nginxversion'\''] = stderr; io.sockets.in(socket.id).emit('\''renderdash'\'',dashinfo); }); }); }); }); }); }); ENDCODE ' Replace lines 64-99 with the fixed version docker exec netbootxyz sh -c 'head -63 /app/app.js > /tmp/app_new.js && cat /tmp/getdash_fixed.txt >> /tmp/app_new.js && tail -n +100 /app/app.js >> /tmp/app_new.js && cp /tmp/app_new.js /app/app.js' The question is why this resolve blocking the dashboard?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/netboot.xyz#583
No description provided.