Deployment Overview of Joomla on Server¶
Prerequisites and Basic Requirements¶
To ensure a successful deployment, the following requirements must be met:
-
Operating System: Ubuntu.
-
Privileges: Root or sudo access is required for installing Docker and managing containers.
-
Domain Access: A valid domain configured via DNS to point to the server IP.
-
Ports:
-
80(HTTP) for SSL certificate challenges. -
443(HTTPS) for secure web traffic. -
3306(MySQL) for database access. -
8080(Internal HTTP) for the application service.
FQDN of the final panel on the hostkey.in domain¶
The application is accessible via a specific subdomain generated based on your server ID.
| Parameter | Value |
|---|---|
| Prefix | joomla |
| Domain | hostkey.in |
| Full template | joomla{Server_ID_from_Invapi}.hostkey.in |
Application installation process¶
The application is deployed using a Docker-based method on Ubuntu systems. The installation involves the following steps:
-
Environment Setup: Installation of the Docker engine and necessary dependencies.
-
Image Retrieval: Pulling the required official images for
mysql:8.0andjoomla:latest. -
Database Provisioning: A MySQL container is initialized with a dedicated database named
joomla. -
Application Deployment: The Joomla container is started and linked to the database container.
-
Proxy Configuration: An Nginx reverse proxy is configured using Docker Compose to handle SSL termination via Certbot and route traffic to the application on port
8080.
Access Rights and Security¶
-
Firewall: Ensure that ports
80,443, and3306are open to allow web traffic and database management. -
Container Isolation: The Joomla application communicates with the MySQL database through a dedicated Docker network link.
-
SSL/TLS: Secure communication is enforced via Nginx using Let's Encrypt certificates.
Databases¶
The application uses a MySQL 8.0 database container for data persistence.
| Parameter | Value |
|---|---|
| Database Name | joomla |
| Database User | joomla_user |
| Root Access | Enabled via root password |
| Storage Location | Managed via Docker volume: mysql_data |
Docker Containers and Their Deployment¶
The deployment consists of three primary containers:
MySQL Container¶
-
Image:
mysql:8.0 -
Container Name:
joomla_db -
Ports:
3306:3306 -
Environment Variables:
-
MYSQL_ROOT_PASSWORD: Set via system credentials. -
MYSQL_DATABASE:joomla -
MYSQL_USER:root -
MYSQL_PASSWORD: Set via system credentials. -
Volumes:
mysql_data:/var/lib/mysql -
Restart Policy:
always
Joomla Container¶
-
Image:
joomla:latest -
Container Name:
joomla -
Ports:
8080:80 -
Environment Variables:
-
JOOMLA_DB_HOST:joomla_db -
JOOMLA_DB_NAME:joomla -
JOOMLA_DB_USER:joomla_user -
JOOMLA_DB_PASSWORD: Set via system credentials. -
Volumes:
joomla_data:/var/www/html -
Restart Policy:
always
Nginx Proxy Container¶
-
Image:
jonasal/nginx-certbot:latest -
Network Mode:
host -
Environment Variables:
-
CERTBOT_EMAIL:[email protected] -
Volumes:
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d -
Restart Policy:
unless-stopped
Application Update Instructions¶
To update the Joomla application, perform the following steps to pull the latest images and restart the services:
Location of configuration files and data¶
| Component | Path |
|---|---|
| Nginx Configuration | /data/nginx/user_conf.d/ |
| Nginx Compose File | /root/nginx/compose.yml |
| MySQL Data Volume | mysql_data (Docker managed) |
| Joomla Web Files | joomla_data (Docker managed) |
Available ports for connection¶
-
HTTPS:
443 -
MySQL:
3306 -
Internal Application Port:
8080
Starting and Stopping the application¶
The containers are configured with restart policies to ensure they start automatically. To manually manage the proxy service:
To stop the proxy:
To start the proxy: