A quick note on what aaPanel actually is, since the question comes up often: BT Panel (ๅฎๅก้ขๆฟ) is the Linux server management panel widely used in China, and aaPanel is its international version. The interface and feature set are essentially the same, but aaPanel drops some China-specific services and works more reliably in international network environments. If you're running an overseas VPS, aaPanel is the right choice over BT Panel.
The free version of aaPanel covers most website hosting needs โ site management, databases, SSL, scheduled tasks, and file management are all included. The Pro version adds more advanced features and is available as an optional purchase.
System Requirements and VPS Selection
aaPanel supports all major Linux distributions. Recommended options:
- Ubuntu 22.04 LTS or 24.04 LTS
- Debian 12
- AlmaLinux 9
- Rocky Linux 9
CentOS 7 has reached end-of-life and should not be used for new deployments.
VPS configuration reference:
| Use Case | CPU | RAM | Storage |
|---|---|---|---|
| Personal blog | 1 core | 2 GB | 30 GB SSD |
| WordPress site | 2 cores | 4 GB | 50 GB NVMe |
| WooCommerce store | 4 cores | 8 GB | 100 GB NVMe |
RAM is where bottlenecks appear first. WordPress running alongside MySQL and Redis on 1 GB of memory is a tight fit โ 2 GB is the practical minimum.
Step 1: Connect to Your VPS
Windows users can use Windows Terminal or PuTTY. Windows Terminal comes pre-installed on Windows 11 โ just search for it.
macOS / Linux users open a terminal and run:
ssh root@your-server-ip
Replace your-server-ip with your VPS's public IP address. The first connection will prompt you to confirm the host fingerprint โ type yes and press Enter. When entering your password, no characters will appear on screen; that's normal. Type the password and press Enter.
Step 2: Update the System
Before doing anything else, update the system. This step gets skipped often, and dependency issues later are the result.
Ubuntu / Debian:
apt update && apt upgrade -y
AlmaLinux / Rocky Linux:
dnf update -y
After updating, confirm the timezone setting:
timedatectl set-timezone Asia/Shanghai
Replace the timezone name with your actual location. Run timedatectl list-timezones to see all available options.
Step 3: Install aaPanel
aaPanel provides an official installation script that detects your system version automatically. Always verify the current installation command on the official aaPanel site before running โ the commands below are for reference only:
Ubuntu / Debian:
wget -O install.sh \
http://www.aapanel.com/script/install-ubuntu_6.0_en.sh \
&& bash install.sh aapanel
AlmaLinux / Rocky Linux:
wget -O install.sh \
http://www.aapanel.com/script/install_6.0_en.sh \
&& bash install.sh aapanel
Installation takes 5โ10 minutes and handles dependencies automatically. When it completes, the terminal will display something like:
==================================================================
Congratulations! Installed successfully!
==================================================================
aaPanel Internet Address: https://1.2.3.4:7800/xxxxxxxx
username: admin
password: xxxxxxxx
==================================================================
Save the panel URL, username, and password โ you'll need these for your first login.
Step 4: Open Firewall Ports
aaPanel uses a random port by default (typically around 7800). You need to open ports in two places:
Cloud provider security group
Providers like DigitalOcean, Vultr, and Hetzner have network firewall or security group settings in their control panels. Allow the following ports:
| Port | Purpose |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
| Panel port | aaPanel console |
Server-level firewall
On Ubuntu using UFW:
ufw allow 22
ufw allow 80
ufw allow 443
ufw allow 7800
ufw enable
Replace 7800 with your actual panel port.
Step 5: Log In to aaPanel
Open the URL shown at the end of installation in your browser โ the format is https://your-ip:port/random-path.
The browser will warn about an untrusted certificate, because the panel uses a self-signed certificate by default. Click "Advanced" and proceed anyway.
After your first login, do three things immediately: change the default password, change the panel port, and optionally bind your aaPanel account to receive security notifications.
Step 6: Install the LNMP Stack
On first login, a dialog will appear recommending software to install. Select:
- Nginx (web server โ lower memory usage than Apache)
- MySQL 8.0
- PHP 8.2
- phpMyAdmin (database management โ optional)
- Redis (object cache for WordPress performance)
Click one-click install and wait 10โ20 minutes for everything to complete.
If the dialog doesn't appear on first login, find "App Store" in the left sidebar and install the above manually.
Step 7: Deploy WordPress
With the LNMP stack ready, add your first site. In the left sidebar, go to "Website" โ "Add site" and fill in:
- Domain: your domain name โ make sure DNS is already pointing to this VPS's IP
- Root directory: keep the default or set a custom path
- PHP version: select 8.2
- Database: choose to create a new database and save the database name, username, and password
After the site is created, navigate to the web root directory and upload the WordPress archive, or use aaPanel's built-in file manager. The faster approach is downloading directly via wget:
cd /www/wwwroot/your-domain
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz --strip-components=1
rm latest.tar.gz
Then open your domain in a browser and follow the WordPress installation wizard to enter your database details and complete setup.
Step 8: Configure SSL
In aaPanel's website management, click "SSL" for your domain, select "Let's Encrypt," enter an email address, and click apply.
Once issued, enable "Force HTTPS" to redirect all traffic to HTTPS. aaPanel handles automatic renewal before the certificate expires โ no manual action needed.
Step 9: Security Hardening (Don't Skip This)
Leaving aaPanel in its default configuration after installation is one of the most common mistakes. The following steps are not optional:
Change the default panel port
In "Settings," change the panel port to a non-default number โ something like 29876. After changing it, log back in using the new port and update both the server firewall and cloud security group rules accordingly.
Restrict panel access by IP
In the panel security settings, add your own IP to the whitelist so only approved IPs can access the panel. If you have a dynamic IP, either leave this blank or update it regularly.
Enable two-factor authentication
Turn on 2FA in account settings and bind it with Google Authenticator or Authy. This is an important layer of protection if a password is ever compromised.
Disable root password login, switch to SSH key authentication
Generate an SSH key pair if you don't have one:
ssh-keygen -t ed25519 -C "[email protected]"
Copy the public key to the server's authorized keys file:
mkdir -p ~/.ssh
echo "your-public-key-content" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Then edit the SSH configuration to disable password login:
nano /etc/ssh/sshd_config
Find these two lines and set them as follows:
PasswordAuthentication no
PubkeyAuthentication yes
Restart the SSH service:
systemctl restart sshd
Important: Confirm that SSH key login works successfully before restarting SSH โ otherwise you'll lock yourself out.
Set up automated backups
In aaPanel's "Cron" section, configure a daily backup of both site files and the database. Store backups in a separate location โ remote FTP or object storage works well.
Installing Docker (Optional)
If you want to run Docker applications on the same server โ Open WebUI, n8n, Dify, Nextcloud โ aaPanel's App Store includes a Docker manager that installs with one click.
Once installed, containers can be managed through the aaPanel interface without needing to remember Docker commands. For users who want to run WordPress alongside Docker-based applications on a single VPS, this combination is convenient.
Performance Optimization
WordPress performance depends heavily on caching. With Redis installed, add the Redis Object Cache plugin in WordPress and configure it to point at the local Redis instance.
OPcache accelerates PHP execution. Check that it's enabled in aaPanel's PHP settings โ it's usually on by default.
Nginx FastCGI Cache can cache full page output and works well for blogs with infrequent content updates, but the configuration is more involved. For beginners, start with a WordPress caching plugin like W3 Total Cache or LiteSpeed Cache and revisit FastCGI Cache later.
Common Troubleshooting
Panel installation fails: verify that your OS version is on the supported list, confirm the system was updated before installation, and check available memory โ less than 1 GB will cause the installer to fail.
Can't access the panel: check that the panel port is open in both the cloud security group and the server-level firewall. Both need to allow it.
SSL issuance fails: confirm that your domain's DNS is pointing to the current server IP. Let's Encrypt validates domain ownership by making an external HTTP request to your domain.
Port conflicts: if port 80 or 443 is already in use, check for other services listening on those ports with ss -tlnp | grep :80.
How aaPanel Compares to Other Control Panels
| Panel | Free | Docker Support | WordPress | Learning Curve |
|---|---|---|---|---|
| aaPanel | โ | โ | โญโญโญโญโญ | Low |
| CyberPanel | โ | Partial | โญโญโญโญโญ | Medium |
| HestiaCP | โ | Limited | โญโญโญโญ | Medium |
| CloudPanel | โ | โญโญโญ | โญโญโญโญโญ | Medium |
| cPanel | โ | โญโญโญ | โญโญโญโญโญ | Low |
aaPanel's main advantages are the free tier, solid Docker support, and an interface that's approachable for users coming from a Chinese-language hosting background. If you'd rather not deal with server management at all, managed platforms like Cloudways are worth considering โ less operational overhead, but at a higher price. Which direction makes sense depends on how much time you're willing to put into server maintenance.