What is aaPanel?
aaPanel is a free, open-source server management panel with built-in Docker management, allowing you to manage traditional web hosting and Docker containers from a single dashboard.
Installing aaPanel
wget -O install.sh https://www.aapanel.com/script/install_7.0_en.sh
sudo bash install.sh aapanel
# Access: http://YOUR_IP:7800/RANDOM_PATH
# Install from App Store: Nginx, MySQL, PHP, Docker Manager
Managing Containers
# Docker > Containers > Create
# Image, name, port mapping, volumes, env vars, restart policy
# Features: start/stop, live logs, shell access, resource monitoring
Docker Compose Projects
# Docker > Compose > Create Project
# Paste docker-compose.yml
# aaPanel manages the full stack lifecycle
# Example WordPress + MySQL stack:
version: "3.8"
services:
app:
image: wordpress:latest
ports: ["8080:80"]
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
volumes: [wp_data:/var/www/html]
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: wordpress
volumes: [db_data:/var/lib/mysql]
volumes:
wp_data:
db_data:
Nginx Reverse Proxy
# Website > Add Site > example.com
# Site Settings > Reverse Proxy > Target: http://127.0.0.1:8080
# Enable SSL with Let us Encrypt
# Adds proper proxy headers automatically
Mixing Traditional and Docker
# Traditional PHP sites: managed by Nginx + PHP-FPM
# Docker apps: reverse proxied through aaPanel Nginx
# Shared MySQL: Docker apps connect to host.docker.internal:3306
Container Monitoring
# Per-container: CPU, memory, network I/O, block I/O
# Set resource limits: memory cap, CPU weight
# Prevents container resource exhaustion
Security and Backup
- Keep Docker images updated for security patches
- Use aaPanel firewall to restrict container port exposure
- Limit container resources to prevent exhaustion
- Include /var/lib/docker/volumes/ in backups
- Use mysqldump for database containers, not volume snapshots
- Prune unused images, containers, and volumes regularly