<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[AdminsForum - aaPanel Getting Started Guides]]></title>
		<link>https://adminsforum.com/</link>
		<description><![CDATA[AdminsForum - https://adminsforum.com]]></description>
		<pubDate>Thu, 15 Oct 2026 06:08:11 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Check VPS Disk Space, Memory and CPU Load from SSH]]></title>
			<link>https://adminsforum.com/Thread-guide-check-vps-disk-space-memory-and-cpu-load-from-ssh</link>
			<pubDate>Wed, 14 Oct 2026 18:25:45 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-check-vps-disk-space-memory-and-cpu-load-from-ssh</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Before restarting services or increasing a VPS plan, check disk capacity, memory availability, CPU load and listening ports. These read-only SSH checks help identify the resource or component that needs closer investigation.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> Ubuntu 22.04.5 on our aaPanel Free 8.0.7 lab VPS. Commands inspect the server; they do not delete files, kill processes or change firewall rules. The recorded numbers are a point-in-time snapshot, not a performance benchmark or capacity guarantee.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=233" target="_blank" title="">vps-health-transcript-20261014.jpg</a> (Size: 100.01 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">Formatted transcript of the lab's disk, memory, CPU and local application listener checks.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Check filesystem capacity</span><br />
From your authorized SSH session:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>df -h / /www</code></div></div>Read Size, Used, Avail and Use%. In our lab both paths are on the same /dev/vda2 filesystem, so two lines describe the same capacity rather than two separate disks. The snapshot showed 39G total, 11G used, 26G available and 30% usage.<br />
<br />
Run the check against the actual filesystem holding your website, database and backups. A different mounted data disk can be full even when the root filesystem is not.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Check inode capacity too</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>df -i / /www</code></div></div>Inodes track filesystem objects. A workload with many small files can exhaust available inodes even when data space remains. Our snapshot showed 11% inode usage. If space or inodes are nearly exhausted, identify the source before deleting anything.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Inspect specific directory sizes</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>du -sh /www/backup /www/wwwlogs</code></div></div>Our results were 287M for backups and 9.2M for website logs. This command measures those directories, not every possible source of disk use. Use bounded paths first rather than scanning the entire VPS during a busy period; even read-only directory scans can consume I/O.<br />
<br />
Do not delete active database files or blindly remove logs. Review backup retention and log rotation, preserve needed evidence and confirm a restore before discarding recovery copies. If df and du disagree, investigate causes such as deleted files still held open by a process or different mount scopes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Read memory availability</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>free -h</code></div></div>Our lab showed 3.8Gi total memory, 2.7Gi available and a 1.0Gi swap area with no swap used at the time.<br />
<br />
Look at <span style="font-weight: bold;" class="mycode_b">available</span>, not just <span style="font-weight: bold;" class="mycode_b">free</span>. Linux uses memory for buffers and cache, and some can be reclaimed for applications. A small free column alone does not prove a memory shortage. Conversely, one healthy sample does not rule out spikes or a memory leak.<br />
<br />
Sustained low availability and swap activity warrant investigation alongside application latency and logs. Do not assume adding swap solves every workload problem.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Compare CPU count with load over time</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nproc
uptime</code></div></div>Our snapshot reported two available processing units and load averages of 0.13, 0.08 and 0.09. Uptime lists the 1-, 5- and 15-minute load averages.<br />
<br />
Load average is not CPU percentage: it includes runnable work and tasks waiting in uninterruptible sleep, including some I/O waits. Compare it with available CPUs and the workload trend, then investigate CPU and I/O behavior before concluding the server needs more cores.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Identify large processes without dumping arguments</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ps -eo pid,user,comm,%cpu,%mem --sort=-%mem | head -8</code></div></div>This prints process ID, user, command name and reported CPU/memory percentages, sorted by memory percentage. We tested it and saw MariaDB, aaPanel and PHP-FPM among the larger processes.<br />
<br />
The command-name field avoids dumping full arguments, which can contain credentials. This is a quick process summary, not a complete memory accounting report or instantaneous CPU profiler. Do not kill a database or panel process just because it appears near the top.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7. Check listening TCP ports</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ss -lnt</code></div></div>This lists listening TCP sockets with numeric addresses. A focused application check in our lab was:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ss -lnt | grep -E ':3100|:3200'</code></div></div>The Node app listened on 127.0.0.1:3100 and Flask on 127.0.0.1:3200. These localhost listeners are reached through Nginx; they are not directly exposed on public interfaces.<br />
<br />
A listener on 0.0.0.0 accepts connections on IPv4 interfaces at the socket level, but firewall and provider rules can still block traffic. A listening socket does not prove outside reachability, authentication or correct application content. Verify a real request separately. Review expected listeners and avoid posting your private management entrance or raw credential-bearing output.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">8. Turn the findings into a targeted next check</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Filesystem nearly full:</span> inspect the actual mount, backups, logs and inode use; plan safe retention or capacity changes.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Memory pressure:</span> inspect process trends, worker settings and relevant application errors.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">High sustained load:</span> compare CPU count, CPU use and I/O behavior rather than equating load with percent usage.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Expected listener missing:</span> check the corresponding service's status and startup logs.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Resources look healthy but site fails:</span> investigate DNS, TLS, upstream mapping and application errors.<br />
</li>
</ul>
See <a href="https://adminsforum.com/Thread-guide-check-nginx-php-fpm-and-mysql-services-in-aapanel-via-ssh" target="_blank" rel="noopener" class="mycode_url">Check Nginx, PHP-FPM and Database Services</a> for version-specific service checks.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What this lesson verified</span><br />
We ran df, inode checks, bounded du, free, uptime, nproc, a process summary and TCP-listener checks on the lab. No service restart, cleanup, firewall modification or resource upgrade was performed. Repeat observations across the period when a problem occurs; one calm sample cannot prove peak-load capacity.<br />
<br />
<span style="font-style: italic;" class="mycode_i">AdminsForum CLI series. Illustration is a formatted lab-result transcript and the values will change over time.</span>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Before restarting services or increasing a VPS plan, check disk capacity, memory availability, CPU load and listening ports. These read-only SSH checks help identify the resource or component that needs closer investigation.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> Ubuntu 22.04.5 on our aaPanel Free 8.0.7 lab VPS. Commands inspect the server; they do not delete files, kill processes or change firewall rules. The recorded numbers are a point-in-time snapshot, not a performance benchmark or capacity guarantee.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=233" target="_blank" title="">vps-health-transcript-20261014.jpg</a> (Size: 100.01 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">Formatted transcript of the lab's disk, memory, CPU and local application listener checks.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Check filesystem capacity</span><br />
From your authorized SSH session:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>df -h / /www</code></div></div>Read Size, Used, Avail and Use%. In our lab both paths are on the same /dev/vda2 filesystem, so two lines describe the same capacity rather than two separate disks. The snapshot showed 39G total, 11G used, 26G available and 30% usage.<br />
<br />
Run the check against the actual filesystem holding your website, database and backups. A different mounted data disk can be full even when the root filesystem is not.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Check inode capacity too</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>df -i / /www</code></div></div>Inodes track filesystem objects. A workload with many small files can exhaust available inodes even when data space remains. Our snapshot showed 11% inode usage. If space or inodes are nearly exhausted, identify the source before deleting anything.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Inspect specific directory sizes</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>du -sh /www/backup /www/wwwlogs</code></div></div>Our results were 287M for backups and 9.2M for website logs. This command measures those directories, not every possible source of disk use. Use bounded paths first rather than scanning the entire VPS during a busy period; even read-only directory scans can consume I/O.<br />
<br />
Do not delete active database files or blindly remove logs. Review backup retention and log rotation, preserve needed evidence and confirm a restore before discarding recovery copies. If df and du disagree, investigate causes such as deleted files still held open by a process or different mount scopes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Read memory availability</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>free -h</code></div></div>Our lab showed 3.8Gi total memory, 2.7Gi available and a 1.0Gi swap area with no swap used at the time.<br />
<br />
Look at <span style="font-weight: bold;" class="mycode_b">available</span>, not just <span style="font-weight: bold;" class="mycode_b">free</span>. Linux uses memory for buffers and cache, and some can be reclaimed for applications. A small free column alone does not prove a memory shortage. Conversely, one healthy sample does not rule out spikes or a memory leak.<br />
<br />
Sustained low availability and swap activity warrant investigation alongside application latency and logs. Do not assume adding swap solves every workload problem.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Compare CPU count with load over time</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nproc
uptime</code></div></div>Our snapshot reported two available processing units and load averages of 0.13, 0.08 and 0.09. Uptime lists the 1-, 5- and 15-minute load averages.<br />
<br />
Load average is not CPU percentage: it includes runnable work and tasks waiting in uninterruptible sleep, including some I/O waits. Compare it with available CPUs and the workload trend, then investigate CPU and I/O behavior before concluding the server needs more cores.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Identify large processes without dumping arguments</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ps -eo pid,user,comm,%cpu,%mem --sort=-%mem | head -8</code></div></div>This prints process ID, user, command name and reported CPU/memory percentages, sorted by memory percentage. We tested it and saw MariaDB, aaPanel and PHP-FPM among the larger processes.<br />
<br />
The command-name field avoids dumping full arguments, which can contain credentials. This is a quick process summary, not a complete memory accounting report or instantaneous CPU profiler. Do not kill a database or panel process just because it appears near the top.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7. Check listening TCP ports</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ss -lnt</code></div></div>This lists listening TCP sockets with numeric addresses. A focused application check in our lab was:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ss -lnt | grep -E ':3100|:3200'</code></div></div>The Node app listened on 127.0.0.1:3100 and Flask on 127.0.0.1:3200. These localhost listeners are reached through Nginx; they are not directly exposed on public interfaces.<br />
<br />
A listener on 0.0.0.0 accepts connections on IPv4 interfaces at the socket level, but firewall and provider rules can still block traffic. A listening socket does not prove outside reachability, authentication or correct application content. Verify a real request separately. Review expected listeners and avoid posting your private management entrance or raw credential-bearing output.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">8. Turn the findings into a targeted next check</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Filesystem nearly full:</span> inspect the actual mount, backups, logs and inode use; plan safe retention or capacity changes.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Memory pressure:</span> inspect process trends, worker settings and relevant application errors.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">High sustained load:</span> compare CPU count, CPU use and I/O behavior rather than equating load with percent usage.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Expected listener missing:</span> check the corresponding service's status and startup logs.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Resources look healthy but site fails:</span> investigate DNS, TLS, upstream mapping and application errors.<br />
</li>
</ul>
See <a href="https://adminsforum.com/Thread-guide-check-nginx-php-fpm-and-mysql-services-in-aapanel-via-ssh" target="_blank" rel="noopener" class="mycode_url">Check Nginx, PHP-FPM and Database Services</a> for version-specific service checks.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What this lesson verified</span><br />
We ran df, inode checks, bounded du, free, uptime, nproc, a process summary and TCP-listener checks on the lab. No service restart, cleanup, firewall modification or resource upgrade was performed. Repeat observations across the period when a problem occurs; one calm sample cannot prove peak-load capacity.<br />
<br />
<span style="font-style: italic;" class="mycode_i">AdminsForum CLI series. Illustration is a formatted lab-result transcript and the values will change over time.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Create and Test a Scheduled Shell Script in aaPanel]]></title>
			<link>https://adminsforum.com/Thread-guide-create-and-test-a-scheduled-shell-script-in-aapanel</link>
			<pubDate>Wed, 14 Oct 2026 15:55:09 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-create-and-test-a-scheduled-shell-script-in-aapanel</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">aaPanel's Cron page lets you schedule a shell script and inspect its execution log. Start with a harmless timestamp task so you can prove both manual execution and the automatic schedule before using it for real maintenance.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> aaPanel Free 8.0.7 on Ubuntu 22.04.5. We created a one-minute Shell Script task, executed it manually, observed its automatic run and then stopped the test schedule. Existing renewal, WordPress and backup tasks were left as configured.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Open Cron and choose the task type</span><br />
