Server Panel Bug Report

Generated from safe server-level testing on 23.172.120.84. Public panel: panel.23-172-120-84.nip.io. API: api.23-172-120-84.nip.io.

Status

Overall health

Confirmed bug

Bug 1 — Frontend Next.js cache permission issue

Problem: The Next.js frontend service runs as user panel, but parts of /var/www/panel/frontend/.next are owned by root.

Evidence:

EACCES: permission denied, mkdir /var/www/panel/frontend/.next/standalone/.next/cache

Manual write test as panel also failed:

sudo -u panel mkdir -p /var/www/panel/frontend/.next/standalone/.next/cache/test-write
mkdir: Permission denied

Impact: The panel may still load, but Next.js cannot write runtime/prerender cache. This can cause repeated log errors, unstable behavior after restart, or page/cache failures.

Quick server fix:

sudo chown -R panel:panel /var/www/panel/frontend/.next
sudo systemctl restart panel-frontend

Permanent fix: Ensure frontend build/deploy/update runs as panel, or run ownership correction after build:

chown -R panel:panel /var/www/panel/frontend/.next
Code/test issue

Issue 2 — Panel update check should use fresh release data when starting update

Live server state:

So on this live server, starting an update is currently correct.

Test failure found: Backend temp-clone Pest suite failed in PanelUpdateApplyTest. The test expected HTTP 422 for “already latest/no update”, but got 202.

Likely cause: When starting an update, code uses cached latest release data:

$latest = $this->releases->latest();

Suggested safer fix:

$latest = $this->releases->latest(fresh: true);

Reason: A mutating update action should re-check the release host fresh instead of trusting cached availability data.

Blocked

Full authenticated panel E2E still needs admin access

Public/server tests were completed. Full section-by-section UI testing needs either:

  1. Admin login credentials, or
  2. Permission to create a temporary admin user, test all sections, then delete it.