Open Source Projects

Become a Sponsor

Tuxxin's open source projects are built and maintained in our spare time. Your sponsorship helps keep the lights on — enabling faster development, better documentation, and new features.

  • Fund active development of iNetPanel
  • Support the TiCore PHP framework
  • Keep tools free for small businesses

iNetPanel — Hosting Control Panel

A modern, self-hosted hosting control panel for managing domains, SSL, databases, and more.

⭐ Featured
🚀 Open Source — MIT Licensed

iNetPanel is Tuxxin's flagship open-source hosting panel — now publicly released. Built on our custom TiCore PHP framework, it provides a clean, fast interface for managing web hosting environments without the bloat of commercial alternatives.

View Full Details Documentation GitHub

Changelog — Last 3 Releases

v1.24.4

Jun 9, 2026

⚠️ CRITICAL — please read, and enable automatic backups

This release fixes a system-wide bug that can silently break account creation, domain setup, and SSL on servers that were previously working perfectly. If you run iNetPanel, update and read this.

► Enable automatic backups now

Settings → Backups → enable daily automatic backups, and take a manual backup before updating. The failures in this bug are silent — operations report success while doing nothing — so a known-good backup is your safety net.

The bug — full details

  • What: php-fpm's systemd unit ships with , which mounts read-only for every process php-fpm spawns. The panel makes privileged system changes — , Apache vhosts, PHP-FPM pools, entries, Let's Encrypt certs — via root helpers launched by php-fpm, and does not escape php-fpm's mount namespace, so all of those writes fail.
  • Symptoms: creating an account fails with or ; adding domains / issuing SSL can fail the same way. Until this release the scripts reported success anyway, leaving "phantom" accounts (a row with no Linux user) that then block re-creating that username.
  • Why it appeared out of nowhere: is part of the stock php-fpm unit; a routine PHP package update in the past few months enabled it on servers that were fine before. No panel change was involved — a working system simply stops being able to create accounts. It looks like a storage/permission problem but isn't — it happens identically on ext4 and ZFS.

The fix

A php-fpm drop-in sets (keeps and read-only, allows ). New installs get it from the installer before php-fpm first starts; existing installs get it on update.

⚠️ Applying it on an already-affected server

Most servers need no action — the nightly auto-update (runs as root via cron, outside the sandbox) applies this fix automatically. Just make sure auto-update is enabled under Settings → Updates.

To apply it immediately, or if auto-update is off, run once from a root shell:

The web "Update Now" button cannot apply this particular fix — it runs inside php-fpm's read-only sandbox. After the fix applies, php-fpm stops sandboxing and everything (including "Update Now") works normally again. If a username is stuck as a phantom account, delete its row and re-create it.

Also in v1.24.4

  • now fails loudly when fails (no more phantom accounts) — this is what finally surfaced the bug above.

Full changelog: https://github.com/tuxxin/iNetPanel/compare/v1.24.3...v1.24.4

v1.24.3

Jun 6, 2026

iNetPanel v1.24.3

Bug-fix release hardening multi-tenant isolation and fixing per-domain PHP switching.

Fixed

  • Cross-vhost content contamination. The Cloudflare→Apache origin hop is now pinned to HTTP/1.1 via a managed (), applied idempotently on update (configtest + safe reload, auto-revert on failure) and by the installer for new installs. This prevents HTTP/2 connection coalescing from ever serving one domain's content (e.g. ) under another. Visitors keep HTTP/2/3 from Cloudflare's edge — only the origin hop changes.
  • Port-collision isolation. now allocates each vhost port atomically (flock) and scans real usage (ports file + live vhosts), refusing to co-locate two domains on one port. Backup restore re-derives unique, free ports server-side instead of trusting client-submitted values.
  • Per-domain PHP version switch. Switching a domain's PHP version now runs through a root action using the correct pool naming, and validates the domain first.

Upgrade

  • Existing installs apply the hardening and fixes automatically on update; new installs include them in the installer.

Full changelog: https://github.com/tuxxin/iNetPanel/compare/v1.24.2...v1.24.3

v1.24.2

Apr 21, 2026

Bug Fixes

  • Installer fails on fresh Debian 12 (closes #15). The installer's helper ran commands in a backgrounded subshell that didn't have in PATH, so failed. Added a global PATH export near the top of and switched /// to absolute paths.
  • Unusable MariaDB / phpMyAdmin on fresh install (closes #14). Same root cause as #15: when exited early, the installer skipped the sudoers file, phpMyAdmin storage DB, and panel deploy. Without the sudoers rule 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. was summing (the whole home dir) and the user's DB total on every row. Now a new SQLite table tracks per-domain file usage, 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 ran live for every user. New populates the SQLite cache every 10 minutes via cron, and fires immediately after add/remove/create/delete via background calls. The API now reads cached rows — O(ms) regardless of dataset size.

Docs / Packaging

  • README install command now pre-installs for fresh Debian 12 installs ().
  • now also generates alongside — 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.

Public Repositories

iNetPanel

Self-hosted hosting control panel using Cloudflare Zero Trust Tunnels to securely route multiple domains from a single machine, even on a residential ISP without opening firewall ports. Includes SSL, Multi-PHP, DB, DNS, Backups, WireGuard management and more.

● PHP ⭐ 40
Updated Jun 14, 2026
View on GitHub Live

qr-track

A Lightweight, Self-Hosted Dynamic QR Code Tracking & Management System

● PHP ⭐ 6
Updated May 30, 2026
View on GitHub Live

worldip-sdk

Future home of the WorldIP.io SDK (IP / ASN / range / org lookup, PTR + forward DNS). Coming soon.

Updated May 17, 2026
View on GitHub

webshot.site-sdk

Official client SDKs for the Webshot screenshot API — capture any URL as PNG, JPG, WebP, or PDF. JavaScript/TypeScript, Python, PHP.

● Python
Updated May 10, 2026
View on GitHub Live

Twilio_Router

Lightweight Twilio Voice call router in PHP featuring automatic holiday closures, business hours logic, and voicemail routing.

● PHP
Updated Mar 15, 2026
View on GitHub Live

Photoshop_Scripts

Photoshop scripts to make bulk work easier!

● JavaScript
Updated Mar 15, 2026
View on GitHub

MP4Streaming

Psuedo Streaming an MP4 with PHP

● PHP ⭐ 52
Updated Mar 15, 2026
View on GitHub

TiCore

Tuxxin TiCore Secure PHP Framework - Minimal, Secure and includes a fully integrated SEO suite.

● PHP
Updated Mar 15, 2026
View on GitHub Live