Deploy Joomla and OpenSSH Docker containers effortlessly, across Linux, macOS, and Windows.
Created by @llewellynvdm β powered by the Octoleo team.
- Overview
- Supported Operating Systems
- Prerequisites
- Installation
- Usage
- Updating Octojoom
- Uninstall
- Contributing
- License
- Quick Reference
Octojoom is a powerful Bash-based utility that simplifies the process of deploying and managing Dockerized Joomla environments alongside OpenSSH for secure, multi-user development setups.
It provides both:
- Interactive menu-driven control via whiptail dialogs
- Direct CLI commands for automation and scripting
- π Quick Joomla + OpenSSH Docker deployment
- βοΈ Automatic
.envmanagement for persistent settings - π Self-updating and easy uninstall
- π§° Works across Linux, macOS, and Windows environments
- π§© Uses environment variables to remember your setup
π‘ Octojoom detects your OS automatically, installs or guides required tools, and walks you through Docker setup.
Linted by ShellCheck β
| Platform | Tested Versions | Installer | Notes |
|---|---|---|---|
| Ubuntu / Debian / Pop!_OS / Linux Mint | Ubuntu 20.04 β 24.04, Debian 11 β 12 | apt-get |
β Officially tested and supported |
| macOS (Intel & Apple Silicon) | Monterey β Sonoma | brew |
β Fully supported |
| Windows (MSYS2 / Cygwin / Git Bash) | Windows 10 & 11 | choco |
|
| Other Linux (Fedora / Arch / Manjaro / openSUSE) | Latest stable | Manual | βοΈ Works if dependencies are installed manually |
Ensure the following are installed before running Octojoom:
| Dependency | Minimum Version | Purpose |
|---|---|---|
| Bash | β₯ 4.0 | Required shell |
| curl | any | Downloads resources |
| awk | any | Text parsing |
| whiptail / newt | any | Interactive menus |
| Docker Engine & Docker Compose | latest | Container runtime |
Follow the setup guide for your system below. (Click to expand any section.)
π§ Ubuntu / Debian / Pop!_OS / Linux Mint
# Install dependencies
sudo apt-get update
sudo apt-get install -y bash curl whiptail
# Install Octojoom
sudo curl -L "https://raw.githubusercontent.com/octoleo/octojoom/refs/heads/master/src/octojoom" -o /usr/local/bin/octojoom
sudo chmod +x /usr/local/bin/octojoom
# Verify installation
octojoom -hβ Octojoom is now ready to use! Run it directly to launch the interactive menu.
π macOS (Intel & Apple Silicon)
# Install Homebrew if needed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install newt
brew install --cask docker
# Launch Docker Desktop once manually
open /Applications/Docker.app
# Install Octojoom
sudo curl -L "https://raw.githubusercontent.com/octoleo/octojoom/refs/heads/master/src/octojoom" -o /usr/local/bin/octojoom
sudo chmod +x /usr/local/bin/octojoom
# Verify
octojoom -hπ§ Tip: macOS may prompt you to approve permissions for Docker and terminal utilities on first run.
πͺ Windows (MSYS2 / Cygwin / Git Bash)
-
Install Docker Desktop.
-
Install Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
-
Install dependencies:
choco install curl awk newt
-
Install Octojoom:
curl -L "https://raw.githubusercontent.com/octoleo/octojoom/refs/heads/master/src/octojoom" -o /usr/local/bin/octojoom chmod +x /usr/local/bin/octojoom -
Launch Octojoom:
octojoom -h
β οΈ Important: Ensure Docker Desktop is running before launching Octojoom.
π§ Other Linux Distributions (Fedora / Arch / Manjaro / openSUSE)
Install dependencies manually for your distribution:
# Fedora / CentOS / RHEL
sudo dnf install -y bash curl newt
# Arch / Manjaro
sudo pacman -S --needed bash curl newt
# openSUSE
sudo zypper install -y bash curl newt
# Install Octojoom
sudo curl -L "https://raw.githubusercontent.com/octoleo/octojoom/refs/heads/master/src/octojoom" -o /usr/local/bin/octojoom
sudo chmod +x /usr/local/bin/octojoomπ§© Works across most Linux distributions β if Bash, Curl, and Docker are installed, Octojoom will run seamlessly.
Run without arguments to use the interactive menu, or pass CLI flags for automation.
octojoom -hShow full help output
Usage: octojoom [OPTION...]
Options
======================================================
--type <type>
set type you would like to work with
example: octojoom --type joomla
======================================================
--task <task>
set type of task you would like to perform
example: octojoom --task setup
======================================================
--container <container.domain.name>
Directly enabling or disabling a container with
the type=joomla and task=enable/disable set
The container must exist, which means it was
setup previously
Used without type and task Joomla-Enable is (default)
example: octojoom --container "io.vdm.dev"
======================================================
--update
to update your install
example: octojoom --update
======================================================
--uninstall
to uninstall this script
example: octojoom --uninstall
======================================================
AVAILABLE FOR TO ANY CONTAINER
======================================================
-k|--key <key>
set key for the docker compose container naming
!! no spaces allowed in the key !!
example: octojoom -k="vdm"
example: octojoom --key="vdm"
======================================================
-e|--env-key <key>
set key for the environment variable naming
!! no spaces allowed in the key & must be UPPERCASE !!
example: octojoom -e="VDM"
example: octojoom --env-key="VDM"
======================================================
-d|--domain <domain.com>
set key website domain
!! must be domain.tld !!
example: octojoom -d="joomla.org"
example: octojoom --domain="joomla.org"
======================================================
-s|--sub-domain <domain.com>
set key website sub domain
!! no spaces allowed in the sub domain !!
example: octojoom -s="jcb"
example: octojoom --sub-domain="jcb"
======================================================
AVAILABLE FOR JOOMLA CONTAINER
======================================================
-j|--joomla-version <version-tag>
see available tags here https://hub.docker.com/_/joomla
example: octojoom -j=5.0
example: octojoom --joomla-version=5.0
======================================================
AVAILABLE FOR OPENSSH CONTAINER
======================================================
-u|--username <username>
set username of the container
example: octojoom -u="ubuntu"
example: octojoom --username="ubuntu"
======================================================
--uid <id>
set container user id
example: octojoom --uid=1000
======================================================
--gid <id>
set container user group id
example: octojoom --gid=1000
======================================================
-p|--port <port>
set ssh port to use
!! do not use 22 !!
example: octojoom -p=2239
example: octojoom --port=2239
======================================================
--ssh-dir <dir>
set ssh directory name found in the .ssh dir
of this repo for the container keys
This directory has separate files for
each public key allowed to access
the container
example: octojoom --ssh-dir="teamname"
======================================================
--sudo
switch to add the container user to the
sudo group of the container
example: octojoom --sudo
======================================================
-t|--time-zone <time/zone>
set time zone of the container
!! must valid time zone !!
example: octojoom -t="Africa/Windhoek"
example: octojoom --time-zone="Africa/Windhoek"
======================================================
HELP Κβ’α΄₯β’Κ
======================================================
-h|--help
display this help menu
example: octojoom -h
example: octojoom --help
======================================================
Octojoom
======================================================Update to the latest version anytime:
octojoom --updateRemove Octojoom cleanly:
octojoom --uninstallYouβll be asked to choose:
- Complete Uninstall: Removes script, containers, and persistent volumes.
- Script Only: Keeps containers but removes Octojoom.
- Selective Mode: Lets you pick which parts to delete interactively.
We welcome contributions of all levels β from documentation to new distro support!
-
Fork this repository
-
Create a feature branch
-
Make your changes
-
Run lint check:
shellcheck src/octojoom
-
Submit a pull request with a clear explanation
π¬ Found a bug or want to suggest improvements? Open an issue β weβd love your feedback!
Copyright (C) 2021β2025
Llewellyn van der Merwe
Licensed under the GNU General Public License v2 (GPLv2)
See LICENSE for details.
| Command | Description |
|---|---|
octojoom -h |
Show help menu |
octojoom --type joomla --task setup |
Create a Joomla container |
octojoom --update |
Update the script |
octojoom --uninstall |
Uninstall Octojoom |
octojoom |
Launch interactive mode |
β¨ Built with love by the Octoleo Team β¨