Get License
v… Stable

Kinsmen Web Panel

A modern, full-featured hosting control panel built for AlmaLinux servers. Manage accounts, domains, email, databases, DNS, SSL, backups, and more — all from a clean, fast web interface.

Fast & Lightweight

Built on CodeIgniter 4 with optimised PHP-FPM pools per account

Secure by Default

Isolated user accounts, ModSecurity, 2FA, SELinux, firewall management

Auto-Healing

Built-in cron jobs monitor load, mail delivery, and DNS health

Requirements

Kinsmen Web Panel requires a fresh AlmaLinux 8 or 9 VPS or dedicated server. Do not install on a server with an existing control panel (cPanel, Plesk, etc.).

Component Minimum Recommended
OS AlmaLinux 8 AlmaLinux 9
CPU 2 cores 4+ cores
RAM 2 GB 8 GB+
Disk 20 GB SSD 80 GB+ SSD
PHP 8.2 (CLI for panel) 8.3
Root Access Required — runs as root
Ports open 22 (SSH), 80, 443, 2082, 2083, 2095, 25, 587, 465, 143, 993, 110, 995
Port 25 outbound: Many cloud providers (AWS, GCP, Azure, Hetzner) block port 25 by default. You'll need to either request unblocking or configure SMTP relay through another server.

Installation

KWP is a licensed commercial panel. Installation requires an active license with your server's primary IP registered in your client area. The installer is a single command — it prompts for your admin credentials, verifies the license, then configures the full stack automatically.

Step 1 — Purchase a License

Visit your client area and purchase a Kinsmen Web Panel license. During checkout you will be prompted to enter your server's primary IP address. This is the IP that the panel will be installed on.

After purchase, the service will appear in your client area. You can update the server IP at any time by editing the service — no support ticket required.

Step 2 — Prepare Your Server

KWP requires a fresh AlmaLinux 8 or 9 (or compatible RHEL-based) server. Do not install on a server with an existing control panel (cPanel, CWP, etc.) or web stack — the installer configures nginx, Apache, PHP-FPM, MariaDB, Postfix, Dovecot, and BIND from scratch.

  • AlmaLinux 8 or 9 (Rocky Linux / RHEL 8/9 also supported)
  • Minimum 2 GB RAM, 20 GB disk, 1 vCPU
  • Root SSH access
  • Outbound internet access (for package downloads)
  • Server primary IP registered in your license

Set the server's fully-qualified hostname before running the installer — it is baked into the panel config, nginx vhosts, and SSL certificates:

hostnamectl set-hostname srv1.yourhost.com

Step 3 — Run the Installer

Log in as root and run:

bash <(curl -fsSL https://client.thekinsmen.net/kinsmen-panel/install.sh) "YourAdminPassword"

The installer verifies your license, downloads the panel, and configures the full stack automatically. The process takes 5–15 minutes depending on server speed. Admin username is always root.

Optionally, pass server details as flags to pre-populate all settings in one shot — no post-install configuration needed:

bash <(curl -fsSL https://client.thekinsmen.net/kinsmen-panel/install.sh) \
    "YourAdminPassword" \
    --hostname srv1.yourhost.com \
    --ns1 ns1.yourhost.com \
    --ns2 ns2.yourhost.com \
    --email [email protected]
All flags are optional. If omitted, hostname is auto-detected from the OS, and NS1/NS2 can be set later via Admin → Settings — just do so before creating the first hosting account.

What the Installer Configures

License verification

The installer checks your server's primary IP against your active subscription. If no active license is found for this IP, the download is refused. Purchase or update your license at client.thekinsmen.net.

System packages

Installs nginx, Apache (port 8080 backend), MariaDB, Postfix, Dovecot, BIND, Redis, certbot, and PHP 7.4 / 8.1 / 8.3 via Remi repositories.

Panel application

Deploys KWP to /var/www/kinsmen-panel, creates the SQLite panel database, and sets up your admin account with the email and password you provided.

Service configuration

Configures nginx to serve the admin panel on port 2083 and the user panel on port 2082 via FastCGI with a dedicated PHP-FPM pool.

Mail stack

Configures Postfix with virtual mailboxes, Dovecot with LMTP delivery, SpamAssassin, and OpenDKIM for per-domain DKIM signing.

Security hardening

Configures firewalld, SELinux, Fail2ban, and ModSecurity. Sets up the panel's own SSL certificate for HTTPS on port 2083.

Maintenance crons

Installs automatic cron jobs: mail repair (every 5 min), high load fix (every 5 min), auto SSL issuance, DNS zone health, and Redis cache scan.

Post-Installation

If you used the --hostname, --ns1, --ns2, and --email flags, everything is pre-configured and you can create accounts immediately. Otherwise, log in to the admin panel and set these before creating any hosting accounts:

  • Server hostname — Admin → Settings → General
  • Nameservers NS1 and NS2 — required for DNS zone creation
  • Admin email — for notifications and SSL certificates
NS1 and NS2 must be set before creating the first account — DNS zone creation will fail with a clear error until they are configured.

First Login

After installation, access the panels at:

Panel URL Default Credentials
Admin Panel http://your-server-ip:2083 root / password you set during installation
User Panel http://your-hostname:2082 Created per hosting account
phpMyAdmin https://your-hostname:2095 Auto-login via admin panel
Webmail https://webmail.domain.com Email address + password
Enable Two-Factor Authentication immediately after first login. Go to Admin → Two-Factor Auth.

Admin Dashboard

The dashboard provides a real-time overview of server health, account statistics, and quick-action buttons.

Server Metrics

Live widgets update every 10 seconds showing:

  • CPU usage — overall and per-core breakdown
  • Memory — used, buffered, cached, and swap
  • Load average — 1, 5, and 15-minute averages
  • Network I/O — inbound and outbound traffic rates
  • Running processes — top resource consumers
  • Service status — nginx, Apache, MySQL, Postfix, Dovecot, BIND, Redis

Quick Actions

Buttons at the top of the dashboard provide instant access to common repairs:

Button What it does
Fix 503 Errors Restarts all crashed PHP-FPM pools; recreates missing sockets
Fix High Load Detects D-state worker storms and kills runaway processes
Fix HTTPS Redirect Corrects broken HTTP→HTTPS redirect configs
Clear Panel Cache Clears CI4's file cache (useful after config changes)
High load but low CPU? This is the D-state signature — processes blocked on disk I/O. Use Fix High Load or check which account has the most D-state workers with ps aux | awk '$8=="D"' | awk '{print $1}' | sort | uniq -c | sort -rn.

Account Management

Each hosting account has its own Linux user, PHP-FPM pool, nginx/Apache vhost, DNS zone, mail domain, and panel login.

Creating an Account

Go to Admin → Accounts → Create Account. Fill in:

  • Username — lowercase, alphanumeric (becomes the Linux username)
  • Password — panel login password (use the generate button)
  • Primary domain — e.g. example.com
  • PHP version — 7.4, 8.1, or 8.3
  • Package — resource limits template

Account Detail Page

Click any account to access its detail page, which includes:

  • Domain list with per-domain cache, PHP version, and SSL status
  • Email accounts
  • Databases (MySQL + MongoDB) with Dump and Restore buttons
  • FTP accounts
  • Activity log and login history
  • Resource limits editor (PHP workers, memory, timeouts)

Resource Limits

Click Resource Limits on the account header to set:

Setting Description Default
PHP Workers Max concurrent PHP-FPM processes for this account 5
Request Timeout Max PHP execution time per request (seconds) 60
Disk Quota Maximum disk space in MB (-1 = unlimited) Package default
Bandwidth Monthly bandwidth limit in MB (-1 = unlimited) Package default

Account Actions

  • Login to Control Panel — auto-login to the account's user panel
  • Fix File Permissions — resets ownership and ACLs for the home directory
  • WooCommerce Mode — one-click WooCommerce optimisation (see WooCommerce Mode)
  • Bulk SSL — issues Let's Encrypt wildcard certs for all account domains at once
  • Suspend / Unsuspend — blocks HTTP access while keeping data intact
  • Terminate — permanently deletes the account, all files, databases, and email
Terminate is irreversible. All files, databases, email accounts, and DNS zones are permanently deleted. Create a remote backup before terminating.

Packages

Packages define resource limits applied to accounts at creation. Go to Admin → Packages to manage them.

Package Settings

Setting Description
Max Domains Addon domains allowed (-1 = unlimited)
Max Subdomains Subdomains per account
Max Email Accounts Email addresses per account
Max Databases MySQL databases per account
Disk Quota (MB) Storage limit
Bandwidth (MB) Monthly transfer limit
PHP Workers Max PHP-FPM children
Request Timeout PHP-FPM request_terminate_timeout

Domain Management

KWP supports four domain types per account.

Domain Types

Type Description Has DNS Zone
Main Primary domain created with the account Yes
Addon Independent domain with its own document root and PHP-FPM pool Yes
Subdomain Subdomain of the main domain; document root at ~/subdomain.domain.com/ A record only
Parked Alias domain; points to the main domain's content via CNAME CNAME zone

Per-Domain Controls

From the account detail page, each domain row has:

  • PHP version selector — change PHP version inline
  • Cache toggle — enable/disable nginx proxy cache
  • Cache clear — purge cached files immediately
  • Remove — delete domain with full cleanup (email, SSL, nginx configs, DNS)
Removing a domain automatically cleans up: nginx vhosts, PHP-FPM pool, DNS zone (or A record for subdomains), email accounts on that domain, SSL certificate, and nginx cache files.
<

DNS Management

KWP manages BIND DNS zones for all hosted domains. It also supports Cloudflare DNS as an optional overlay.

DNS Zone Records

Go to Admin → DNS to view all zones. Click a domain to edit its records.

Each zone is automatically created with:

  • SOA record pointing to NS1
  • NS records (NS1 and NS2 from Server Settings)
  • A record for root domain → server IP
  • A record for www
  • A records for mail, ftp, panel, webmail
  • MX record pointing to mail.domain.com
  • SPF TXT record
  • DMARC TXT record
  • DKIM TXT record (auto-generated 2048-bit key)

Adding Records

Supported record types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA.

Cloudflare DNS Integration

When enabled in Admin → Cloudflare DNS, KWP can manage DNS through Cloudflare's API. Domains can be individually opted in — it is not automatic when you add a domain.

To add a domain to Cloudflare:

  1. Enable Cloudflare and save your API token in Admin → Cloudflare DNS
  2. Use Recreate All CF Zones to push existing domains, or add them individually through the DNS zone editor
Cloudflare proxy (orange cloud) is only enabled after SSL is successfully issued. Enabling it before SSL causes Cloudflare to upgrade HTTP to HTTPS before the cert is ready.

SSL / HTTPS

KWP issues wildcard SSL certificates (e.g. *.domain.com + domain.com) via Let's Encrypt using DNS-01 challenge — meaning no HTTP challenge port is needed.

Auto SSL

SSL is queued automatically when a domain is created. Once DNS propagates, the panel issues the cert and updates all nginx vhosts to HTTPS. Status is shown in the domain list.

Bulk SSL

Click Bulk SSL on the account detail page to immediately queue SSL for all domains on an account.

Manual SSL (Admin)

Go to Admin → SSL to view all certificates, force renewals, or check expiry dates.

Host SSL

The panel hostname itself (port 2083) also needs SSL. Go to Admin → Host SSL to issue a certificate for the panel's own domain.

Mail SNI

After SSL is issued, KWP automatically configures Dovecot and Postfix SNI so mail.domain.com, imap.domain.com, smtp.domain.com etc. all present the correct wildcard certificate. This runs via Admin → Mail Delivery → Apply Mail SNI and also runs automatically after each SSL issuance.

Email Management

KWP provides a full mail stack: Postfix (SMTP/submission), Dovecot (IMAP/POP3/LMTP), OpenDKIM, SpamAssassin, and Roundcube webmail.

Creating Email Accounts

From the account detail page, scroll to Email Accounts and click Add Email. Each account gets:

  • A Dovecot mailbox in /var/vmail/domain.com/user/Maildir/
  • An entry in Postfix virtual_mailboxes
  • A hashed password in /etc/dovecot/passwd.domain.com
  • A quota limit (configurable per-mailbox)

Mail Client Settings

Protocol Server Port Security
IMAP mail.yourdomain.com 993 SSL/TLS
POP3 mail.yourdomain.com 995 SSL/TLS
SMTP mail.yourdomain.com 587 STARTTLS
SMTP mail.yourdomain.com 465 SSL/TLS

SMTP Relay

If outbound port 25 is blocked (common on cloud providers), configure SMTP relay in Admin → Settings → Server Settings. The panel supports relaying through another KWP server or any external SMTP relay.

Mail Repair

Go to Admin → Mail Delivery → Repair Mail Delivery to fix stuck emails caused by Dovecot LMTP crashes. This also runs automatically every 5 minutes via cron.

Webmail

Roundcube webmail is available at https://webmail.yourdomain.com. Access it directly from the user panel via the Webmail button.

Databases

KWP supports both MySQL (MariaDB) and MongoDB databases per account.

MySQL Databases

From the account detail page or Admin → Databases:

  • Create databases with auto-prefixed names (e.g. username_dbname)
  • Passwords are stored and preserved across backups/restores
  • Open phpMyAdmin with single sign-on (no separate login)
  • Dump — exports DB to /home/username/dbname.sql
  • Restore — imports from /home/username/dbname.sql (file must exist first)
Migrating a database: Transfer mydb.sql to /home/username/mydb.sql via SFTP, create the empty database mydb in the panel, then click Restore.

MongoDB Databases

If MongoDB is enabled on the server (Admin → MongoDB), accounts can create MongoDB databases with dedicated users. Connection strings are available in the user panel.

phpMyAdmin

Access phpMyAdmin at https://your-server:2095. Admin auto-login is available from the admin panel. Each account can also access their own databases via the user panel.

Backups

KWP includes both local and remote backup capabilities.

Local Backups

From Admin → Backups, create on-demand backups for any account. A backup includes:

  • All files in /home/username/
  • All MySQL databases (SQL dumps)
  • MongoDB databases (mongodump format)
  • Email accounts and mail content (/var/vmail/)
  • Account metadata (domain list, package, PHP version)
  • Database credentials (for seamless restore)

Remote Backups

Configure a remote backup server in Admin → Settings → Remote Backup. Supports SSH/rsync to any Linux server.

  1. Generate an SSH key pair using the Generate Key button
  2. Add the public key to ~/.ssh/authorized_keys on the backup server
  3. Test the connection with Test Connection
  4. Enable automated backups on a schedule (daily/weekly/monthly)
  5. Use Backup Account to back up a single account on demand

Restore

To restore a remote backup:

  1. Click Restore from Remote on the backups page
  2. Select the server and account
  3. Choose the backup file
  4. Click Restore — files, databases, email accounts, and DNS are all restored automatically
Database passwords are preserved during restore. After restoring from a backup to a different server, wp-config.php and other config files do not need manual password updates.

Backup Log

The live backup log is shown directly in the Remote Backup card on the backups page. It updates in real-time while a backup is running and shows the last 50 lines of the log.

PHP Manager

Go to Admin → PHP Manager to install, remove, and configure PHP versions server-wide.

Supported Versions

KWP supports PHP 7.4, 8.1, 8.2, and 8.3 simultaneously via Remi SCL repositories. Each account can run a different PHP version.

PHP Extensions

Install or remove extensions per PHP version. Common extensions (redis, imagick, gd, zip, mbstring, etc.) are available with a single click.

Per-Account PHP Settings

PHP settings can be customised per-account via User Panel → PHP Settings. Adjustable values include:

  • memory_limit
  • upload_max_filesize and post_max_size
  • max_execution_time
  • disable_functions
  • Custom php.ini values

Node.js Manager

KWP supports running Node.js applications per account. Go to Admin → Node.js to manage all apps across all accounts.

Creating a Node.js App (User Panel)

Navigate to Node.js

In the user panel, go to Node.js Apps.

Create the app

Enter app name, select the domain, set the entry file (e.g. app.js), port, and root path. Optionally run npm install immediately from the modal.

Start the app

Click Start. The panel configures nginx to proxy requests to the app's port and starts it with PM2-style process management.

Deploy code changes

Upload new files via SFTP or the file manager, then click Restart in the Node.js apps list.

npm Install

The npm Install button runs npm install in the app's root directory. Flags (--production, --legacy-peer-deps, --force) can be selected from the modal.

Security

Firewall

Go to Admin → Firewall to manage firewalld rules. Add/remove allowed ports, block specific IPs, and view the current ruleset.

ModSecurity

Admin → ModSecurity controls the Web Application Firewall. Toggle ModSecurity per domain and view recent blocks and alerts. The panel ships with a pre-configured whitelist for KWP itself.

SELinux

Manage SELinux mode from Admin → SELinux:

  • Permissive — logs violations without blocking (recommended for most setups)
  • Enforcing — actively blocks policy violations (may break some apps)
  • Disabled at boot — disables SELinux on next reboot

You can also mask/unmask the setroubleshootd daemon which can consume significant CPU on busy servers.

Shell Access

By default, hosting accounts have /sbin/nologin as their shell. Go to Admin → Shell Access to grant or revoke SSH access per account.

IP Manager

Manage IP addresses assigned to the server. Block specific IPs from accessing hosted sites or the panel itself.

Two-Factor Authentication

Enable TOTP 2FA for the admin login at Admin → Two-Factor Auth. Supported with any TOTP app (Google Authenticator, Authy, Bitwarden, etc.).

Services

Go to Admin → Services to start, stop, and restart core server services without SSH access.

Manageable services: nginx, Apache httpd, MariaDB, Postfix, Dovecot, BIND (named), Redis, PHP-FPM (all versions), OpenDKIM, SpamAssassin.

WooCommerce Mode

WooCommerce Mode is a one-click optimisation for accounts running WooCommerce ecommerce sites. Click the WooCommerce button on any account's detail page to enable it.

What it enables

  • Scaled PHP workers — automatically calculates worker count based on number of WordPress installs: (sites × 6) + 4 workers
  • WooCommerce-aware nginx cache — caches product and category pages, but automatically bypasses cache for cart, checkout, my-account, and any WooCommerce AJAX requests
  • Memory limits — patches all wp-config.php files with WP_MEMORY_LIMIT=256M, WC_MEMORY_LIMIT=256M, and WP_MAX_MEMORY_LIMIT=512M
  • Extended timeout — sets request_terminate_timeout to 120 seconds for long-running cart/checkout operations

Cache bypass rules

When cache is enabled for a WooCommerce site, the following requests always bypass the cache:

  • All POST requests (form submissions, add-to-cart)
  • URLs with query strings (WC AJAX calls use ?wc-ajax=)
  • WordPress admin, login, cron pages
  • /cart/, /checkout/, /my-account/, /wc-api/, /wp-json/wc/
  • Logged-in users (WordPress session cookie present)
  • Active WooCommerce sessions (woocommerce_items_in_cart cookie present)
With WooCommerce Mode enabled, cache can stay ON for the domain. Product and category pages load from cache (fast), while cart and checkout always hit PHP directly (correct behaviour).

Notifications

Admins can send notifications to individual users or broadcast to all users.

Sending a Notification

From any account's detail page, click Send Notification. Enter a title and message. Enable Broadcast to send to all accounts simultaneously.

User Experience

Users see notifications via:

  • The bell icon in the top navigation bar — shows an unread count badge and a dropdown with the 5 most recent messages
  • An amber warning bar in the dashboard if they have unread notifications
  • The full Notifications page (/panel/notifications) with the complete list and delete options

The bell badge updates every 60 seconds automatically and immediately after a backup is triggered.

Settings

Settings are split into dedicated pages accessible from Admin → Administration in the sidebar.

Page What you configure
Server Settings Hostname, server IP, nameservers (NS1/NS2), SSH port. Apply to all DNS zones with bulk actions.
Branding Panel logo, favicon, panel name, admin email, panel URL. Also the License Key field.
Announcement A sticky HTML banner shown to all users in the user panel. Enable/disable without deleting the message.
Mail Delivery SMTP settings for panel outbound email (password resets, notifications). Mail SNI repair button.
Host SSL Issue a Let's Encrypt cert for the panel hostname (port 2083).
SELinux Set SELinux mode; manage setroubleshootd.
Cloudflare DNS API token, enable/disable per-domain, bulk recreate zones.
Admin Password Change the panel admin login password (also updates the Linux root password).
Two-Factor Auth Enable/disable TOTP 2FA for admin login.
Updates Check for panel updates. Apply via CLI: bash /opt/kinsmen-panel/scripts/update_panel_kwp.sh

User Panel — Dashboard

The user panel (http://server:2082) is the customer-facing interface. Each hosting account gets its own login.

The dashboard shows:

  • Account resource usage (disk, bandwidth, email count, database count)
  • Server nameservers for DNS delegation
  • Recent login activity
  • Quick-access feature cards
  • Any active announcements from the admin
  • Unread notification alert

User Panel — Domains

Users can manage their own domains, subdomains, and parked domains without admin intervention.

Adding an Addon Domain

Go to Domains

Navigate to Domains in the user panel sidebar.

Enter the domain

Type the domain name and select the PHP version. The domain must already be pointing to your server's nameservers.

Wait for SSL

The panel automatically queues an SSL certificate. Once DNS propagates (usually 1–5 minutes), HTTPS is active.

Nginx Cache

Each domain has a cache toggle. When enabled, nginx caches static pages for 1 hour. WooCommerce bypass rules apply automatically (see WooCommerce Mode).

Domain Redirects

Set up HTTP redirects (301/302) from any domain or path to another URL.

User Panel — Email

Users manage all email features from Email in their panel sidebar.

Features

  • Email Accounts — create, delete, change passwords, set quotas
  • Forwarders — forward an address to another email
  • Autoresponders — vacation messages and auto-replies
  • PHP Mail — configure SMTP credentials for wp_mail() / PHP mail()
  • Spam Filter — SpamAssassin configuration
  • Webmail — direct link to Roundcube for each email account
PHP mail() is disabled by default. Users must configure their own SMTP credentials under Email → PHP Mail to send email from their applications.

User Panel — Databases

Users can create and manage MySQL and MongoDB databases from their panel.

MySQL

  • Create databases — names are automatically prefixed with username
  • Create additional database users with specific permissions
  • Change database user passwords
  • Open phpMyAdmin with automatic sign-on

MongoDB

If enabled by the admin, users can create MongoDB databases. The connection string and credentials are displayed in the panel.

User Panel — FTP

Create FTP accounts for uploading files. Each FTP account is scoped to a specific directory.

Setting Value
FTP Host ftp.yourdomain.com
Port 21
Protocol FTP with Explicit TLS (FTPES)
Username FTP account username

User Panel — Backups

Users can create, download, and restore their own backups without admin help.

  • Create Backup — packages files + databases into a single archive
  • Download — download the archive directly from the browser
  • Restore — restore a previously created backup
  • Restore from CWP / cPanel — import backups from CWP or cPanel format (for migrations)

Script Installer

The script installer (accessible from the user panel) allows one-click installation of popular web applications.

Supported Applications

WordPress

+ WooCommerce ready

Joomla 5

CLI installer

Drupal

Latest stable

Laravel

Via Composer

CodeIgniter 4

Via Composer

Grav CMS

Flat-file CMS

WordPress Installation

Open Script Installer

Navigate to Script Installer in the user panel.

Select WordPress

Click the WordPress card. Choose the domain, installation path (/ for root or /blog for subdirectory), and create a database.

Set admin credentials

Enter the WordPress admin username, password, and email. Use the generate button for the password.

Install

Click Install. The panel downloads WordPress, runs the database setup (via WP-CLI if available, PHP bootstrap otherwise), and configures Redis object cache automatically.

WordPress installations automatically include Redis object cache configuration. If Redis is running, the cache drop-in is installed and enabled immediately — no plugin activation needed.

User Panel — Node.js Apps

Run Node.js applications alongside traditional PHP hosting on the same account.

Creating a Node.js App

  • Set the app name, entry file (e.g. app.js), and port
  • Assign a domain — nginx proxies traffic from that domain to your app's port
  • Run npm install directly from the panel after creation

App Controls

From the Node.js apps list: Start, Stop, Restart, npm Install, view Logs, and Delete.

CLI Reference

All panel actions are backed by shell scripts in /opt/kinsmen-panel/scripts/. Every script must be run as root. Scripts that modify panel state (accounts, DNS zones, email) also update the SQLite panel database so changes are reflected immediately in the UI.

The panel's PHP-FPM runs as apache with a sudoers rule allowing it to call these scripts. Running them directly as root achieves the same result.

Accounts

ActionCommand
Create account bash /opt/kinsmen-panel/scripts/create_account.sh <username> <password> <domain> [php_version]
Terminate account bash /opt/kinsmen-panel/scripts/terminate_account.sh <username>
Suspend account bash /opt/kinsmen-panel/scripts/suspend_account.sh <username>
Unsuspend account bash /opt/kinsmen-panel/scripts/unsuspend_account.sh <username>
Change admin password bash /opt/kinsmen-panel/scripts/change_admin_password.sh <new_password>

Domains

ActionCommand
Add addon / subdomain bash /opt/kinsmen-panel/scripts/add_domain.sh <username> <domain> [php_version]
Remove domain bash /opt/kinsmen-panel/scripts/remove_domain.sh <username> <domain>
Set PHP version bash /opt/kinsmen-panel/scripts/set_php_version.sh <username> <domain> <version>
Version: 7.4, 8.1, 8.3
Fix permissions bash /opt/kinsmen-panel/scripts/fix_permission.sh <username>

DNS

ActionCommand
Create DNS zone bash /opt/kinsmen-panel/scripts/create_dns_zone.sh <domain> <ip> <ns1> <ns2>
Delete DNS zone bash /opt/kinsmen-panel/scripts/delete_dns_zone.sh <domain>

SSL

ActionCommand
Issue Let's Encrypt cert bash /opt/kinsmen-panel/scripts/issue_ssl.sh <domain> <username> <email> [force] [rfc2136|cloudflare]
Revoke cert bash /opt/kinsmen-panel/scripts/revoke_ssl.sh <domain> <username>
Apply mail SNI (all domains) bash /opt/kinsmen-panel/scripts/setup_mail_sni.sh [--rebuild]
--rebuild clears stale entries first

Email

ActionCommand
Create email account bash /opt/kinsmen-panel/scripts/create_email.sh <username> <email> <password> [quota_mb]
Delete email account bash /opt/kinsmen-panel/scripts/delete_email.sh <email>
Change email password bash /opt/kinsmen-panel/scripts/change_email_password.sh <email> <new_password>
Configure SMTP relay bash /opt/kinsmen-panel/scripts/setup_smtp_relay.sh <username> <domain> <smtp_host> <port> <smtp_user> <smtp_pass> [from_email] [tls|ssl|none]
Clear mail queue bash /opt/kinsmen-panel/scripts/clear_mail_queue.sh

FTP

ActionCommand
Create FTP account bash /opt/kinsmen-panel/scripts/create_ftp.sh <username> <ftp_user> <ftp_pass> <directory>
Directory is relative to /home/<username>/, e.g. public_html
Delete FTP account bash /opt/kinsmen-panel/scripts/delete_ftp.sh <ftp_user>
Change FTP password bash /opt/kinsmen-panel/scripts/change_ftp_password.sh <ftp_user> <new_password>

Databases

ActionCommand
Export database bash /opt/kinsmen-panel/scripts/dump_db.sh <db_name> <output_file> [owner]
Import database bash /opt/kinsmen-panel/scripts/restore_db.sh <db_name> <sql_file>

Backups

ActionCommand
Create account backup bash /opt/kinsmen-panel/scripts/create_backup.sh <username> <account_id>
Backup saved to /home/<username>/backups/
Restore from backup bash /opt/kinsmen-panel/scripts/restore_backup.sh <username> <backup_file_path>

Node.js Apps

ActionCommand
Start app bash /opt/kinsmen-panel/scripts/nodejs_app.sh start <username> <app_name> <port> <entry_file> <root_path>
Stop app bash /opt/kinsmen-panel/scripts/nodejs_app.sh stop <username> <app_name>
Restart app bash /opt/kinsmen-panel/scripts/nodejs_app.sh restart <username> <app_name>
Delete app bash /opt/kinsmen-panel/scripts/nodejs_app.sh delete <username> <app_name>

System

ActionCommand
Fix panel (FPM + nginx restart) bash /opt/kinsmen-panel/scripts/fix_panel.sh
Reload all services bash /opt/kinsmen-panel/scripts/reload_services.sh
Clear panel cache bash /opt/kinsmen-panel/scripts/clear_cache.sh
Clear server logs bash /opt/kinsmen-panel/scripts/clear_logs.sh
Enable PHP hardening bash /opt/kinsmen-panel/scripts/php-harden.sh
Disable PHP hardening bash /opt/kinsmen-panel/scripts/php-unharden.sh
Update panel bash /opt/kinsmen-panel/scripts/update_panel_kwp.sh

License Management

KWP requires an active license key tied to your server's IP address. Licenses are managed at client.thekinsmen.net.

Entering Your License Key

  1. Purchase a license at client.thekinsmen.net
  2. In the admin panel, go to Admin → Branding
  3. Scroll to the License section
  4. Enter your license key and click Save & Verify

License States

State Behaviour
Active Full panel functionality. No warnings shown.
Grace License expired within 7 days. Warning banner shown. Full functionality retained.
Unconfigured No license key entered. Warning banner shown in admin. Panel still functional during trial.
Blocked Expired past grace period or suspended. Panel shows license error page. Renew to restore access.
License checks are cached for 24 hours. If the license server is unreachable, the last known good status is used for up to 72 hours — your panel won't break during temporary network issues.

Updating the Panel

When a new version is available, an "Update Available" badge appears in Admin → Updates. Apply the update by running on the server:

bash /opt/kinsmen-panel/scripts/update_panel_kwp.sh

The updater verifies your license, downloads only changed files, runs database migrations, and reloads services automatically.

Troubleshooting

503 Service Unavailable on websites

Cause: PHP-FPM pool crashed or socket missing.

Fix: Use the Fix 503 Errors button on the admin dashboard, or run:

bash /opt/kinsmen-panel/scripts/fix_503.sh

High Server Load with Low CPU

Cause: D-state (uninterruptible I/O wait) processes from one or more accounts — typically caused by a bloated WordPress database (spam users, transients, stale WooCommerce sessions).

Fix: Use the Fix High Load button, or:

# Kill D-state workers for a specific account
pkill -9 -u username -f php-fpm

# Clear swap
swapoff -a && swapon -a

# Check D-state count
ps aux | awk '$8=="D"' | wc -l

Prevention: Enable WooCommerce Mode, enable Redis object cache, and regularly clean bloated database tables.

DNS Zone Records Disappeared

Cause: BIND journal conflict — the .jnl file's in-memory state overwrote the zone file.

Fix: The zone heal in update_panel.sh detects and auto-repairs blank zones on every update. To manually fix:

bash /opt/kinsmen-panel/scripts/create_dns_zone.sh domain.com SERVER_IP NS1 NS2

SSL Certificate Not Issuing

Cause: DNS hasn't propagated, or the RFC2136 TSIG key is misconfigured.

Check:

# Verify DNS resolves to your server
dig +short domain.com @8.8.8.8

# Check certbot logs
journalctl -u certbot --since "1 hour ago" | tail -30

Email Not Delivering (504 Timeout)

Cause: Dovecot LMTP crash due to corrupted mailbox index.

Fix: Use Admin → Mail Delivery → Repair Mail Delivery, or it auto-repairs every 5 minutes via cron.

phpMyAdmin Shows SSL Warning

Cause: The phpMyAdmin nginx vhost doesn't have SSL configured.

Fix: Run on the server:

bash /opt/kinsmen-panel/scripts/setup-phpmyadmin.sh

WooCommerce Cart Not Working with Cache

Cause: Cache is enabled without WooCommerce bypass rules.

Fix: Enable WooCommerce Mode (button on account detail page). This applies smart cache bypass rules that cache product pages but never cache cart/checkout.

Node.js App 502 Bad Gateway

Cause: The app crashed, isn't running, or is using the wrong port.

Fix: Go to User Panel → Node.js Apps → Restart the app. Check the app logs for errors.

Frequently Asked Questions

Can I migrate from cPanel or CWP?

Yes. The backup restore supports importing cPanel full backups and CWP (Control Web Panel) backup format. Go to Admin → Backups → Import cPanel or Import CWP.

How many websites can I host?

There is no hard limit. Account and domain limits are defined per Package. Server resources (CPU, RAM, disk) are the practical limit.

Can I run multiple PHP versions on the same server?

Yes. KWP runs PHP 7.4, 8.1, 8.2, and 8.3 simultaneously via Remi SCL. Each domain can use a different version, and you can change it at any time without affecting other accounts.

How is each account isolated?

Each account runs as its own Linux user with a dedicated PHP-FPM pool. File system access is restricted via open_basedir. Accounts cannot read each other's files.

Does KWP support WHMCS integration?

Yes. KWP includes a WHMCS integration module. Configure your WHMCS URL, API credentials, and identifier/secret in Admin → Settings → Server Settings. Accounts created in WHMCS are automatically provisioned.

Can I use Cloudflare with KWP?

Yes. Enter your Cloudflare API token in Admin → Cloudflare DNS. Cloudflare DNS management is opt-in per domain — not automatic. The orange cloud proxy is enabled automatically after SSL is issued for each domain.

How do I change the admin password?

Go to Admin → Admin Password. This updates both the panel login password and the Linux root password simultaneously.

What happens if my license expires?

After expiry, you have a 7-day grace period where the panel continues to work with an amber warning banner. After the grace period, the panel shows a license error page. Renewing your license at client.thekinsmen.net restores access within minutes (next license check cycle).

Can I move the panel to a different server IP?

Yes. Update the registered IP in your license at client.thekinsmen.net. The panel will re-verify automatically on the next check cycle (within 24 hours, or immediately after saving the license key).

Where are backups stored on the server?

Local backups are stored in /home/backups/username/. Remote backups are transferred via rsync to your configured backup server and the local copy is removed after successful transfer.

© 2026 Kinsmen Web Panel. All rights reserved.