Sign in to aaPanel and choose <span style="font-weight: bold;" class="mycode_b">Cron</span> in the left menu. In <span style="font-weight: bold;" class="mycode_b">Add Task</span>, choose <span style="font-weight: bold;" class="mycode_b">Shell Script</span>. Give it a clear name; our task is <span style="font-weight: bold;" class="mycode_b">AdminsForum cron execution lab</span>. A useful task name tells you what the job does when you return to the list later.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Choose a short test interval</span><br />
Open <span style="font-weight: bold;" class="mycode_b">Execute cycle</span>, select <span style="font-weight: bold;" class="mycode_b">N Minutes</span> and set the interval to <span style="font-weight: bold;" class="mycode_b">1</span>. In our version the summary states that execution starts at minute 0 of each hour and runs every minute. This short interval is for verification, not a recommendation to run backups every minute.<br />
<br />
Other displayed cycle choices include Daily, N Days, Hourly, N Hours, Weekly, Monthly, N Second and Once. Read the resulting schedule summary and confirm the server's timezone before planning a real job. The lab logs use UTC; your local clock may differ.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Enter a harmless script</span><br />
Paste this into <span style="font-weight: bold;" class="mycode_b">Script content</span>:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>printf 'AdminsForum cron lab: '; /usr/bin/date -u '+%Y-%m-%d %H:%M:%S UTC'</code></div></div>This prints a label and UTC time. It does not delete files, change passwords, restart services or contact an external website. The explicit date path avoids relying on an interactive shell's PATH. The percent signs are part of the shell-script content in aaPanel; this is not a raw crontab line to paste elsewhere.<br />
<br />
Our disposable lab used the form's default root execution user for this timestamp-only script. For a real application job, select an existing user with only the permissions it needs, and verify file ownership and access. Do not assume a script that works in your own terminal will work under a different user.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=225" target="_blank" title="">cron-create-20261014.jpg</a> (Size: 146.58 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">Create a clearly named Shell Script task with a one-minute test interval and harmless timestamp output.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Add the task and verify its row</span><br />
Click <span style="font-weight: bold;" class="mycode_b">Add Task</span>. In <span style="font-weight: bold;" class="mycode_b">Task Lists</span>, find the exact name and confirm its status is <span style="font-weight: bold;" class="mycode_b">Running</span> and its execution cycle is correct. Check the intended task rather than using a batch action against every row.<br />
<br />
A running status means the schedule is enabled. It does not prove the script has successfully completed.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Test manual execution first</span><br />
In that task's row, click <span style="font-weight: bold;" class="mycode_b">Execute</span>. Review the confirmation and click <span style="font-weight: bold;" class="mycode_b">Confirm</span> for this harmless script. After execution, click <span style="font-weight: bold;" class="mycode_b">Log</span>. Our first entry showed:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>AdminsForum cron lab: 2026-10-14 07:51:45 UTC
Successful</code></div></div>Check that the log contains the expected output as well as a success marker. A generic success message alone does not prove a backup archive is usable or a maintenance operation achieved its goal.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Verify the automatic run separately</span><br />
Keep the task enabled and wait for its next schedule boundary. Do not click Execute again during this check. In the log window, use <span style="font-weight: bold;" class="mycode_b">Refresh log</span>. Our next entry appeared automatically:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>AdminsForum cron lab: 2026-10-14 07:52:01 UTC
Successful</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=226" target="_blank" title="">cron-log-20261014.jpg</a> (Size: 148.18 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">The log shows the manual execution followed by an automatic execution at the next minute boundary.</span><br />
<br />
This proves the scheduler executed the timestamp script without another manual click. The panel's Last execute time column can lag behind the latest log entry, so use the refreshed log and actual task result when verifying execution.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7. Stop the lab schedule</span><br />
Close the log window. Click <span style="font-weight: bold;" class="mycode_b">Running</span> in this task's Status cell. The panel asks whether to deactivate the scheduled task; confirm. The row should change to <span style="font-weight: bold;" class="mycode_b">Stopped</span>.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=227" target="_blank" title="">cron-stopped-20261014.jpg</a> (Size: 189.94 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">The completed test task is stopped, so its one-minute schedule no longer keeps running.</span><br />
<br />
We kept the disabled task and its log for reference instead of deleting them. For a real production job, leave it enabled only when its script, frequency and required permissions have been verified. A manual Execute action is a separate action from enabling automatic scheduling.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">If the task does not run</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">No log output:</span> confirm the task is enabled and that its schedule has actually become due in the server's timezone.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Manual run works, scheduled run fails:</span> compare user permissions, absolute paths and required environment variables. Scheduled jobs do not necessarily load your interactive shell configuration.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Permission denied:</span> inspect the specific file and execution user; do not grant broad permissions to the whole website tree.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Command not found:</span> use the correct executable path and confirm that software is installed.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Long-running task:</span> allow a realistic interval and use suitable locking if overlapping runs could cause problems.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Success marker but wrong result:</span> make the script check its own result and return a nonzero exit status on failure. Verify the output artifact or application behavior separately.<br />
</li>
</ul>
For an SSH-level scheduler check on this Ubuntu lab, systemctl is-active cron reported active. This is an additional diagnostic; it does not replace checking the task itself. Other operating systems can use different service names.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What we verified</span><ul class="mycode_list"><li>The task was added with the intended one-minute cycle.<br />
</li>
<li>Manual execution printed the expected timestamp.<br />
</li>
<li>Automatic execution produced a later log entry without another Execute click.<br />
</li>
<li>The test schedule was stopped after verification.<br />
</li>
</ul>
<br />
<span style="font-style: italic;" class="mycode_i">AdminsForum lab-tested guide. This lesson establishes basic scheduling and log verification; website/database backup schedules and retention belong in their own tutorials.</span>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">aaPanel's Cron page lets you schedule a shell script and inspect its execution log. Start with a harmless timestamp task so you can prove both manual execution and the automatic schedule before using it for real maintenance.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> aaPanel Free 8.0.7 on Ubuntu 22.04.5. We created a one-minute Shell Script task, executed it manually, observed its automatic run and then stopped the test schedule. Existing renewal, WordPress and backup tasks were left as configured.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Open Cron and choose the task type</span><br />
Sign in to aaPanel and choose <span style="font-weight: bold;" class="mycode_b">Cron</span> in the left menu. In <span style="font-weight: bold;" class="mycode_b">Add Task</span>, choose <span style="font-weight: bold;" class="mycode_b">Shell Script</span>. Give it a clear name; our task is <span style="font-weight: bold;" class="mycode_b">AdminsForum cron execution lab</span>. A useful task name tells you what the job does when you return to the list later.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Choose a short test interval</span><br />
Open <span style="font-weight: bold;" class="mycode_b">Execute cycle</span>, select <span style="font-weight: bold;" class="mycode_b">N Minutes</span> and set the interval to <span style="font-weight: bold;" class="mycode_b">1</span>. In our version the summary states that execution starts at minute 0 of each hour and runs every minute. This short interval is for verification, not a recommendation to run backups every minute.<br />
<br />
Other displayed cycle choices include Daily, N Days, Hourly, N Hours, Weekly, Monthly, N Second and Once. Read the resulting schedule summary and confirm the server's timezone before planning a real job. The lab logs use UTC; your local clock may differ.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Enter a harmless script</span><br />
Paste this into <span style="font-weight: bold;" class="mycode_b">Script content</span>:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>printf 'AdminsForum cron lab: '; /usr/bin/date -u '+%Y-%m-%d %H:%M:%S UTC'</code></div></div>This prints a label and UTC time. It does not delete files, change passwords, restart services or contact an external website. The explicit date path avoids relying on an interactive shell's PATH. The percent signs are part of the shell-script content in aaPanel; this is not a raw crontab line to paste elsewhere.<br />
<br />
Our disposable lab used the form's default root execution user for this timestamp-only script. For a real application job, select an existing user with only the permissions it needs, and verify file ownership and access. Do not assume a script that works in your own terminal will work under a different user.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=225" target="_blank" title="">cron-create-20261014.jpg</a> (Size: 146.58 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">Create a clearly named Shell Script task with a one-minute test interval and harmless timestamp output.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Add the task and verify its row</span><br />
Click <span style="font-weight: bold;" class="mycode_b">Add Task</span>. In <span style="font-weight: bold;" class="mycode_b">Task Lists</span>, find the exact name and confirm its status is <span style="font-weight: bold;" class="mycode_b">Running</span> and its execution cycle is correct. Check the intended task rather than using a batch action against every row.<br />
<br />
A running status means the schedule is enabled. It does not prove the script has successfully completed.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Test manual execution first</span><br />
In that task's row, click <span style="font-weight: bold;" class="mycode_b">Execute</span>. Review the confirmation and click <span style="font-weight: bold;" class="mycode_b">Confirm</span> for this harmless script. After execution, click <span style="font-weight: bold;" class="mycode_b">Log</span>. Our first entry showed:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>AdminsForum cron lab: 2026-10-14 07:51:45 UTC
Successful</code></div></div>Check that the log contains the expected output as well as a success marker. A generic success message alone does not prove a backup archive is usable or a maintenance operation achieved its goal.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Verify the automatic run separately</span><br />
Keep the task enabled and wait for its next schedule boundary. Do not click Execute again during this check. In the log window, use <span style="font-weight: bold;" class="mycode_b">Refresh log</span>. Our next entry appeared automatically:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>AdminsForum cron lab: 2026-10-14 07:52:01 UTC
Successful</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=226" target="_blank" title="">cron-log-20261014.jpg</a> (Size: 148.18 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">The log shows the manual execution followed by an automatic execution at the next minute boundary.</span><br />
<br />
This proves the scheduler executed the timestamp script without another manual click. The panel's Last execute time column can lag behind the latest log entry, so use the refreshed log and actual task result when verifying execution.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7. Stop the lab schedule</span><br />
Close the log window. Click <span style="font-weight: bold;" class="mycode_b">Running</span> in this task's Status cell. The panel asks whether to deactivate the scheduled task; confirm. The row should change to <span style="font-weight: bold;" class="mycode_b">Stopped</span>.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=227" target="_blank" title="">cron-stopped-20261014.jpg</a> (Size: 189.94 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">The completed test task is stopped, so its one-minute schedule no longer keeps running.</span><br />
<br />
We kept the disabled task and its log for reference instead of deleting them. For a real production job, leave it enabled only when its script, frequency and required permissions have been verified. A manual Execute action is a separate action from enabling automatic scheduling.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">If the task does not run</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">No log output:</span> confirm the task is enabled and that its schedule has actually become due in the server's timezone.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Manual run works, scheduled run fails:</span> compare user permissions, absolute paths and required environment variables. Scheduled jobs do not necessarily load your interactive shell configuration.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Permission denied:</span> inspect the specific file and execution user; do not grant broad permissions to the whole website tree.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Command not found:</span> use the correct executable path and confirm that software is installed.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Long-running task:</span> allow a realistic interval and use suitable locking if overlapping runs could cause problems.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Success marker but wrong result:</span> make the script check its own result and return a nonzero exit status on failure. Verify the output artifact or application behavior separately.<br />
</li>
</ul>
For an SSH-level scheduler check on this Ubuntu lab, systemctl is-active cron reported active. This is an additional diagnostic; it does not replace checking the task itself. Other operating systems can use different service names.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What we verified</span><ul class="mycode_list"><li>The task was added with the intended one-minute cycle.<br />
</li>
<li>Manual execution printed the expected timestamp.<br />
</li>
<li>Automatic execution produced a later log entry without another Execute click.<br />
</li>
<li>The test schedule was stopped after verification.<br />
</li>
</ul>
<br />
<span style="font-style: italic;" class="mycode_i">AdminsForum lab-tested guide. This lesson establishes basic scheduling and log verification; website/database backup schedules and retention belong in their own tutorials.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[aaPanel CLI Overview: What Is in the bt Menu?]]></title>
			<link>https://adminsforum.com/Thread-guide-aapanel-cli-overview-what-is-in-the-bt-menu</link>
			<pubDate>Wed, 14 Oct 2026 15:43:49 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-aapanel-cli-overview-what-is-in-the-bt-menu</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">This is the starting point for our aaPanel CLI tutorials. Before using individual commands, see the complete bt menu and understand which jobs it can perform.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=224" target="_blank" title="">codex-clipboard-de9a5d66-381b-4538-86e8-e6ec0ca79894.png</a> (Size: 42.18 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">The full aaPanel CLI menu. Options shown here match the menu we inspected on our aaPanel Free 8.0.7 lab; labels and numbers can change between releases.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">What is the aaPanel CLI?</span><br />
CLI means command-line interface. aaPanel provides the bt command so an authorized server administrator can manage the panel from an SSH terminal, including when the browser dashboard cannot be reached. It is a panel maintenance tool, not a replacement for every Linux or application command.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How to open this menu</span><br />
Connect to your VPS through SSH using your own authorized account. Then run:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt</code></div></div>If your account requires administrator elevation, use sudo bt. The menu displays numbered actions and asks which one to run. Read the current label on your own server before entering a number. To leave without choosing a change, enter <span style="font-weight: bold;" class="mycode_b">0</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Everything shown in the menu</span><br />
The list below follows the option numbers rather than the screenshot's two-column layout.<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">0</span> — Cancel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">1</span> — Restart panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">2</span> — Stop panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">3</span> — Start panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">4</span> — Reload panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">5</span> — Change panel password<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">6</span> — Change panel username<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">7</span> — Forcibly change MySQL root password<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">8</span> — Change panel port<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">9</span> — Clear panel cache<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">10</span> — Clear login limit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">11</span> — Turn on/off IP + User-Agent Authenticator<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">12</span> — Cancel domain binding limit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">13</span> — Cancel IP access limit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">14</span> — View panel default info<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">15</span> — Clear system rubbish<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">16</span> — Repair panel: check for errors and update panel files<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">17</span> — Toggle compression for log cutting<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">18</span> — Toggle automatic panel backups<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">22</span> — Display panel error log<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">23</span> — Turn off BasicAuth Authenticator<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">24</span> — Turn off Google Authenticator<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">25</span> — Save a copy when modifying files in the panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">26</span> — Keep/remove local backups when backing up to cloud storage<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">27</span> — Turn on/off panel SSL<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">28</span> — Modify panel security entrance<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">33</span> — Lift the panel's “explosion-proof” login limit<br />
</li>
</ul>
The menu has number gaps. Do not guess missing options or assume a number has the same meaning in a different aaPanel version. Some labels are awkward translations; the detailed reference explains the actual installed handlers, including what option 33 changes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Which kinds of tasks are available?</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Panel service control:</span> start, stop, restart and reload.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Account and access recovery:</span> credentials, port, domain/IP restrictions and login limits.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Security settings:</span> authentication, SSL and the private security entrance.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Diagnostics and maintenance:</span> error logs, cache/session cleanup, repair and system cleanup.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Recovery settings:</span> automatic panel backups, local backup retention and saved file copies.<br />
</li>
</ul>
Opening the menu is different from executing an option. Changes to passwords, security restrictions, cleanup or repair need a planned purpose and recovery route. Option 14 can print private login details; never include its output in a public tutorial image.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Start with a status check</span><br />
To inspect whether the panel processes are running without selecting a menu operation:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt status</code></div></div>In our lab, this reported Bt-Panel and Bt-Task running. We also opened the menu and cancelled with 0. Credential changes and security-disable options were not executed merely to make this overview.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Next lesson: detailed commands and menu options</span><br />
<a href="https://adminsforum.com/Thread-guide-how-to-use-the-aapanel-bt-command-status-restart-and-cli-menu" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">How to Use the aaPanel bt Command: Complete Command and Menu Reference</span></a><br />
That guide explains each service command and visible menu option, when it is useful, what it changes and how to verify the result. It also includes our tested panel restart output.<br />
<br />
<span style="font-style: italic;" class="mycode_i">AdminsForum CLI series — begin with this menu overview, then use the detailed reference for the operation you actually need.</span>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">This is the starting point for our aaPanel CLI tutorials. Before using individual commands, see the complete bt menu and understand which jobs it can perform.</span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=224" target="_blank" title="">codex-clipboard-de9a5d66-381b-4538-86e8-e6ec0ca79894.png</a> (Size: 42.18 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">The full aaPanel CLI menu. Options shown here match the menu we inspected on our aaPanel Free 8.0.7 lab; labels and numbers can change between releases.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">What is the aaPanel CLI?</span><br />
CLI means command-line interface. aaPanel provides the bt command so an authorized server administrator can manage the panel from an SSH terminal, including when the browser dashboard cannot be reached. It is a panel maintenance tool, not a replacement for every Linux or application command.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">How to open this menu</span><br />
Connect to your VPS through SSH using your own authorized account. Then run:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt</code></div></div>If your account requires administrator elevation, use sudo bt. The menu displays numbered actions and asks which one to run. Read the current label on your own server before entering a number. To leave without choosing a change, enter <span style="font-weight: bold;" class="mycode_b">0</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Everything shown in the menu</span><br />
The list below follows the option numbers rather than the screenshot's two-column layout.<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">0</span> — Cancel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">1</span> — Restart panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">2</span> — Stop panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">3</span> — Start panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">4</span> — Reload panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">5</span> — Change panel password<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">6</span> — Change panel username<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">7</span> — Forcibly change MySQL root password<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">8</span> — Change panel port<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">9</span> — Clear panel cache<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">10</span> — Clear login limit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">11</span> — Turn on/off IP + User-Agent Authenticator<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">12</span> — Cancel domain binding limit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">13</span> — Cancel IP access limit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">14</span> — View panel default info<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">15</span> — Clear system rubbish<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">16</span> — Repair panel: check for errors and update panel files<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">17</span> — Toggle compression for log cutting<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">18</span> — Toggle automatic panel backups<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">22</span> — Display panel error log<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">23</span> — Turn off BasicAuth Authenticator<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">24</span> — Turn off Google Authenticator<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">25</span> — Save a copy when modifying files in the panel<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">26</span> — Keep/remove local backups when backing up to cloud storage<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">27</span> — Turn on/off panel SSL<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">28</span> — Modify panel security entrance<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">33</span> — Lift the panel's “explosion-proof” login limit<br />
</li>
</ul>
The menu has number gaps. Do not guess missing options or assume a number has the same meaning in a different aaPanel version. Some labels are awkward translations; the detailed reference explains the actual installed handlers, including what option 33 changes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Which kinds of tasks are available?</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Panel service control:</span> start, stop, restart and reload.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Account and access recovery:</span> credentials, port, domain/IP restrictions and login limits.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Security settings:</span> authentication, SSL and the private security entrance.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Diagnostics and maintenance:</span> error logs, cache/session cleanup, repair and system cleanup.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Recovery settings:</span> automatic panel backups, local backup retention and saved file copies.<br />
</li>
</ul>
Opening the menu is different from executing an option. Changes to passwords, security restrictions, cleanup or repair need a planned purpose and recovery route. Option 14 can print private login details; never include its output in a public tutorial image.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Start with a status check</span><br />
To inspect whether the panel processes are running without selecting a menu operation:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt status</code></div></div>In our lab, this reported Bt-Panel and Bt-Task running. We also opened the menu and cancelled with 0. Credential changes and security-disable options were not executed merely to make this overview.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Next lesson: detailed commands and menu options</span><br />
<a href="https://adminsforum.com/Thread-guide-how-to-use-the-aapanel-bt-command-status-restart-and-cli-menu" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">How to Use the aaPanel bt Command: Complete Command and Menu Reference</span></a><br />
That guide explains each service command and visible menu option, when it is useful, what it changes and how to verify the result. It also includes our tested panel restart output.<br />
<br />
<span style="font-style: italic;" class="mycode_i">AdminsForum CLI series — begin with this menu overview, then use the detailed reference for the operation you actually need.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to Use the aaPanel bt Command: Status, Restart and CLI Menu]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-use-the-aapanel-bt-command-status-restart-and-cli-menu</link>
			<pubDate>Wed, 14 Oct 2026 15:30:01 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-use-the-aapanel-bt-command-status-restart-and-cli-menu</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">New to the bt CLI? Start here:</span> <a href="https://adminsforum.com/Thread-guide-aapanel-cli-overview-what-is-in-the-bt-menu" target="_blank" rel="noopener" class="mycode_url">aaPanel CLI Overview: What Is in the bt Menu?</a><br />
See the full menu first, then return to this detailed command reference.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The bt command manages aaPanel from a Linux terminal. Use it over SSH to check whether the panel is running, restart its services or open the maintenance menu when the browser dashboard is unavailable.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested lab:</span> aaPanel Free 8.0.7 on Ubuntu 22.04.5. We tested bt status, opened the interactive menu and exited with 0, then ran bt restart and checked the panel processes and a hosted Flask website. Menu numbers and wording may differ between versions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Connect to the VPS through SSH</span><br />
Use a trusted SSH client such as Windows Terminal, PowerShell or PuTTY. Connect with your authorized server account:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ssh your-user@your-server-ip</code></div></div>If your administration account uses sudo, run the management commands with sudo. The examples below were run from an authorized root session in our disposable lab. You do not need to publish your server password or private SSH key to follow this guide.<br />
<br />
Make sure you have an independent recovery route, such as the provider console, before changing panel access settings. The aaPanel terminal inside the dashboard is useful when the dashboard works; it cannot replace SSH recovery when you cannot reach that dashboard.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Check that bt is available</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>command -v bt</code></div></div>Our result was /usr/bin/bt. If the command is missing, verify that you are on the correct VPS and that aaPanel is installed. Do not reinstall a production panel simply because a command is missing from PATH.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Check panel status</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt status</code></div></div>Our first test reported:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>Bt-Panel (pid 2107) already running
Bt-Task (pid 1940) already running</code></div></div>The process IDs are temporary and will differ on your VPS. Bt-Panel handles the panel service, while Bt-Task is its task process. A running status does not prove DNS, firewalls, certificates or your browser login work; check those separately if the page remains unavailable.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=223" target="_blank" title="">bt-cli-transcript-20261014.jpg</a> (Size: 113.71 KB / Downloads: 15)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">Formatted transcript of actual lab output. This image is a readable test transcript, not a screenshot of a live terminal.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Open the maintenance menu</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt</code></div></div>The installed panel presents numbered operations. Read the labels on your own server before selecting anything. To leave without selecting a change, enter:<br />
Our menu displayed Cancelled! and returned to the shell.<br />
<br />
Common service operations shown in our menu were Restart panel, Stop panel, Start panel and Reload panel. It also included options for credentials, the panel port, login limits, domain/IP restrictions, authentication, SSL and repair. Those options are not interchangeable fixes for a page that fails to load.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Restart the panel when appropriate</span><br />
A panel restart briefly interrupts dashboard access and its task process. Save your work and use a maintenance window where appropriate:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt restart
bt status</code></div></div>Our restart stopped Bt-Tasks and Bt-Panel, then started both successfully. The new status reported panel PID 4161 and task PID 4195. The changed process IDs and start messages confirmed a restart occurred.<br />
<br />
We also checked the hosted Flask application after the panel restart. It still returned HTTP 200 with the expected response. This is the result for our lab app; verify your own websites and background workloads after maintenance rather than assuming they are unaffected.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Complete service-command reference</span><br />
These commands are supported by the installed /etc/init.d/bt script. Use your authorized administrator account; prepend sudo if required. A command's existence is verified from the installed script, while execution tests are listed separately below.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">bt</span> — Opens the numbered maintenance menu. Use it to see available operations for your version. Enter 0 to cancel. Read the label before choosing a number.<br />
<span style="font-weight: bold;" class="mycode_b">bt status</span> — Reports the panel and task processes and their PIDs. Start here when the dashboard is unavailable. Running processes do not prove the URL or firewall is correct. Verify the browser separately.<br />
<span style="font-weight: bold;" class="mycode_b">bt start</span> — Starts the panel and its task process when stopped. Afterwards run bt status and test the dashboard. It does not install aaPanel or start every hosted website service.<br />
<span style="font-weight: bold;" class="mycode_b">bt stop</span> — Stops panel and task processes. Use only for planned maintenance; dashboard access and panel task processing will be interrupted. Keep SSH available and use bt start to bring them back.<br />
<span style="font-weight: bold;" class="mycode_b">bt restart</span> — Stops then starts both processes. Use after a justified panel maintenance change, then check status and application availability. We tested this in the lab.<br />
<span style="font-weight: bold;" class="mycode_b">bt reload</span> — In this installed version, reload relaunches the panel process; it is not a promise of a seamless configuration-only refresh. Expect dashboard interruption, then check status and login. Do not confuse it with an Nginx reload.<br />
<span style="font-weight: bold;" class="mycode_b">bt logs</span> — Prints the last 100 lines of the panel error log in this version. Use it to inspect a panel startup or runtime error. It is not a continuous live stream and does not replace website/PHP logs. Redact sensitive output before sharing.<br />
<span style="font-weight: bold;" class="mycode_b">bt default</span> — Displays saved default login information including the panel address and entrance. Its output may contain account and password details. View privately; do not publish it. Saved initial credentials may differ from later changed credentials.<br />
<span style="font-weight: bold;" class="mycode_b">bt panel NUMBER</span> — Dispatches a numbered operation through the CLI handler. Direct bt NUMBER is also supported here. These are execution shortcuts, not harmless help commands: entering a number can immediately change settings. Prefer opening bt and reading the current menu first.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Complete numbered menu reference — aaPanel 8.0.7 lab</span><br />
The following covers every option displayed in our installed menu. Credential changes, access restrictions and cleanup operations were reviewed in the handlers, not executed for this article. Numbers are version-specific.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">0 — Cancel</span><br />
Leaves the menu without selecting a maintenance operation. We tested this and received Cancelled!.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1 — Restart panel</span><br />
Calls the full panel restart, equivalent to bt restart. Use for justified maintenance, then verify both processes and dashboard access.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2 — Stop panel</span><br />
Calls bt stop. The dashboard becomes unavailable. Keep an SSH session and restart plan before using it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3 — Start panel</span><br />
Calls bt start. Use when the panel is stopped; inspect logs if it fails, and confirm status afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4 — Reload panel</span><br />
Calls bt reload. In our version it relaunches the panel process. Verify the dashboard returns; do not assume zero interruption.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5 — Change panel password</span><br />
Prompts for a new panel password and updates the panel account credential. It does not change the Linux SSH password. Use a planned account recovery procedure, save the new value privately and verify a fresh login.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6 — Change panel username</span><br />
Prompts for a new panel login name. This changes the panel account identifier, not a Linux username. Record it privately and test the new login.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7 — Forcibly change MySQL root password</span><br />
Changes the database administrator credential. It is separate from the panel login and may affect tools or integrations using that credential. Back up and inventory dependent settings before a planned change. The handler can print the entered value, so keep the terminal and any recording private.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">8 — Change panel port</span><br />
Prompts for a new port, changes panel configuration, attempts a local firewall adjustment and reloads the panel. It cannot guarantee the provider firewall permits that port. Permit and test the new management route before retiring the old rule; update bookmarks and check a fresh login.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">9 — Clear panel cache</span><br />
In this installed handler, removes panel session files and reloads the panel. It can sign users out. Use for a diagnosed session/cache issue, then verify a new login; it is not a website CDN-cache purge.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">10 — Clear login limit</span><br />
Labelled login-limit recovery; in this installed version its handler calls panel reload. Do not assume it removes every account or IP block. Verify a legitimate fresh login and inspect the actual remaining restriction if it fails.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">11 — Toggle IP + User-Agent Authenticator</span><br />
Toggles the panel's IP/User-Agent session check. Disabling it changes session protection and can increase replay risk. Use only as a deliberate security decision for a diagnosed problem; check the printed resulting state and confirm the intended protection remains enabled.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">12 — Cancel domain binding limit</span><br />
Removes the panel's configured domain-only access restriction and reloads it. It does not alter DNS or a website domain. This widens allowed panel hostnames; review the intended management hostname and restore suitable access policy after recovery.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">13 — Cancel IP access limit</span><br />
Removes the configured panel IP access restriction and reloads it. It does not fix a provider firewall. Removing a restriction widens management access, so use an authorized recovery plan and verify the desired IP policy afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">14 — View panel default info</span><br />
Calls bt default. View privately because the address, entrance and saved credentials may be printed. It is not a password reset.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">15 — Clear system rubbish</span><br />
Runs cleanup helpers for mail-related data/logs, sessions and other selected files. It performs deletion; it is not just a disk-usage report. Review the cleanup scope for your version and preserve needed files first. Check reclaimed space and service behavior afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">16 — Repair panel</span><br />
Runs an official panel update/repair script, selecting Free or Pro according to the installed configuration. It can update panel files and dependencies. Back up before use, review the operation, and afterwards check version, logs, login and hosted services. It is not a read-only health check.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">17 — Toggle log-cutting compression</span><br />
Changes whether applicable rotated logs are gzip-compressed. It does not itself prove log retention is configured correctly. Inspect the resulting state and later rotated files; account for disk-space and log-reader needs.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">18 — Toggle automatic panel backups</span><br />
Enables or disables the panel's automatic panel-backup setting. A panel backup is not automatically a full website/database/VPS backup. Verify the resulting state and actual backup files and restore coverage; turning it off reduces recovery protection.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">22 — Display panel error log</span><br />
Prints the last 100 lines of /www/server/panel/logs/error.log. It corresponds to the current bt logs behavior. Check relevant timestamps and redact private values before posting.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">23 — Turn off BasicAuth Authenticator</span><br />
Removes the panel's BasicAuth configuration and reloads it. This disables an additional access layer; use only for an authorized recovery need, then verify and restore the intended protection.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">24 — Turn off Google Authenticator</span><br />
Removes the panel's Google Authenticator/2FA configuration. This weakens login protection. Use a separate authorized 2FA recovery process, then re-enrol and verify 2FA as appropriate; it does not reset your password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">25 — Toggle saved copies of panel file edits</span><br />
Enables or disables file history/copies when files are modified through the panel. Check the resulting state and verify history on a disposable file. This convenience feature is not a substitute for off-site backups.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">26 — Keep/remove local backups when uploading to cloud storage</span><br />
Toggles retention of local backup files in supported cloud-backup workflows. Keeping copies consumes disk; removing them reduces local recovery copies. Verify cloud upload success, retention and a restore before relying on the setting.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">27 — Toggle panel SSL</span><br />
Changes the panel's HTTP/HTTPS mode and reloads it. Enabling uses existing panel certificate files or may generate a certificate when missing; it does not by itself guarantee a trusted certificate for your hostname. Disabling removes transport encryption. Verify the exact management URL and certificate normally; follow the dedicated SSL guide for trusted HTTPS.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">28 — Modify panel security entrance</span><br />
Prompts for a new entrance path, validates it, saves it and restarts the panel. The management URL changes. Keep the new path private, update your bookmark and test a fresh login while retaining SSH recovery.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">33 — Lift the panel “explosion-proof” limit</span><br />
The label refers to login/brute-force limiting. In our handler it disables the username-based limiter and removes a login-limit marker; it does not prove all IP/global protections are disabled or cleared. Use only for a diagnosed authorized lockout, review the resulting limiter configuration and restore appropriate protection afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Number gaps and hidden handlers</span><br />
Our displayed menu skips 19–21 and 29–32. Do not invent meanings for missing numbers. The installed source also contains a non-displayed option 19 that invokes a Pro update script; it is not part of this visible menu or a shortcut we tested. Other install/update text dispatch paths exist in the source and are outside this beginner service/menu reference.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Verification after any change</span><br />
Read the command result, run bt status where relevant, test a fresh panel login through the intended trusted URL and check affected services. A success message alone does not establish firewall, certificate or application correctness.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Other available service commands</span><br />
The installed script supports:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt start
bt stop
bt reload
bt logs</code></div></div>We inspected these command branches in the installed script; we did not execute every branch in this lesson. Stop deliberately takes the panel service down. Reload is distinct from a full stop/start restart. Logs can help diagnose a panel error, but their contents may contain private data. Review and redact them before sharing.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Handle default login information privately</span><br />
The official aaPanel documentation describes:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt default</code></div></div>This can display the management address, security entrance, account name and saved initial password. Treat its entire output as private. Do not include it in a tutorial screenshot, support post or copied terminal transcript. We did not publish or capture this command's sensitive output for this guide.<br />
<br />
A displayed initial password is not proof that it is still your current password if credentials were changed later. Keep your actual credentials in your password manager. Do not reset them just to compare them with an old saved value.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7. Avoid changing security controls blindly</span><ul class="mycode_list"><li>Changing the panel port can lock you out if the new port is not permitted through both server and provider firewalls.<br />
</li>
<li>Password and username changes affect login access. Follow a separate planned recovery procedure and keep the new values private.<br />
</li>
<li>Cancelling domain/IP restrictions or turning off authentication changes protection of the management interface. Diagnose the actual cause before considering such a change.<br />
</li>
<li>Turning off SSL does not fix a certificate correctly; configure a trusted certificate for the intended panel hostname.<br />
</li>
<li>Repair can update panel files. It is not just a read-only diagnostic, so preserve backups and review the operation before using it.<br />
</li>
<li>Forcibly changing the MySQL root password is a database credential change, not a normal panel restart step.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">If the browser panel still does not load</span><br />
Check that you are using the correct hostname or IP, the configured panel port and its private security entrance. Verify DNS, listener status, firewall access and certificate validity. See <a href="https://adminsforum.com/Thread-guide-access-aapanel-through-a-domain-name-with-cloudflare-dns" target="_blank" rel="noopener" class="mycode_url">Access aaPanel Through a Domain Name</a> for the domain-based URL format.<br />
<br />
A panel that reports running but cannot be reached needs connectivity diagnosis; repeatedly restarting it will not correct a wrong domain or blocked port.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What this guide verified</span><ul class="mycode_list"><li>bt executable present on the lab.<br />
</li>
<li>Status showed both panel processes running.<br />
</li>
<li>Interactive menu opened and exited using 0.<br />
</li>
<li>Panel restart completed and both processes returned.<br />
</li>
<li>Hosted Flask website returned HTTP 200 after the restart.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Reference:</span> <a href="https://www.aapanel.com/docs/guide/quickstart.html" target="_blank" rel="noopener" class="mycode_url">aaPanel official Quick Start</a>.<br />
<span style="font-style: italic;" class="mycode_i">Tested and illustrated by AdminsForum. All private login information was excluded from the published image.</span>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">New to the bt CLI? Start here:</span> <a href="https://adminsforum.com/Thread-guide-aapanel-cli-overview-what-is-in-the-bt-menu" target="_blank" rel="noopener" class="mycode_url">aaPanel CLI Overview: What Is in the bt Menu?</a><br />
See the full menu first, then return to this detailed command reference.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">The bt command manages aaPanel from a Linux terminal. Use it over SSH to check whether the panel is running, restart its services or open the maintenance menu when the browser dashboard is unavailable.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested lab:</span> aaPanel Free 8.0.7 on Ubuntu 22.04.5. We tested bt status, opened the interactive menu and exited with 0, then ran bt restart and checked the panel processes and a hosted Flask website. Menu numbers and wording may differ between versions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Connect to the VPS through SSH</span><br />
Use a trusted SSH client such as Windows Terminal, PowerShell or PuTTY. Connect with your authorized server account:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ssh your-user@your-server-ip</code></div></div>If your administration account uses sudo, run the management commands with sudo. The examples below were run from an authorized root session in our disposable lab. You do not need to publish your server password or private SSH key to follow this guide.<br />
<br />
Make sure you have an independent recovery route, such as the provider console, before changing panel access settings. The aaPanel terminal inside the dashboard is useful when the dashboard works; it cannot replace SSH recovery when you cannot reach that dashboard.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Check that bt is available</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>command -v bt</code></div></div>Our result was /usr/bin/bt. If the command is missing, verify that you are on the correct VPS and that aaPanel is installed. Do not reinstall a production panel simply because a command is missing from PATH.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Check panel status</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt status</code></div></div>Our first test reported:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>Bt-Panel (pid 2107) already running
Bt-Task (pid 1940) already running</code></div></div>The process IDs are temporary and will differ on your VPS. Bt-Panel handles the panel service, while Bt-Task is its task process. A running status does not prove DNS, firewalls, certificates or your browser login work; check those separately if the page remains unavailable.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=223" target="_blank" title="">bt-cli-transcript-20261014.jpg</a> (Size: 113.71 KB / Downloads: 15)
<!-- end: postbit_attachments_attachment --><br />
<span style="font-style: italic;" class="mycode_i">Formatted transcript of actual lab output. This image is a readable test transcript, not a screenshot of a live terminal.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Open the maintenance menu</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt</code></div></div>The installed panel presents numbered operations. Read the labels on your own server before selecting anything. To leave without selecting a change, enter:<br />
Our menu displayed Cancelled! and returned to the shell.<br />
<br />
Common service operations shown in our menu were Restart panel, Stop panel, Start panel and Reload panel. It also included options for credentials, the panel port, login limits, domain/IP restrictions, authentication, SSL and repair. Those options are not interchangeable fixes for a page that fails to load.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Restart the panel when appropriate</span><br />
A panel restart briefly interrupts dashboard access and its task process. Save your work and use a maintenance window where appropriate:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt restart
bt status</code></div></div>Our restart stopped Bt-Tasks and Bt-Panel, then started both successfully. The new status reported panel PID 4161 and task PID 4195. The changed process IDs and start messages confirmed a restart occurred.<br />
<br />
We also checked the hosted Flask application after the panel restart. It still returned HTTP 200 with the expected response. This is the result for our lab app; verify your own websites and background workloads after maintenance rather than assuming they are unaffected.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Complete service-command reference</span><br />
These commands are supported by the installed /etc/init.d/bt script. Use your authorized administrator account; prepend sudo if required. A command's existence is verified from the installed script, while execution tests are listed separately below.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">bt</span> — Opens the numbered maintenance menu. Use it to see available operations for your version. Enter 0 to cancel. Read the label before choosing a number.<br />
<span style="font-weight: bold;" class="mycode_b">bt status</span> — Reports the panel and task processes and their PIDs. Start here when the dashboard is unavailable. Running processes do not prove the URL or firewall is correct. Verify the browser separately.<br />
<span style="font-weight: bold;" class="mycode_b">bt start</span> — Starts the panel and its task process when stopped. Afterwards run bt status and test the dashboard. It does not install aaPanel or start every hosted website service.<br />
<span style="font-weight: bold;" class="mycode_b">bt stop</span> — Stops panel and task processes. Use only for planned maintenance; dashboard access and panel task processing will be interrupted. Keep SSH available and use bt start to bring them back.<br />
<span style="font-weight: bold;" class="mycode_b">bt restart</span> — Stops then starts both processes. Use after a justified panel maintenance change, then check status and application availability. We tested this in the lab.<br />
<span style="font-weight: bold;" class="mycode_b">bt reload</span> — In this installed version, reload relaunches the panel process; it is not a promise of a seamless configuration-only refresh. Expect dashboard interruption, then check status and login. Do not confuse it with an Nginx reload.<br />
<span style="font-weight: bold;" class="mycode_b">bt logs</span> — Prints the last 100 lines of the panel error log in this version. Use it to inspect a panel startup or runtime error. It is not a continuous live stream and does not replace website/PHP logs. Redact sensitive output before sharing.<br />
<span style="font-weight: bold;" class="mycode_b">bt default</span> — Displays saved default login information including the panel address and entrance. Its output may contain account and password details. View privately; do not publish it. Saved initial credentials may differ from later changed credentials.<br />
<span style="font-weight: bold;" class="mycode_b">bt panel NUMBER</span> — Dispatches a numbered operation through the CLI handler. Direct bt NUMBER is also supported here. These are execution shortcuts, not harmless help commands: entering a number can immediately change settings. Prefer opening bt and reading the current menu first.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Complete numbered menu reference — aaPanel 8.0.7 lab</span><br />
The following covers every option displayed in our installed menu. Credential changes, access restrictions and cleanup operations were reviewed in the handlers, not executed for this article. Numbers are version-specific.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">0 — Cancel</span><br />
Leaves the menu without selecting a maintenance operation. We tested this and received Cancelled!.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1 — Restart panel</span><br />
Calls the full panel restart, equivalent to bt restart. Use for justified maintenance, then verify both processes and dashboard access.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2 — Stop panel</span><br />
Calls bt stop. The dashboard becomes unavailable. Keep an SSH session and restart plan before using it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3 — Start panel</span><br />
Calls bt start. Use when the panel is stopped; inspect logs if it fails, and confirm status afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4 — Reload panel</span><br />
Calls bt reload. In our version it relaunches the panel process. Verify the dashboard returns; do not assume zero interruption.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5 — Change panel password</span><br />
Prompts for a new panel password and updates the panel account credential. It does not change the Linux SSH password. Use a planned account recovery procedure, save the new value privately and verify a fresh login.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6 — Change panel username</span><br />
Prompts for a new panel login name. This changes the panel account identifier, not a Linux username. Record it privately and test the new login.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7 — Forcibly change MySQL root password</span><br />
Changes the database administrator credential. It is separate from the panel login and may affect tools or integrations using that credential. Back up and inventory dependent settings before a planned change. The handler can print the entered value, so keep the terminal and any recording private.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">8 — Change panel port</span><br />
Prompts for a new port, changes panel configuration, attempts a local firewall adjustment and reloads the panel. It cannot guarantee the provider firewall permits that port. Permit and test the new management route before retiring the old rule; update bookmarks and check a fresh login.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">9 — Clear panel cache</span><br />
In this installed handler, removes panel session files and reloads the panel. It can sign users out. Use for a diagnosed session/cache issue, then verify a new login; it is not a website CDN-cache purge.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">10 — Clear login limit</span><br />
Labelled login-limit recovery; in this installed version its handler calls panel reload. Do not assume it removes every account or IP block. Verify a legitimate fresh login and inspect the actual remaining restriction if it fails.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">11 — Toggle IP + User-Agent Authenticator</span><br />
Toggles the panel's IP/User-Agent session check. Disabling it changes session protection and can increase replay risk. Use only as a deliberate security decision for a diagnosed problem; check the printed resulting state and confirm the intended protection remains enabled.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">12 — Cancel domain binding limit</span><br />
Removes the panel's configured domain-only access restriction and reloads it. It does not alter DNS or a website domain. This widens allowed panel hostnames; review the intended management hostname and restore suitable access policy after recovery.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">13 — Cancel IP access limit</span><br />
Removes the configured panel IP access restriction and reloads it. It does not fix a provider firewall. Removing a restriction widens management access, so use an authorized recovery plan and verify the desired IP policy afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">14 — View panel default info</span><br />
Calls bt default. View privately because the address, entrance and saved credentials may be printed. It is not a password reset.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">15 — Clear system rubbish</span><br />
Runs cleanup helpers for mail-related data/logs, sessions and other selected files. It performs deletion; it is not just a disk-usage report. Review the cleanup scope for your version and preserve needed files first. Check reclaimed space and service behavior afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">16 — Repair panel</span><br />
Runs an official panel update/repair script, selecting Free or Pro according to the installed configuration. It can update panel files and dependencies. Back up before use, review the operation, and afterwards check version, logs, login and hosted services. It is not a read-only health check.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">17 — Toggle log-cutting compression</span><br />
Changes whether applicable rotated logs are gzip-compressed. It does not itself prove log retention is configured correctly. Inspect the resulting state and later rotated files; account for disk-space and log-reader needs.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">18 — Toggle automatic panel backups</span><br />
Enables or disables the panel's automatic panel-backup setting. A panel backup is not automatically a full website/database/VPS backup. Verify the resulting state and actual backup files and restore coverage; turning it off reduces recovery protection.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">22 — Display panel error log</span><br />
Prints the last 100 lines of /www/server/panel/logs/error.log. It corresponds to the current bt logs behavior. Check relevant timestamps and redact private values before posting.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">23 — Turn off BasicAuth Authenticator</span><br />
Removes the panel's BasicAuth configuration and reloads it. This disables an additional access layer; use only for an authorized recovery need, then verify and restore the intended protection.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">24 — Turn off Google Authenticator</span><br />
Removes the panel's Google Authenticator/2FA configuration. This weakens login protection. Use a separate authorized 2FA recovery process, then re-enrol and verify 2FA as appropriate; it does not reset your password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">25 — Toggle saved copies of panel file edits</span><br />
Enables or disables file history/copies when files are modified through the panel. Check the resulting state and verify history on a disposable file. This convenience feature is not a substitute for off-site backups.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">26 — Keep/remove local backups when uploading to cloud storage</span><br />
Toggles retention of local backup files in supported cloud-backup workflows. Keeping copies consumes disk; removing them reduces local recovery copies. Verify cloud upload success, retention and a restore before relying on the setting.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">27 — Toggle panel SSL</span><br />
Changes the panel's HTTP/HTTPS mode and reloads it. Enabling uses existing panel certificate files or may generate a certificate when missing; it does not by itself guarantee a trusted certificate for your hostname. Disabling removes transport encryption. Verify the exact management URL and certificate normally; follow the dedicated SSL guide for trusted HTTPS.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">28 — Modify panel security entrance</span><br />
Prompts for a new entrance path, validates it, saves it and restarts the panel. The management URL changes. Keep the new path private, update your bookmark and test a fresh login while retaining SSH recovery.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">33 — Lift the panel “explosion-proof” limit</span><br />
The label refers to login/brute-force limiting. In our handler it disables the username-based limiter and removes a login-limit marker; it does not prove all IP/global protections are disabled or cleared. Use only for a diagnosed authorized lockout, review the resulting limiter configuration and restore appropriate protection afterwards.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Number gaps and hidden handlers</span><br />
Our displayed menu skips 19–21 and 29–32. Do not invent meanings for missing numbers. The installed source also contains a non-displayed option 19 that invokes a Pro update script; it is not part of this visible menu or a shortcut we tested. Other install/update text dispatch paths exist in the source and are outside this beginner service/menu reference.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Verification after any change</span><br />
Read the command result, run bt status where relevant, test a fresh panel login through the intended trusted URL and check affected services. A success message alone does not establish firewall, certificate or application correctness.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Other available service commands</span><br />
The installed script supports:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt start
bt stop
bt reload
bt logs</code></div></div>We inspected these command branches in the installed script; we did not execute every branch in this lesson. Stop deliberately takes the panel service down. Reload is distinct from a full stop/start restart. Logs can help diagnose a panel error, but their contents may contain private data. Review and redact them before sharing.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Handle default login information privately</span><br />
The official aaPanel documentation describes:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bt default</code></div></div>This can display the management address, security entrance, account name and saved initial password. Treat its entire output as private. Do not include it in a tutorial screenshot, support post or copied terminal transcript. We did not publish or capture this command's sensitive output for this guide.<br />
<br />
A displayed initial password is not proof that it is still your current password if credentials were changed later. Keep your actual credentials in your password manager. Do not reset them just to compare them with an old saved value.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7. Avoid changing security controls blindly</span><ul class="mycode_list"><li>Changing the panel port can lock you out if the new port is not permitted through both server and provider firewalls.<br />
</li>
<li>Password and username changes affect login access. Follow a separate planned recovery procedure and keep the new values private.<br />
</li>
<li>Cancelling domain/IP restrictions or turning off authentication changes protection of the management interface. Diagnose the actual cause before considering such a change.<br />
</li>
<li>Turning off SSL does not fix a certificate correctly; configure a trusted certificate for the intended panel hostname.<br />
</li>
<li>Repair can update panel files. It is not just a read-only diagnostic, so preserve backups and review the operation before using it.<br />
</li>
<li>Forcibly changing the MySQL root password is a database credential change, not a normal panel restart step.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">If the browser panel still does not load</span><br />
Check that you are using the correct hostname or IP, the configured panel port and its private security entrance. Verify DNS, listener status, firewall access and certificate validity. See <a href="https://adminsforum.com/Thread-guide-access-aapanel-through-a-domain-name-with-cloudflare-dns" target="_blank" rel="noopener" class="mycode_url">Access aaPanel Through a Domain Name</a> for the domain-based URL format.<br />
<br />
A panel that reports running but cannot be reached needs connectivity diagnosis; repeatedly restarting it will not correct a wrong domain or blocked port.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">What this guide verified</span><ul class="mycode_list"><li>bt executable present on the lab.<br />
</li>
<li>Status showed both panel processes running.<br />
</li>
<li>Interactive menu opened and exited using 0.<br />
</li>
<li>Panel restart completed and both processes returned.<br />
</li>
<li>Hosted Flask website returned HTTP 200 after the restart.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Reference:</span> <a href="https://www.aapanel.com/docs/guide/quickstart.html" target="_blank" rel="noopener" class="mycode_url">aaPanel official Quick Start</a>.<br />
<span style="font-style: italic;" class="mycode_i">Tested and illustrated by AdminsForum. All private login information was excluded from the published image.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[aaPanel vs CloudPanel (2026): Hands-On Comparison on the Same VPS]]></title>
			<link>https://adminsforum.com/Thread-guide-aapanel-vs-cloudpanel-2026-hands-on-comparison-on-the-same-vps</link>
			<pubDate>Wed, 14 Oct 2026 03:04:49 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-aapanel-vs-cloudpanel-2026-hands-on-comparison-on-the-same-vps</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">aaPanel vs CloudPanel: which free control panel should you run in 2026?</span></span><br />
