Skip to content

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:

  1. Environment Setup: Installation of the Docker engine and necessary dependencies.

  2. Image Retrieval: Pulling the required official images for mysql:8.0 and joomla:latest.

  3. Database Provisioning: A MySQL container is initialized with a dedicated database named joomla.

  4. Application Deployment: The Joomla container is started and linked to the database container.

  5. 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, and 3306 are 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:

docker compose -f /root/nginx/compose.yml pull
docker compose -f /root/nginx/compose.yml up -d

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:

docker compose -f /root/nginx/compose.yml down

To start the proxy:

docker compose -f /root/nginx/compose.yml up -d

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×