NixServer now has a dark orange-accented WHM-style layout with
collapsible sidebar grouped by function, stat bar, service manager
table with actions, quick-action icon grid, server info bar, and
a branded split-panel login page.
NixClient now has a cPanel-style feature icon grid with category
sections, live search, account sidebar with usage bars, and a
blue-themed login page.
- Replace interactive read prompts with auto-generated password
(openssl rand) so curl|bash installs work without a TTY
- Display username/password in the completion banner
- Fix NixClient package.json check to use absolute path $SRC_DIR
(was relative, broke after 'cd nixserver' changed cwd)
- Node.js now has its own step (nodejs.done) separate from the packages
step, so it always runs even when packages.done already exists
- Checks for Node 18+ and skips reinstall if already present
- Removed --silent and 2>/dev/null from npm commands so build errors
are visible instead of silently killing the installer
npm was never installed, causing the NixServer/NixClient builds to fail
immediately after 'Building NixServer...' with no visible error.
Added NodeSource setup_20.x before the ondrej/php PPA, then included
nodejs in the apt-get install list. NodeSource gives us npm 10+ and
Node 20 LTS rather than Ubuntu's stale node package.
terser is not in package.json so vite fails at the minification step
after transforming all modules — the script exits non-zero, killing
the installer. esbuild is bundled with vite and requires no extra dep.
The old .git/config in /opt/nixpanel/src had a fetch refspec pointing to
refs/heads/master (from before the branch rename). Re-running the installer
with that directory present caused 'git fetch' to fail with 'couldn't find
remote ref refs/heads/master'.
Fix: rm -rf the source dir before cloning whenever the source step hasn't
been marked done, so we always get a clean checkout with the correct branch.
The releases API returns 404 when no releases exist, causing the installer
to fall back to 'main'. However, the fallback clone was not explicitly
specifying a branch, which could cause issues if the repository's default
branch configuration is in an inconsistent state. Now the fallback clone
also explicitly uses --branch main to ensure consistent behavior.
- nixserver/: React 18 + TypeScript + Vite + Tailwind
- Login page + placeholder admin dashboard with card grid
- Blue accent color (#3b82f6)
- Full Tailwind + PostCSS + TypeScript setup
- nixclient/: identical structure, user-facing panel
- Green accent color (#10b981)
- Same build tooling as NixServer
- install.sh: new 'Building NixServer & NixClient UIs' step
- npm install + npm run build for each
- Outputs to /opt/nixpanel/nixserver/dist and /opt/nixpanel/nixclient/dist
- Both panels immediately accessible via Apache on 2087 and 2083
- Skips gracefully if source not present (early dev)
- Remove CodeQL job: this repo has no JS/TS or Rust source code,
so CodeQL exits with error 32 ('no source code seen during build')
on every run. CodeQL belongs on nixpanel-website/nixpanel-licensing.
- cargo-audit: skip Rust toolchain install entirely when no Cargo.toml
present (saves ~3 min of wasted CI time); use step output condition
- ShellCheck: severity error->only fails on real errors, not style
warnings; pin to ludeeus/[email protected] (not @master)
- Rename workflow to 'Security Audit' (CodeQL is no longer included)
- CodeQL: scans JS/TS with security-extended + security-and-quality queries
- cargo-audit: scans Rust dependencies for known CVEs (--deny warnings)
- ShellCheck: lints install.sh and all shell scripts for bugs/vulnerabilities
- Runs on push to master, PRs, and weekly on Mondays at 08:00 UTC
- README: add shields.io badges, fix stack (Rust, not Node.js),
add licensing plan table, improve structure throughout
- CHANGELOG: proper Keep a Changelog format, document v0.1.0-alpha
- LICENSE: expand source-available terms with clearer restrictions
- install.sh: strip licensing/website-api build steps (those run on
nixpanel.io/license.nixpanel.io, not on customer servers); add
license key prompt + activation against license.nixpanel.io; keep
only the panel DB; fix Apache to only expose ports 2083/2087
On Ubuntu 24.04, PHP 8.2 is not in the default apt repos.
The ondrej/php PPA must be added before package installation.
Previously this was a separate step that could be bypassed when
running a locally-cached (pre-fix) copy of install.sh.
Changes:
- Add self-update block: script fetches latest version from GitHub
and re-execs itself, so stale local copies are never used
- Remove standalone php_ppa step; PPA is now added unconditionally
inside the packages step (checks if already present to avoid
duplicate adds on re-runs)
- Idempotent: grep checks sources.list before calling
add-apt-repository