<br />
If you already know aaPanel, you've probably seen CloudPanel recommended as the "lighter, faster" alternative. We installed both on the same VPS and used them for real (sites, SSL, databases, backups and security), so you can see exactly where aaPanel wins, where CloudPanel wins, and which one fits your server.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=165" target="_blank" title="">afcmp-01-aapanel-vs-cloudpanel.jpg</a> (Size: 93.4 KB / Downloads: 13)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How we tested</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Server:</span> the same VPS for both: 4 vCPU, 8 GB RAM.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">aaPanel 8.0.6</span> on Ubuntu 22.04 (aaPanel's recommended release). 8.0.7 is now current.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CloudPanel 2.5.4</span> on Ubuntu 24.04.<br />
</li>
<li>Every screenshot below comes from those installs, tested in October 2026.<br />
</li>
</ul>
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=166" target="_blank" title="">afcmp-02-test-setup.jpg</a> (Size: 122.14 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. What each panel is built for</span></span><br />
<span style="font-weight: bold;" class="mycode_b">aaPanel</span> is an all-in-one server panel. Besides websites it manages databases, FTP, Docker, a mail server, cron, a firewall and an app store with 200+ one-click apps. You can run Nginx, Apache or OpenLiteSpeed, with PHP, Python, Node.js and Go projects.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">CloudPanel</span> is narrower by design: a free panel for running web apps fast on Nginx, PHP-FPM, MySQL or MariaDB, Redis and Varnish. It hosts PHP, WordPress, Node.js, Python, static sites and reverse proxies, each isolated, on x86 or ARM.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=167" target="_blank" title="">afcmp-03-at-a-glance.jpg</a> (Size: 108.81 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Requirements and installation</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">aaPanel:</span> 1 core and 512 MB RAM minimum (1 GB recommended), and it supports many distros. Install is one command and takes about one minute. The installer prints a panel URL with a random port and security entrance, plus a generated login.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CloudPanel:</span> 1 core, 2 GB RAM and 10 GB disk minimum; Ubuntu 22.04/24.04/26.04 or Debian 12/13 only. Install is one command (verify the SHA-256 checksum from the docs), with the database engine chosen up front. It took about five minutes on our server. Create the admin user on port 8443 right away, because until you do, the first visitor can claim it.<br />
</li>
</ul>
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=168" target="_blank" title="">afcmp-04-system-requirements.jpg</a> (Size: 120.64 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
The first big difference: on first login aaPanel asks you to choose your stack (Nginx/Apache/OpenLiteSpeed, versions, quick or compiled install). CloudPanel installs and tunes everything for you.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=169" target="_blank" title="">afcmp-05-aapanel-stack-choice.jpg</a> (Size: 135.72 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Interface and ease of use</span></span><br />
aaPanel's dashboard is dense: gauges, overview, software and traffic panels, plus a long menu. CloudPanel's is calm: server details, monitoring charts, and two main links. In daily use, CloudPanel is easier to learn; aaPanel rewards the time you spend exploring it.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=170" target="_blank" title="">afcmp-06-dashboards.jpg</a> (Size: 111.15 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Features</span></span><br />
Both cover the essentials: multiple PHP versions, MySQL/MariaDB with phpMyAdmin, free Let's Encrypt SSL with auto-renew, a file manager and FTP. aaPanel adds Apache/OpenLiteSpeed and tabs for SQL Server, MongoDB, Redis and PostgreSQL.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=171" target="_blank" title="">afcmp-07-hosting-essentials.jpg</a> (Size: 128.24 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
Beyond hosting, aaPanel pulls ahead: a Docker manager, a mail server and a big app store. CloudPanel has none of these by design, so for email you'd pair it with an external service.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=172" target="_blank" title="">afcmp-08-beyond-web-hosting.jpg</a> (Size: 111.34 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Performance and resources</span></span><br />
<span style="font-style: italic;" class="mycode_i">We did not run a controlled load test of both panels, so we make no speed claims.</span> What we can compare is design and defaults:<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=173" target="_blank" title="">afcmp-09-design-defaults.jpg</a> (Size: 113.75 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
On our CloudPanel server (two sites, a few hours after install), <span style="font-weight: bold;" class="mycode_b">1.95 GB of 7.9 GB</span> was in use. Most of that was MySQL (~970 MB, sized for the server's RAM), plus PHP-FPM pools for every PHP version, Nginx and Varnish. aaPanel only installs what you pick, which is why it can run on 512 MB.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=174" target="_blank" title="">afcmp-10-cloudpanel-memory.jpg</a> (Size: 88.66 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Takeaway:</span> on a very small VPS, aaPanel's lighter minimum is a real advantage. On a dedicated web server, CloudPanel gives you a tuned stack out of the box. For real numbers, load test your own site (k6 or wrk) on the plan you actually use.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Security and updates</span></span><br />
aaPanel has a full security centre: firewall, SSH settings, brute-force protection, intrusion detection, scanning and an optional WAF. CloudPanel sticks to the essentials: firewall rules, basic auth in front of the panel, IP and bot blocking, 2FA and a Cloudflare-only mode. It also ships fail2ban, which we saw running on our server.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=175" target="_blank" title="">afcmp-11-security-tools.jpg</a> (Size: 110.03 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
A structural difference: on our aaPanel server, site files were owned by the shared <span style="font-weight: bold;" class="mycode_b">www</span> user. CloudPanel gives every site its own Linux user, which limits the damage if one site is compromised.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=176" target="_blank" title="">afcmp-12-site-isolation.jpg</a> (Size: 126.81 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
Updates: aaPanel uses the <span style="font-weight: bold;" class="mycode_b">Update</span> button in the panel, and CloudPanel uses the <br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>clp-update</code></div></div> command (take a snapshot first). OS updates, strong passwords and off-server backups are still your job with either panel.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7. Pricing</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">aaPanel:</span> the free edition hosts websites fully. <span style="font-weight: bold;" class="mycode_b">aaPanel Pro</span> is &#36;28.80/month, &#36;198/year or &#36;699 lifetime (sales run at times). It adds an advanced WAF, anti-tamper, website statistics, WordPress Pro tools, priority support and 20+ Pro extensions.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CloudPanel:</span> free, with no paid tiers listed.<br />
</li>
</ul>
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=177" target="_blank" title="">afcmp-13-pricing.jpg</a> (Size: 132.82 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
The bigger cost is usually the server: aaPanel runs on a 1 GB VPS, while CloudPanel needs at least 2 GB.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">8. Pros and cons</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=178" target="_blank" title="">afcmp-14-aapanel-pros-cons.jpg</a> (Size: 103.7 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=179" target="_blank" title="">afcmp-15-cloudpanel-pros-cons.jpg</a> (Size: 106.62 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Verdict</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Stay with (or choose) aaPanel</span> if you want one dashboard for the whole server, need Docker, a mail server or many apps, run a small 1 GB VPS, or need Apache/OpenLiteSpeed.<br />
<span style="font-weight: bold;" class="mycode_b">Choose CloudPanel</span> if you mainly host PHP, WordPress or Node.js sites and want a clean, fast setup where every site is isolated, on ARM servers too, with nothing to buy.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=180" target="_blank" title="">afcmp-16-verdict.jpg</a> (Size: 131.89 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: small;" class="mycode_size">Sources (checked October 2026; prices change): <a href="https://www.aapanel.com/new/pricing.html" target="_blank" rel="noopener" class="mycode_url">aaPanel pricing</a> · <a href="https://www.aapanel.com/new/download.html" target="_blank" rel="noopener" class="mycode_url">aaPanel requirements</a> · <a href="https://www.cloudpanel.io/docs/v2/requirements/" target="_blank" rel="noopener" class="mycode_url">CloudPanel requirements</a> · <a href="https://www.cloudpanel.io/" target="_blank" rel="noopener" class="mycode_url">cloudpanel.io</a></span><br />
<br />
Which panel do you run, and why? Share your setup below. If you get stuck installing either one, ask in the aaPanel or CloudPanel support forums.]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">aaPanel vs CloudPanel: which free control panel should you run in 2026?</span></span><br />
<br />
If you already know aaPanel, you've probably seen CloudPanel recommended as the "lighter, faster" alternative. We installed both on the same VPS and used them for real (sites, SSL, databases, backups and security), so you can see exactly where aaPanel wins, where CloudPanel wins, and which one fits your server.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=165" target="_blank" title="">afcmp-01-aapanel-vs-cloudpanel.jpg</a> (Size: 93.4 KB / Downloads: 13)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How we tested</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Server:</span> the same VPS for both: 4 vCPU, 8 GB RAM.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">aaPanel 8.0.6</span> on Ubuntu 22.04 (aaPanel's recommended release). 8.0.7 is now current.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CloudPanel 2.5.4</span> on Ubuntu 24.04.<br />
</li>
<li>Every screenshot below comes from those installs, tested in October 2026.<br />
</li>
</ul>
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=166" target="_blank" title="">afcmp-02-test-setup.jpg</a> (Size: 122.14 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. What each panel is built for</span></span><br />
<span style="font-weight: bold;" class="mycode_b">aaPanel</span> is an all-in-one server panel. Besides websites it manages databases, FTP, Docker, a mail server, cron, a firewall and an app store with 200+ one-click apps. You can run Nginx, Apache or OpenLiteSpeed, with PHP, Python, Node.js and Go projects.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">CloudPanel</span> is narrower by design: a free panel for running web apps fast on Nginx, PHP-FPM, MySQL or MariaDB, Redis and Varnish. It hosts PHP, WordPress, Node.js, Python, static sites and reverse proxies, each isolated, on x86 or ARM.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=167" target="_blank" title="">afcmp-03-at-a-glance.jpg</a> (Size: 108.81 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Requirements and installation</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">aaPanel:</span> 1 core and 512 MB RAM minimum (1 GB recommended), and it supports many distros. Install is one command and takes about one minute. The installer prints a panel URL with a random port and security entrance, plus a generated login.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CloudPanel:</span> 1 core, 2 GB RAM and 10 GB disk minimum; Ubuntu 22.04/24.04/26.04 or Debian 12/13 only. Install is one command (verify the SHA-256 checksum from the docs), with the database engine chosen up front. It took about five minutes on our server. Create the admin user on port 8443 right away, because until you do, the first visitor can claim it.<br />
</li>
</ul>
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=168" target="_blank" title="">afcmp-04-system-requirements.jpg</a> (Size: 120.64 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
The first big difference: on first login aaPanel asks you to choose your stack (Nginx/Apache/OpenLiteSpeed, versions, quick or compiled install). CloudPanel installs and tunes everything for you.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=169" target="_blank" title="">afcmp-05-aapanel-stack-choice.jpg</a> (Size: 135.72 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Interface and ease of use</span></span><br />
aaPanel's dashboard is dense: gauges, overview, software and traffic panels, plus a long menu. CloudPanel's is calm: server details, monitoring charts, and two main links. In daily use, CloudPanel is easier to learn; aaPanel rewards the time you spend exploring it.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=170" target="_blank" title="">afcmp-06-dashboards.jpg</a> (Size: 111.15 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Features</span></span><br />
Both cover the essentials: multiple PHP versions, MySQL/MariaDB with phpMyAdmin, free Let's Encrypt SSL with auto-renew, a file manager and FTP. aaPanel adds Apache/OpenLiteSpeed and tabs for SQL Server, MongoDB, Redis and PostgreSQL.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=171" target="_blank" title="">afcmp-07-hosting-essentials.jpg</a> (Size: 128.24 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
Beyond hosting, aaPanel pulls ahead: a Docker manager, a mail server and a big app store. CloudPanel has none of these by design, so for email you'd pair it with an external service.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=172" target="_blank" title="">afcmp-08-beyond-web-hosting.jpg</a> (Size: 111.34 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Performance and resources</span></span><br />
<span style="font-style: italic;" class="mycode_i">We did not run a controlled load test of both panels, so we make no speed claims.</span> What we can compare is design and defaults:<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=173" target="_blank" title="">afcmp-09-design-defaults.jpg</a> (Size: 113.75 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
On our CloudPanel server (two sites, a few hours after install), <span style="font-weight: bold;" class="mycode_b">1.95 GB of 7.9 GB</span> was in use. Most of that was MySQL (~970 MB, sized for the server's RAM), plus PHP-FPM pools for every PHP version, Nginx and Varnish. aaPanel only installs what you pick, which is why it can run on 512 MB.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=174" target="_blank" title="">afcmp-10-cloudpanel-memory.jpg</a> (Size: 88.66 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Takeaway:</span> on a very small VPS, aaPanel's lighter minimum is a real advantage. On a dedicated web server, CloudPanel gives you a tuned stack out of the box. For real numbers, load test your own site (k6 or wrk) on the plan you actually use.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. Security and updates</span></span><br />
aaPanel has a full security centre: firewall, SSH settings, brute-force protection, intrusion detection, scanning and an optional WAF. CloudPanel sticks to the essentials: firewall rules, basic auth in front of the panel, IP and bot blocking, 2FA and a Cloudflare-only mode. It also ships fail2ban, which we saw running on our server.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=175" target="_blank" title="">afcmp-11-security-tools.jpg</a> (Size: 110.03 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
A structural difference: on our aaPanel server, site files were owned by the shared <span style="font-weight: bold;" class="mycode_b">www</span> user. CloudPanel gives every site its own Linux user, which limits the damage if one site is compromised.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=176" target="_blank" title="">afcmp-12-site-isolation.jpg</a> (Size: 126.81 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
Updates: aaPanel uses the <span style="font-weight: bold;" class="mycode_b">Update</span> button in the panel, and CloudPanel uses the <br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>clp-update</code></div></div> command (take a snapshot first). OS updates, strong passwords and off-server backups are still your job with either panel.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7. Pricing</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">aaPanel:</span> the free edition hosts websites fully. <span style="font-weight: bold;" class="mycode_b">aaPanel Pro</span> is &#36;28.80/month, &#36;198/year or &#36;699 lifetime (sales run at times). It adds an advanced WAF, anti-tamper, website statistics, WordPress Pro tools, priority support and 20+ Pro extensions.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CloudPanel:</span> free, with no paid tiers listed.<br />
</li>
</ul>
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=177" target="_blank" title="">afcmp-13-pricing.jpg</a> (Size: 132.82 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
The bigger cost is usually the server: aaPanel runs on a 1 GB VPS, while CloudPanel needs at least 2 GB.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">8. Pros and cons</span></span><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=178" target="_blank" title="">afcmp-14-aapanel-pros-cons.jpg</a> (Size: 103.7 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=179" target="_blank" title="">afcmp-15-cloudpanel-pros-cons.jpg</a> (Size: 106.62 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Verdict</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Stay with (or choose) aaPanel</span> if you want one dashboard for the whole server, need Docker, a mail server or many apps, run a small 1 GB VPS, or need Apache/OpenLiteSpeed.<br />
<span style="font-weight: bold;" class="mycode_b">Choose CloudPanel</span> if you mainly host PHP, WordPress or Node.js sites and want a clean, fast setup where every site is isolated, on ARM servers too, with nothing to buy.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=180" target="_blank" title="">afcmp-16-verdict.jpg</a> (Size: 131.89 KB / Downloads: 9)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-size: small;" class="mycode_size">Sources (checked October 2026; prices change): <a href="https://www.aapanel.com/new/pricing.html" target="_blank" rel="noopener" class="mycode_url">aaPanel pricing</a> · <a href="https://www.aapanel.com/new/download.html" target="_blank" rel="noopener" class="mycode_url">aaPanel requirements</a> · <a href="https://www.cloudpanel.io/docs/v2/requirements/" target="_blank" rel="noopener" class="mycode_url">CloudPanel requirements</a> · <a href="https://www.cloudpanel.io/" target="_blank" rel="noopener" class="mycode_url">cloudpanel.io</a></span><br />
<br />
Which panel do you run, and why? Share your setup below. If you get stuck installing either one, ask in the aaPanel or CloudPanel support forums.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Install aaPanel Free Edition on Ubuntu 22.04]]></title>
			<link>https://adminsforum.com/Thread-guide-install-aapanel-free-edition-on-ubuntu-22-04</link>
			<pubDate>Sat, 10 Oct 2026 22:59:42 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-install-aapanel-free-edition-on-ubuntu-22-04</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Install aaPanel Free Edition on a clean Ubuntu 22.04 VPS, sign in, and verify the dashboard before installing your website software.</span> This walkthrough was tested on 10 October 2026 using Ubuntu 22.04.5 LTS and aaPanel Free 8.0.6.<br />
<br />
Our lab has 2 vCPU, 4 GB RAM and a 40 GB disk. These are the tested specifications, not a universal sizing requirement. All screenshots are our own, annotated and branded AdminsForum.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=2" loading="lazy"  alt="[Image: attachment.php?aid=2]" class="mycode_img" /><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you start</span></span><ul class="mycode_list"><li>Use a clean VPS with root or sudo access. Do not install over another hosting panel or an existing production stack.<br />
</li>
<li>Keep access to your provider's recovery console and make an off-server backup of anything you need.<br />
</li>
<li>A domain is optional for panel installation. You will need DNS when setting up a named website later.<br />
</li>
<li>Check the <a href="https://www.aapanel.com/docs/guide/quickstart.html" target="_blank" rel="noopener" class="mycode_url">official aaPanel requirements</a>. Supported operating systems and installer details can change.<br />
</li>
</ul>
Read our <a href="https://adminsforum.com/Thread-guide-aapanel-installation-requirements-vps-domain-setup-checklist" target="_blank" rel="noopener" class="mycode_url">VPS, domain and setup checklist</a> first if this is your first server.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Connect to your VPS</span></span><br />
Use the server address and credentials supplied by your provider. Replace the placeholder below:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ssh root@YOUR_SERVER_IP</code></div></div>Check the operating system, architecture, memory and available disk space:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>cat /etc/os-release
uname -m
free -h
df -h /
ss -lntp
timedatectl status</code></div></div>Our server reported Ubuntu 22.04.5, x86_64 and synchronized time. No existing web server or database was listening.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Update Ubuntu</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>sudo apt-get update
sudo apt-get upgrade</code></div></div>Review the package manager's prompts. If a reboot is required, restart and reconnect before continuing:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>test -f /var/run/reboot-required &amp;&amp; cat /var/run/reboot-required
sudo reboot</code></div></div>Wait for the server to return, then open a fresh SSH connection. Do not run another package update while the aaPanel installer is working.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Download the official aaPanel installer</span></span><br />
Download from aaPanel's official HTTPS address with certificate verification enabled:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl --fail --show-error --location --proto '=https' --tlsv1.2 &#92;
  https://www.aapanel.com/script/install_panel_en.sh &#92;
  -o install_panel_en.sh</code></div></div>Review the downloaded script before running it as administrator:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>less install_panel_en.sh</code></div></div>Press q to leave the viewer. If curl reports a TLS or download error, resolve that error instead of running an incomplete file or disabling certificate checks.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Install aaPanel Free Edition</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>sudo bash install_panel_en.sh forum</code></div></div>Confirm the installation directory when prompted. Our installation used /www. Wait for the installation-success message; the time needed depends on the server and download speed.<br />
<br />
Save the generated panel URL, username and password privately. The URL includes a management port and a private entrance path. Use your own generated values; a different server's URL will not work. Installation logs can contain credentials, so redact them before asking for help.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Open the panel and verify the dashboard</span></span><br />
Open the exact URL printed by your installer and sign in. If your provider has a separate firewall, allow the generated management port for your own management access. The panel's HTTPS certificate validated in our lab. If yours shows a browser certificate warning, investigate the certificate before proceeding.<br />
<br />
The opening screenshot highlights:<br />
<ol type="1" class="mycode_list"><li>The installed panel version: 8.0.6 in our test.<br />
</li>
<li>Server load, CPU, RAM and disk information.<br />
</li>
<li>Website, FTP and database counters. Zero counts are normal before creating your first site.<br />
</li>
</ol>
The dashboard can display Pro upgrade promotions. Our App Store explicitly reported FREE 8.0.6; no Pro subscription was required for this installation.<br />
<br />
The first-login software selection is the next stage. Follow the separate web stack guide rather than installing every available component.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Troubleshooting</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Panel URL returns 404:</span> Check that you included the private entrance path. In our test, requesting only the management-port root returned 404 as expected.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Connection times out:</span> Check the server address, generated port, provider firewall and the server firewall. Do not open every port to solve a single access problem.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Package manager is busy:</span> Wait for the current update or installation to finish. Do not delete package-manager lock files while a process is still using them.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Check panel services from SSH:</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>sudo /etc/init.d/bt status</code></div></div>Our panel and task services were running. We also completed a reboot and verified fresh SSH and panel access afterward.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Frequently asked questions</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Do I need a domain to install aaPanel?</span><br />
No. You can install and access the panel using the server's generated management URL. A domain is useful when you create a website.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Does installing aaPanel also install PHP and a database?</span><br />
The panel installation and web stack selection are separate stages. Choose compatible software for your intended application.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Is this the Free or Pro edition?</span><br />
This guide uses aaPanel Free Edition. Paid plugins and Pro tutorials will be covered separately.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Next:</span> <a href="https://adminsforum.com/Thread-guide-aapanel-free-edition-install-nginx-php-mariadb" target="_blank" rel="noopener" class="mycode_url">Install Nginx, PHP and MariaDB</a>, then secure panel access before hosting a real website.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Source:</span> <a href="https://www.aapanel.com/docs/guide/quickstart.html" target="_blank" rel="noopener" class="mycode_url">aaPanel official Quick Start</a>. Tested versions are recorded above; later releases may look different.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=2" target="_blank" title="">aapanel-dashboard-annotated-20261010.png</a> (Size: 461.44 KB / Downloads: 20)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Install aaPanel Free Edition on a clean Ubuntu 22.04 VPS, sign in, and verify the dashboard before installing your website software.</span> This walkthrough was tested on 10 October 2026 using Ubuntu 22.04.5 LTS and aaPanel Free 8.0.6.<br />
<br />
Our lab has 2 vCPU, 4 GB RAM and a 40 GB disk. These are the tested specifications, not a universal sizing requirement. All screenshots are our own, annotated and branded AdminsForum.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=2" loading="lazy"  alt="[Image: attachment.php?aid=2]" class="mycode_img" /><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you start</span></span><ul class="mycode_list"><li>Use a clean VPS with root or sudo access. Do not install over another hosting panel or an existing production stack.<br />
</li>
<li>Keep access to your provider's recovery console and make an off-server backup of anything you need.<br />
</li>
<li>A domain is optional for panel installation. You will need DNS when setting up a named website later.<br />
</li>
<li>Check the <a href="https://www.aapanel.com/docs/guide/quickstart.html" target="_blank" rel="noopener" class="mycode_url">official aaPanel requirements</a>. Supported operating systems and installer details can change.<br />
</li>
</ul>
Read our <a href="https://adminsforum.com/Thread-guide-aapanel-installation-requirements-vps-domain-setup-checklist" target="_blank" rel="noopener" class="mycode_url">VPS, domain and setup checklist</a> first if this is your first server.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Connect to your VPS</span></span><br />
Use the server address and credentials supplied by your provider. Replace the placeholder below:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ssh root@YOUR_SERVER_IP</code></div></div>Check the operating system, architecture, memory and available disk space:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>cat /etc/os-release
uname -m
free -h
df -h /
ss -lntp
timedatectl status</code></div></div>Our server reported Ubuntu 22.04.5, x86_64 and synchronized time. No existing web server or database was listening.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. Update Ubuntu</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>sudo apt-get update
sudo apt-get upgrade</code></div></div>Review the package manager's prompts. If a reboot is required, restart and reconnect before continuing:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>test -f /var/run/reboot-required &amp;&amp; cat /var/run/reboot-required
sudo reboot</code></div></div>Wait for the server to return, then open a fresh SSH connection. Do not run another package update while the aaPanel installer is working.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Download the official aaPanel installer</span></span><br />
Download from aaPanel's official HTTPS address with certificate verification enabled:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl --fail --show-error --location --proto '=https' --tlsv1.2 &#92;
  https://www.aapanel.com/script/install_panel_en.sh &#92;
  -o install_panel_en.sh</code></div></div>Review the downloaded script before running it as administrator:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>less install_panel_en.sh</code></div></div>Press q to leave the viewer. If curl reports a TLS or download error, resolve that error instead of running an incomplete file or disabling certificate checks.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Install aaPanel Free Edition</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>sudo bash install_panel_en.sh forum</code></div></div>Confirm the installation directory when prompted. Our installation used /www. Wait for the installation-success message; the time needed depends on the server and download speed.<br />
<br />
Save the generated panel URL, username and password privately. The URL includes a management port and a private entrance path. Use your own generated values; a different server's URL will not work. Installation logs can contain credentials, so redact them before asking for help.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Open the panel and verify the dashboard</span></span><br />
Open the exact URL printed by your installer and sign in. If your provider has a separate firewall, allow the generated management port for your own management access. The panel's HTTPS certificate validated in our lab. If yours shows a browser certificate warning, investigate the certificate before proceeding.<br />
<br />
The opening screenshot highlights:<br />
<ol type="1" class="mycode_list"><li>The installed panel version: 8.0.6 in our test.<br />
</li>
<li>Server load, CPU, RAM and disk information.<br />
</li>
<li>Website, FTP and database counters. Zero counts are normal before creating your first site.<br />
</li>
</ol>
The dashboard can display Pro upgrade promotions. Our App Store explicitly reported FREE 8.0.6; no Pro subscription was required for this installation.<br />
<br />
The first-login software selection is the next stage. Follow the separate web stack guide rather than installing every available component.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Troubleshooting</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Panel URL returns 404:</span> Check that you included the private entrance path. In our test, requesting only the management-port root returned 404 as expected.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Connection times out:</span> Check the server address, generated port, provider firewall and the server firewall. Do not open every port to solve a single access problem.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Package manager is busy:</span> Wait for the current update or installation to finish. Do not delete package-manager lock files while a process is still using them.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Check panel services from SSH:</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>sudo /etc/init.d/bt status</code></div></div>Our panel and task services were running. We also completed a reboot and verified fresh SSH and panel access afterward.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Frequently asked questions</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Do I need a domain to install aaPanel?</span><br />
No. You can install and access the panel using the server's generated management URL. A domain is useful when you create a website.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Does installing aaPanel also install PHP and a database?</span><br />
The panel installation and web stack selection are separate stages. Choose compatible software for your intended application.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Is this the Free or Pro edition?</span><br />
This guide uses aaPanel Free Edition. Paid plugins and Pro tutorials will be covered separately.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Next:</span> <a href="https://adminsforum.com/Thread-guide-aapanel-free-edition-install-nginx-php-mariadb" target="_blank" rel="noopener" class="mycode_url">Install Nginx, PHP and MariaDB</a>, then secure panel access before hosting a real website.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Source:</span> <a href="https://www.aapanel.com/docs/guide/quickstart.html" target="_blank" rel="noopener" class="mycode_url">aaPanel official Quick Start</a>. Tested versions are recorded above; later releases may look different.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=2" target="_blank" title="">aapanel-dashboard-annotated-20261010.png</a> (Size: 461.44 KB / Downloads: 20)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>