Skip to content

Releases: tuxxin/iNetPanel

v1.24.2 — Installer cascade fix (#14, #15) + per-domain disk cache

21 Apr 00:52

Choose a tag to compare

Bug Fixes

  • Installer fails on fresh Debian 12 (closes #15). The installer's exec_cmd helper ran commands in a backgrounded subshell that didn't have /usr/sbin in PATH, so a2enmod failed. Added a global PATH export near the top of install_LAMP.sh and switched a2enmod/a2ensite/a2dissite/a2disconf to absolute /usr/sbin/ paths.
  • Unusable MariaDB / phpMyAdmin on fresh install (closes #14). Same root cause as #15: when a2enmod exited early, the installer skipped the sudoers file, phpMyAdmin storage DB, and panel deploy. Without the sudoers rule www-data couldn't read the MariaDB root password — producing "Access denied for user 'root'@'localhost' (using password: NO)". Fix #15 resolves the cascade.
  • Same disk usage shown on every domain for multi-domain users. accountDisk() was summing /home/<user> (the whole home dir) and the user's DB total on every row. Now a new disk_cache SQLite table tracks per-domain file usage, disk_cache_user tracks the per-user DB total, and the Accounts page shows each domain's actual files size plus a single Total: badge per user (files across all their domains + MariaDB total).

Performance

  • /admin/accounts load time. With 30+ domains and 100 GB+ data the page hung for seconds while du -sb ran live for every user. New scripts/system/disk_cache_scan.sh populates the SQLite cache every 10 minutes via cron, and fires immediately after add/remove/create/delete via background inetp calls. The API now reads cached rows — O(ms) regardless of dataset size.

Docs / Packaging

  • README install command now pre-installs curl for fresh Debian 12 installs (apt-get install -y curl && bash <(curl -s …/latest)).
  • build_release.sh now also generates latest-beta alongside latest — same installer, just with the download URL swapped to the main-branch zipball so beta testers pull the latest code instead of the tagged release zip.

v1.24.1 — Dashboard speed + www ServerAlias hotfix

18 Apr 14:02

Choose a tag to compare

Performance

  • Dashboard load time/api/accounts?action=list was running du -sb + inetp db_size for every hosting user on every dashboard load (5+ seconds with 31 domains), even though the dashboard only displays 6 rows and doesn't use disk usage. Added ?limit=N and ?skip_disk=1 query params; dashboard now requests limit=6&skip_disk=1. Accounts page unchanged — still shows disk usage.

Bug Fixes

  • Apache vhost missing www ServerAlias — Apex domains (example.com) had the DNS www CNAME auto-created by the Cloudflare tunnel logic, but the Apache vhost only declared ServerName ${DOMAIN}, so www.{domain} requests fell through to the default vhost. add_domain.sh and restore_account.sh now add ServerAlias www.${DOMAIN} for apex domains (dot-count heuristic: exactly 1 dot, not already prefixed with www.).

v1.24 — Backup Restore with CF Migration Support

04 Apr 22:13

Choose a tag to compare

New Features

  • Backup Restore — Full account restore from backup archives with 4-step wizard: Upload (web with progress bar, FTP, SSH/SCP) → Review (username, domains, ports, databases) → Cloudflare routing check with override → Execute with progress and credential summary.
  • Domain availability checkerinetp check_domains uses RDAP (free, no API key) for single, bulk, and auto-generated variant checks.
  • CF tunnel migration — Restore override adds route to new tunnel and removes from old tunnel automatically. Searches all account tunnels for domain conflicts, not just the current server's tunnel.

Bug Fixes

  • Tunnel creation fails on fresh install — Removed invalid tunnel_secret from API-managed tunnel creation.
  • Beta channel update detection — Was always showing "up to date"; now compares commit SHAs.
  • Beta version string stacking — Stripped -beta.x-beta.y chains to just base + latest hash.
  • Domain deletion "Connection error" — FPM reload in remove_domain.sh killed panel worker; deferred to after response.
  • Restore connection reset at 95% — Same FPM reload issue in restore_account.sh.
  • Restore FTP login — Fixed nologin shell, sudo permissions, password (now copies root's shadow hash).
  • Restore parse on large backups — Replaced full tar -tzf buffering with streaming grep pipes (constant memory).
  • CF CNAME safetyremoveTunnelHostname() now only deletes CNAME if it points to the specific tunnel being cleaned up, preventing breakage when domains are migrated between servers.
  • CF domain conflict detectioncheck_domain and add_domain now search all account tunnels, not just the current server's.

v1.23.3 — Fix tunnel creation, beta update detection, add domain checker

04 Apr 14:38

Choose a tag to compare

Bug Fixes

  • Tunnel creation fails on fresh install — Removed tunnel_secret from createTunnel(). API-managed tunnels (config_src: cloudflare) reject client-side secrets; Cloudflare's Rust serde threw a JSON deserialize error. Token is already retrieved separately via getTunnelToken().
  • Beta channel update detection brokenupdate_check.php and settings.php check_updates action only queried GitHub releases API, never checking main branch commits. Beta channel now compares latest commit SHA against installed SHA to properly detect available updates.

New Features

  • Domain availability checker — Added check_domains.sh (inetp check_domains). Uses RDAP (free, no API key). Supports single domain, bulk file (-f), and auto-generated variant checks (-g keyword).

v1.23.2

26 Mar 21:53

Choose a tag to compare

Hotfix

  • Installer fails to download panel sourceinstall_LAMP.sh was pointing at inetpanel.tuxxin.com/inetpanel-latest.zip (404). The zip is a GitHub release asset, not hosted on the website. Fixed URL to github.com/tuxxin/iNetPanel/releases/latest/download/inetpanel-latest.zip.

Install / Update

bash <(curl -s https://inetpanel.tuxxin.com/latest)

v1.23.1

26 Mar 21:39

Choose a tag to compare

Hotfix

  • Multi-PHP install fails silently on fresh installs — The /var/www/inetpanel/storage/ directory wasn't created during deployment, causing status files and logs to never be written. The API now creates the directory if missing and returns a clear error if it can't.

Install / Update

bash <(curl -s https://inetpanel.tuxxin.com/latest)

Existing installs: run inetp panel_update from the admin panel or CLI.

v1.23

26 Mar 21:20

Choose a tag to compare

New: Release Channels (Stable vs Beta)

  • Installer now uses release tarballs instead of git clone — the repo (main branch) is now beta code, while GitHub Releases are stable.
    • inetpanel.tuxxin.com/latest — stable installer (downloads release zip)
    • inetpanel.tuxxin.com/latest-beta — beta installer (clones main branch)
  • Settings → Updates → Release Channel — toggle between stable and beta without reinstalling. Stable pulls from tagged releases, beta pulls the latest commit from main.

Fixes

  • Multi-PHP install broken on all environmentssystemd-run --scope fails silently in LXC/Proxmox containers with no fallback, leaving the status file stuck at "running" forever. Added direct background execution fallback when systemd-run fails. Simplified the API exec() call and set a 3-minute timeout.

Install / Update

bash <(curl -s https://inetpanel.tuxxin.com/latest)

Existing installs: run inetp panel_update from the admin panel or CLI.

v1.22.3

26 Mar 20:42

Choose a tag to compare

Fixes

  • Dashboard disk stats inflateddisk_free_space() excludes ext4 reserved blocks (~5%), making "used" appear ~10 GB higher than reality. Now uses df output for accurate numbers matching what the OS reports.
  • PHP 5.6 install timeout — Polling timeout increased from 120s to 360s. Older PHP versions take longer to install via apt.
  • SSH port fix for LXC containers — Previous fix only checked is-active on ssh.socket, which misses cases where the socket is enabled but not yet active (common in LXC). Now checks list-unit-files and masks the socket unit to prevent reactivation.

Install / Update

curl -o latest https://inetpanel.tuxxin.com/latest && bash latest

Existing installs: run inetp panel_update from the admin panel or CLI.

v1.22.2

26 Mar 19:16

Choose a tag to compare

Fixes

  • SSH port ignored on Debian 12 — Installer now disables ssh.socket (systemd socket activation hardcodes port 22, overriding sshd_config Port 1022)
  • SSL cert reissue blocked after self-signed fallback — Cleans up non-LE certs from /etc/letsencrypt/live/ before certbot retry
  • CertBot DNS propagation timeout — Added --dns-cloudflare-propagation-seconds 30 (default 10s was too short)
  • Dashboard graph empty on fresh installinetpanel_stats was missing from manage_cron.sh allowed list, so the stats collector cron was never created

New

  • inetp optimize_server — Auto-tunes Apache2 mpm_event and MariaDB InnoDB/buffers based on detected RAM, CPU cores, disk type (SSD/HDD), and hosted domain count. Dry-run by default, --apply to write changes with automatic config backups.

Install / Update

curl -o latest https://inetpanel.tuxxin.com/latest && bash latest

Existing installs: run inetp panel_update from the admin panel or CLI.

v1.22.1

23 Mar 00:04

Choose a tag to compare

Logo rebrand & dark mode fixes (v1.22.1)

New branding

  • New logo — redesigned iNetPanel logo (PNG with transparency), replaces old .webp
  • Favicon — new Logo-Icon.webp favicon added to admin and account portals
  • Logo automatically inverts to white in dark mode via CSS filter
  • Account portal logo resized to 28px for cleaner navigation fit

Dark mode — root-level fix

The core issue with dark mode was that Bootstrap 5.3 uses internal CSS variables (--bs-body-color, --bs-table-color, --bs-border-color, etc.) that our custom [data-theme="dark"] wasn't overriding. This caused all Bootstrap components to inherit dark text colors regardless of theme.

Fix: Override all Bootstrap 5.3 internal CSS variables at the [data-theme="dark"] root level. This makes every Bootstrap component — tables, cards, headings, links, borders — automatically inherit correct dark mode colors without needing per-component overrides.

Specific fixes

  • Table headers.table-light <thead> elements now display light text (previously black on dark background)
  • Nav tabs — dark mode styling for tabbed interfaces (multi-php, firewall pages)
  • Bootstrap 5.3 subtle utilitiesbg-success-subtle, bg-primary-subtle, bg-warning-subtle, bg-danger-subtle with proper dark variants
  • Close button — filter inversion for visibility on dark backgrounds
  • Warning badges — retain dark text for contrast on yellow background
  • Table borders — consistent border color in dark mode

Pages fixed

Accounts, DNS, Email, SSL, Firewall, Multi-PHP, Services, and all other pages that use Bootstrap tables, cards, or badges.

Closes #10