Skip to content

Releases: tuxxin/iNetPanel

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

v1.22

22 Mar 23:13

Choose a tag to compare

Dark mode audit & fixes (v1.22)

Addresses #10 — dark mode inconsistencies and unreadable text.

CSS additions (58 new dark mode rules)

  • Badgesbg-light, text-dark, bg-secondary now theme-aware
  • Alerts — info, success, warning, danger with proper dark backgrounds and contrast
  • Pre/code blocks — proper dark background and text colors
  • Buttonsoutline-dark, outline-secondary, btn-light variants
  • Components — breadcrumbs, nav pills, pagination, input groups, progress bars, accordion, offcanvas, toast
  • Logo — brightness inversion filter for dark sidebar backgrounds

Hardcoded color fixes

  • Dashboard chart grid/tick colors now adapt to theme
  • QR code colors invert in dark mode (light modules on dark background)
  • Removed hardcoded #e8f4f8 alert background in settings
  • WireGuard code block uses theme-aware bg-light instead of bg-white

Closes #10

v1.21.9

22 Mar 15:43

Choose a tag to compare

Fix PHP package extension install/remove (v1.21.9)

Same root cause as v1.21.8dpkg triggers restart php-fpm during apt-get install/remove of individual extensions (e.g. php8.5-uploadprogress), killing the PHP worker mid-request.

Changes

  • Extension install/remove now runs inside systemd-run --scope to escape the FPM cgroup
  • Frontend uses async status polling with progress modal (matches multi-php pattern)
  • Modal only shown after API confirms operation started (prevents stuck modal on errors)
  • Added pkg_status API endpoint for polling extension install/remove progress