English
Get started

← All templates · Websites and shops

Deploy Joomla in one click

The open-source CMS for websites, with several languages, access levels and thousands of extensions

A self-hosted alternative to Wix and Squarespace.

What is Joomla?

Joomla is a free and open-source content management system for websites of every kind, from a club’s pages to a company’s site in several languages. Articles are filed in categories and shown through menus and modules, and the core has the Cassiopeia template, a media manager, contacts with their forms, tags, smart search and search-engine-friendly addresses. A multilingual site needs no extension: each language gets its content and home page, and articles are linked to their translations. User groups and access levels decide who sees and edits what, and the Joomla Extensions Directory lists over 5,000 extensions.

This template runs Joomla 6 from the official image with MariaDB, and installs it at the first start from the fields, so the web installer is never open to a stranger. Joomla’s files are kept in a volume and update from the Administrator, and since Joomla 5.4 a site that Joomla’s update service can reach installs minor and patch releases by itself. The catch: a major version is upgraded by hand, once your extensions support it.

Hosting Joomla on Pethost

  1. You sign in to Pethost with a passkey, GitHub or Google. No machine yet? You pick a plan, and the link waits until it is ready.
  2. New project opens at Joomla. You fill in what it asks for and click Create project: Email, Username, Admin password.
  3. In a minute or two Joomla is live at its own address with HTTPS. Its secrets are made at random, and its data is in the nightly backup.
  4. It is a project like any other: you or your agent can change it, roll it back or restore it.

Questions about Joomla

Is Joomla free?

Yes. Joomla is free and open source under the GNU General Public License, version 2 or later. Volunteers make it, and the non-profit Open Source Matters governs the project.

Is Joomla still maintained?

Yes. Joomla 6.2 came out on 13 October 2026, Joomla 6 gets bug fixes until 17 October 2028 and security fixes until 16 October 2029, and Joomla 6.3 is planned for April 2027.

How do I update Joomla?

Back up first, then open System, choose Joomla under Update and click Start Update, or run php cli/joomla.php core:update in the joomla service’s shell. With automated updates, on for a new site that Joomla’s update service can reach, it installs minor and patch releases by itself.

How do I make a multilingual site in Joomla?

With the core alone: install the languages, publish a content language for each, turn on the Language Filter plugin, make a home menu item per language, and link each article to its translations in its Associations tab.

Why does Joomla want a 12-character password?

A new Joomla site asks for passwords of 12 characters at least, the Super User’s too. This template gives your admin password to Joomla’s installer, which refuses a shorter one: the site then starts once ADMIN_PASSWORD in .env is longer.

How much memory and disk does Joomla need?

Joomla is light: about 170 MB of memory with MariaDB, and the site grows with the images and files you upload. On Pethost the Starter plan is enough for it, with room for other apps beside it.

Joomla Docker Compose file

The template is this compose.yaml and the variables written into the project’s .env as it is created. Pethost runs the file as it is written.

Containers: joomla (joomla:6-apache), db (mariadb:11.8).

Volumes, in the nightly backup: joomla, db.

services:
  joomla:
    image: joomla:6-apache
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      JOOMLA_DB_HOST: db
      JOOMLA_DB_NAME: joomla
      JOOMLA_DB_USER: joomla
      JOOMLA_DB_PASSWORD: ${DB_PASSWORD}
      SITE_NAME: ${HOST}
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # A new Joomla opens its web installer to whoever comes first. So the image's entrypoint is
    # run first only to copy Joomla into the volume and make the database, Joomla's own CLI
    # installer then makes the site and its Super User from the fields, and Apache starts only
    # once the site is installed: a refusal (Joomla takes a password of 12 characters at least)
    # stops the start, says why in the logs, and is tried again at the next.
    #
    # PHP's own upload limit is 2 MB, too little for a photo, and the image has no variable for it.
    entrypoint:
      - sh
      - -c
      - |
        set -e
        printf 'upload_max_filesize = 64M\npost_max_size = 64M\n' > /usr/local/etc/php/conf.d/uploads.ini
        /entrypoint.sh apache2 -v > /dev/null
        if [ -e installation/joomla.php ]; then
          php installation/joomla.php install --no-interaction \
            --site-name="$$SITE_NAME" \
            --admin-user="$$ADMIN_USERNAME" \
            --admin-username="$$ADMIN_USERNAME" \
            --admin-password="$$ADMIN_PASSWORD" \
            --admin-email="$$ADMIN_EMAIL" \
            --db-type=mysqli \
            --db-host="$$JOOMLA_DB_HOST" \
            --db-user="$$JOOMLA_DB_USER" \
            --db-pass="$$JOOMLA_DB_PASSWORD" \
            --db-name="$$JOOMLA_DB_NAME" \
            --db-prefix=jos_ \
            --db-encryption=0
          rm -rf installation
          chown -R www-data:www-data .
          chmod 444 configuration.php
        fi
        exec /entrypoint.sh apache2-foreground
    volumes:
      - joomla:/var/www/html

  db:
    image: mariadb:11.8
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: joomla
      MARIADB_USER: joomla
      MARIADB_PASSWORD: ${DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 5s
      timeout: 5s
      retries: 20
      start_period: 30s

volumes:
  joomla:
  db:

More in Websites and shops