Skip to main content

Install iNetPanel

Fully automated installation on a clean Debian 12 or 13 server. Host your own websites from home in minutes.

Watch the Full Installation

Install command

apt-get install -y curl && bash <(curl -s https://inetpanel.info/latest)

Run this as root on a clean Debian 12 or 13 server via SSH.

Requirements

  • Clean Debian 12 or 13 (Bookworm or Trixie) — no existing Apache, nginx, PHP, MariaDB, or MySQL installed
  • Root SSH access to a dedicated server, VPS, LXC container, or bare-metal machine
  • Free Cloudflare account with a domain pointed to Cloudflare DNS (optional — see note below)
  • Cloudflare API Token with Zone DNS Edit permissions (optional — see note below)
  • Minimum 2 GB RAM recommended (4+ GB for production use); 15 GB disk minimum (20+ GB recommended)
  • Server can reach the internet (outbound only — no inbound ports needed)
ⓘ Cloudflare is optional but strongly recommended.
Without Cloudflare, iNetPanel runs in manual port-based mode. Zero Trust Tunnel, DNS management, SSL via DNS-01, Email Routing, and DDNS will not be available. Hosted websites would need to be accessed by IP:PORT directly — suitable for local network use only. Public internet hosting from home requires Cloudflare.

What the installer sets up

Cloudflare Tunnel

cloudflared daemon via Zero Trust — no open ports needed

Apache 2.4

Web server for hosted sites on ports 1080+

lighttpd

Lightweight web server for the admin panel. Serves it over HTTPS on 443 and redirects plain HTTP.

PHP 8.5 FPM

Via sury.org repo with common extensions. Upload limit 100 MB.

MariaDB

Database server (localhost only, no public access). Timezone tables auto-loaded.

phpMyAdmin

On dedicated Apache vhost at port 8443/8888 with SSO auto-login

WireGuard VPN

Optional — lock down admin access to VPN peers only

fail2ban + firewalld

Intrusion prevention and zone-based firewall

Certbot

Let's Encrypt certificate management

vsftpd

FTP server with chroot, whitelist mode, passive ports 40000-50000

iNetPanel

Cloned from GitHub, deployed to /var/www/inetpanel

dnsutils

DNS utilities (dig) for hostname verification and DNS checks

6-step setup wizard

  1. Admin Account

    Set your iNetPanel admin username and password with confirmation. Client-side validation ensures strong passwords. Stored with bcrypt hashing. Since 1.26 the wizard is served over HTTPS, so this password never crosses the network in clear text.

  2. Timezone & Panel Name

    Select your server timezone (automatically synced to MariaDB) and set your panel's display name. MariaDB timezone tables are loaded automatically.

  3. Cloudflare Connection

    Enter your Cloudflare API credentials with a "Test Connection" verification button. Or skip to use manual port-based mode without Cloudflare. Like every other step, this one is served over HTTPS.

  4. DDNS & VPN (Cloudflare only)

    Configure DDNS hostname to keep a Cloudflare A record updated with your IP. Set up WireGuard VPN for remote access to admin/client UI, FTP, and SSH.

  5. Server Hostname

    Configure your server hostname. If Cloudflare is set up, a "Verify" button checks DNS existence and creates the A record automatically. Shows server IP with guidance on private vs public addresses.

  6. Complete

    Final installation execution. A lock file is created to prevent re-running the installer. All services are started and verified.

🔒 New in 1.26 — the setup wizard runs over HTTPS.
The wizard collects your admin password and your Cloudflare API key. Both used to travel over plain HTTP. The installer now generates a self-signed certificate, serves the panel over TLS on port 443 and redirects HTTP, so those credentials are encrypted from the first step.

Your browser will warn you once — that is expected for a self-signed certificate, and the installer's closing message explains it. Swap in a trusted certificate whenever you like:
inetp panel_ssl <hostname>

Already running 1.25 or earlier? Existing installs are unaffected and need no action — run the same command to move an existing panel onto HTTPS.
ⓘ Setup is fast.
The 6-step wizard takes under 3 minutes to complete (about 45 seconds if you have your Cloudflare details ready).

What you'll see after setup

iNetPanel dashboard after installation

Admin Dashboard

Service manager showing running services

Service Manager

Accessing your panel

After setup completes, iNetPanel is accessible via the Cloudflare Tunnel URL displayed in the terminal. For home networks, access is local; for dedicated or VPS servers, you can use DDNS to reach it remotely via VPN. SSH access is on port 1022.

The panel is served over HTTPS. On a fresh install that is a self-signed certificate, so your browser will warn you the first time — this is expected. Run inetp panel_ssl <hostname> to replace it with a trusted certificate.

Port & service reference

Component Technology Port Notes
Admin Panellighttpd + PHP-FPM80/443iNetPanel admin & client UI
phpMyAdminApache2 (signon auth)8443/8888SSO auto-login from admin & client portals
Hosted SitesApache2 SSL vhosts1080+One port per hosting account, proxied via Cloudflare Tunnel
Panel DatabaseSQLite (WAL mode)—Local file, not a network service
Site DatabasesMariaDB3306Localhost only — no remote access
WireGuard VPNWireGuard1443/UDPOptional — only externally open port when lockdown enabled
Cloudflare Tunnelcloudflared—Outbound only — no inbound ports required
Firewallfirewalld + fail2ban—Zone-based, SSH on 1022, all others blocked by default
FTPvsftpd21, 40000–50000Chroot, whitelist-only. Passive mode ports configured and firewalled.
SSHOpenSSH1022Non-standard port to reduce scan noise

CLI tools — inetp

35 built-in commands available via inetp <command> after installation. The most commonly used are listed below; run inetp --help for the full list.

Command Description
inetp statusServer health summary — uptime, load, disk, RAM, swap, service statuses, SSL expiry, backup age, pending updates
inetp benchmarkQuick benchmarks — disk I/O speed, network throughput, PHP opcache stats, MySQL query time
inetp reset_password --username USERReset FTP/SSH/MySQL password for a hosting user
inetp disk_reportDisk usage breakdown per user/domain with top largest files and directories
inetp auditSecurity audit — file permissions, PHP version check, open ports, weak MySQL passwords, fail2ban status
inetp malware_scan --username USERScan user files for common PHP backdoors and webshells
inetp cleanupClear PHP sessions, tmp files, old logs, orphaned FPM pools, stale backups
inetp rotate_logsForce logrotate on all user and system logs
inetp db_repairCheck and repair all MariaDB tables
inetp dns_check --domain DOMAINDNS propagation, SSL chain validation, HTTP response test, Cloudflare tunnel status
inetp speedtestServer bandwidth test (curl-based, no external dependencies)

Frequently asked questions

A clean Debian 12 (Bookworm) or Debian 13 (Trixie) server (no existing web stack), root SSH access, and optionally a free Cloudflare account with a domain pointed to Cloudflare DNS and an API token. Cloudflare is not required but enables the full feature set including Zero Trust Tunnel.

No. iNetPanel uses Cloudflare Zero Trust Tunnel (cloudflared). Your server's IP is never exposed. You can host from behind CGNAT, home NAT, corporate firewalls, or any ISP that blocks inbound ports — perfect for home hosting.

Docker is not recommended — iNetPanel is a full hosting stack with system services, cron jobs, and kernel-level networking (WireGuard) that don't suit container constraints. It runs best on a dedicated server, VPS, or LXC container. LXC has the smallest footprint and works well for home lab deployments.

The automated install takes 5–10 minutes depending on your server's internet speed. The 6-step setup wizard takes under 3 minutes (about 45 seconds if you go fast).

iNetPanel currently supports Debian 12 (Bookworm) and Debian 13 (Trixie) only. Debian 12 is in LTS until June 2028, so existing servers do not need to be migrated. Support for additional distributions may be added in future releases.

Because 1.26 serves the setup wizard and panel over HTTPS using a self-signed certificate, so your credentials are encrypted from the very first step. A self-signed certificate is not in your browser's trust store, so it warns once — that is expected, and the installer's closing message explains it. Run inetp panel_ssl <hostname> to replace it with a trusted certificate.

Go to Settings → Updates in the admin panel and click "Update Now". The updater downloads the latest release from GitHub, applies file changes, runs database migrations, rebuilds sudoers rules, and patches phpMyAdmin config automatically.

iNetPanel includes 35 CLI commands via the inetp tool: add_domain, audit, audit_orphans, backup_accounts, benchmark, check_domains, cleanup, create_account, create_user, db_repair, delete_account, delete_user, disk_report, dns_check, firewall, fix_permissions, list, malware_scan, optimize_images, optimize_server, panel_update, rebuild_pools, rebuild_vhosts, remove_domain, reset_password, restore_account, rotate_logs, speedtest, ssl_manage, status, suspend_account, update, wg_peer, and wireguard_setup. Run inetp --help on the server for the full list; the CLI table above covers the most commonly used commands.
⚠ Fresh install only
The installer requires a clean Debian 12 or 13 system. Do not run on a server with an existing web stack — it will conflict with Apache, nginx, or existing PHP installations.

Installed stack

lighttpd Apache 2.4 PHP 8.5 MariaDB Cloudflare WireGuard Let's Encrypt fail2ban
Current: v1.27.3

Latest releases

iNetPanel ships regular updates — here are the newest.

v1.27.3 Latest
Aug 24, 2026
v1.27.3 — Hotfix: the weekly Cloudflare RemoteIP refresh deleted its o

Hotfix: the weekly Cloudflare RemoteIP refresh deleted its own Apache config every Monday. /etc/cron.d files do not inherit PATH f…

v1.27.2
Aug 22, 2026
v1.27.2 — Hotfix: restores admin hook scripts, which 1.27.1 silently d

Hotfix: restores admin hook scripts, which 1.27.1 silently disabled. 1.27.1 repointed the hook sudoers grant out of /tmp but left…

v1.27.1
Aug 21, 2026
v1.27.1 — Security: privileged-command input is no longer staged in wo

Security: privileged command input is no longer staged in world writable /tmp. Same root cause as GHSA mjmx xpqq p2h8 in a differe…

Share: 𝕏 Twitter Facebook LinkedIn