2026-04-25 05:05:04 -05:00
# Changelog
2026-04-11 15:48:55 -05:00
2026-04-25 05:05:04 -05:00
All notable changes to NixPanel are documented here.
Format follows [Keep a Changelog ](https://keepachangelog.com/en/1.1.0/ ).
Versions follow [Semantic Versioning ](https://semver.org/ ).
2026-04-11 15:48:55 -05:00
---
2026-04-25 05:05:04 -05:00
## [Unreleased]
2026-04-11 15:48:55 -05:00
2026-04-25 21:32:32 -05:00
### Added
- `nixpanel-accounts` section binary — full account provisioner
- Creates Apache vhost with PHP-FPM proxy
- Creates PHP-FPM pool (per-user socket, open_basedir isolation)
- Creates PowerDNS zone with A, www, mail, ftp, MX, SPF records
- Builds home directory structure: `public_html/` , `logs/` , `tmp/` , `mail/` , `backups/`
- Writes default `index.html` for new domains
- Sets correct ownership and permissions
- `deprovision` action removes vhost, FPM pool, DNS zone
- NixClient real JWT authentication — login now calls `/api/auth/login`
- Session persists across refresh via `localStorage`
- Admin accounts redirected to NixServer (port 2087) instead of being allowed in
### Fixed
- NixClient login accepted any username/password (was using fake `setTimeout` bypass)
- NixClient Sign out button now clears JWT and session correctly
- `CreateAccount` `FormField` component moved to module level — fixes focus jumping to next field after one keystroke (React remount bug from component defined inside render function)
- `BIGINT UNSIGNED` columns changed to `BIGINT` in DB schema — fixes `i64` type mismatch error on login
2026-04-25 05:05:04 -05:00
### Planned
2026-04-25 16:58:27 -05:00
- DNS zone editor (CRUD records via PowerDNS API)
- Email account management (Dovecot mailbox provisioning)
- SSL certificate management (Let's Encrypt via Certbot)
2026-04-25 05:05:04 -05:00
- File manager
2026-04-25 16:58:27 -05:00
- MySQL/MariaDB database manager (per-account)
2026-04-25 05:05:04 -05:00
- WordPress one-click installer
- Backup / restore system
2026-04-25 16:58:27 -05:00
- Firewall rule editor (CSF/iptables)
2026-04-25 05:05:04 -05:00
- Multi-server support (Agency plan)
2026-04-25 16:58:27 -05:00
- NixClient pages: domains, email, databases, FTP, security, stats
---
## [0.2.0-alpha] — 2026-04-25
### Added
- **Rust backend** — Cargo workspace with independently compiled + UPX-compressed section executables
- `nixpanel-common` — shared `SectionRequest` / `SectionResponse` IPC types
- `nixpanel-api` — main Axum HTTP server on port 4000
- `POST /api/auth/login` — Argon2id password verification, HS256 JWT (8-hour expiry)
- `GET /api/dashboard` — real account/domain/database/email counts + system stats
- `GET /api/services` — live service status via systemctl
- `POST /api/services/:name/:action` — start / stop / restart any managed service
- `GET /api/accounts` — list hosting accounts from MariaDB
- `POST /api/accounts` — create account (system user, home dir, DB record)
- Auto-runs DB schema migrations on first start
- Seeds admin user from `/opt/nixpanel/.admin_user` + `.admin_pass` on first run
- `nixpanel-services` — section binary; reads JSON from stdin, calls systemctl, writes JSON to stdout
- Actions: `list` , `start` , `stop` , `restart` , `reload`
- Reports PID and uptime per service
- `nixpanel-sysinfo` — section binary; reads `/proc/meminfo` , `/proc/stat` , `/proc/loadavg` , `df`
- Actions: `stats` (CPU, RAM, disk, load, hostname, IP, OS, kernel), `versions` (Apache, PHP, MariaDB)
- **Database schema** (`nixpanel-api/migrations/0001_initial.sql` )
- Tables: `users` , `accounts` , `domains` , `dns_records` , `account_databases` ,
`email_accounts` , `ftp_accounts` , `ssl_certificates` , `backups`
- **Frontend API clients** (`nixserver/src/api.ts` , `nixclient/src/api.ts` )
- JWT stored in `localStorage` , included in all requests as `Authorization: Bearer`
- Auto-clears token and reloads on 401
### Changed
- **NixServer UI** — full redesign matching WHM visual style
- Dark navy / orange-accent theme
- Collapsible sidebar with grouped navigation sections
- Dashboard: live stat bar, server info bar, service manager table, quick-action icon grid
- List Accounts: real data table with search/filter
- Create Account: full form wired to API (creates system user, DB record)
- Login: real JWT auth; session persists across refresh via `localStorage`
- **NixClient UI** — full redesign matching cPanel visual style
- Blue-accent theme
- Feature icon grid grouped by category with live search
- Account sidebar with usage bars
- Login: real JWT auth
- **Installer** (`install.sh` )
- Rust build step now copies all `nixpanel-*` section binaries to `/opt/nixpanel/bin/`
- Installs UPX and compresses each binary after build
- Admin credentials auto-generated with `openssl rand` (no TTY prompts)
- Node.js 20 LTS installed as its own idempotent step (`nodejs.done` )
- NixClient build uses absolute path to avoid wrong-directory check
- npm output visible during build (removed `--silent` ) for easier debugging
- **Vite configs** — added `/api` proxy to `localhost:4000` for local development
- **Minifier** — switched both UIs from `terser` (not installed) to `esbuild`
### Fixed
- Login inputs changed from `type="email"` to `type="text"` with "Username" label
- `sqlx::query!()` macros replaced with non-macro `query()` / `query_as()` / `query_scalar()`
so the binary compiles without a live database connection
- Removed `axum_extra` import that was never added to `Cargo.toml`
- Git clone always removes stale `$SRC_DIR` before cloning (fixes "couldn't find remote ref master" on re-run)
2026-04-11 15:48:55 -05:00
---
2026-04-25 05:05:04 -05:00
## [0.1.0-alpha] — 2025-04-25
2026-04-11 15:48:55 -05:00
2026-04-25 05:05:04 -05:00
### Added
- **Installer** (`install.sh` ) — fully automated Ubuntu 24.04 installer
- Self-updating: always fetches the latest version from GitHub before running
- Idempotent step tracking — re-runnable after failures without redoing completed steps
2026-04-25 16:58:27 -05:00
- Installs Apache 2, PHP 8.2 + 8.3 (via ondrej/php PPA), MariaDB, PowerDNS,
Exim 4, Dovecot, SpamAssassin, Fail2ban, Certbot
2026-04-25 05:05:04 -05:00
- Configures Apache reverse proxy on ports 2083 (NixClient) and 2087 (NixServer)
2026-04-25 16:58:27 -05:00
- Generates admin credentials automatically; displays them in the completion banner
- License activation against `https://license.nixpanel.io`
- **NixServer** — WHM-style admin panel (React 18 + TypeScript + Tailwind + Vite, port 2087)
- **NixClient** — cPanel-style user panel (React 18 + TypeScript + Tailwind + Vite, port 2083)
2026-04-25 05:13:53 -05:00
- **Licensing** — license key validated against `https://license.nixpanel.io` during install
2026-04-25 05:05:04 -05:00
- Plans: Free, Solo ($9.99/mo), Host ($29.99/mo), Agency ($79.99/mo)
2026-04-25 16:58:27 -05:00
- **Infrastructure** — `.gitattributes` enforcing LF line endings
2026-04-11 15:48:55 -05:00
---
2026-04-25 16:58:27 -05:00
[Unreleased]: https://github.com/NixReaper/nixpanel/compare/v0.2.0-alpha...HEAD
[0.2.0-alpha]: https://github.com/NixReaper/nixpanel/compare/v0.1.0-alpha...v0.2.0-alpha
2026-04-25 05:05:04 -05:00
[0.1.0-alpha]: https://github.com/NixReaper/nixpanel/releases/tag/v0.1.0-alpha