Page:
JOOMLA_SYNC
Pages
ARCHITECTURE
AUTO-BUMP
AUTO_CREATE_ORG_PROJECTS
Branching-Strategy
CLI_AUTOMATION
Coding-Standards
DEPLOY_SCRIPTS
DOLIBARR_MODULE_IDS
DRY_RUN_PATTERN
Documentation-Standards
File-Header-Standards
Home
JOOMLA_SYNC
LEGAL_DOC_GENERATOR_WEB_README
MANIFEST-STANDARD
MINIFICATION
MONITORING_SCRIPTS
NEW_SCRIPTS
QUICKSTART_ORG_PROJECTS
UPDATE-SERVER
WIKI_STANDARDS
WORKFLOW_STANDARDS
api-automation-index
api-definitions-default-index
api-definitions-sync-index
api-deploy-index
api-fix-index
api-index
api-maintenance-index.-
api-maintenance-index
api-plugin-index.-
api-plugin-index
api-tests-index.-
api-tests-sample-index.-
api-tests-sample-index
api-validate-index.-
automation-README.-
automation-branch-version-automation.-
automation-push-files.-
automation-repo-cleanup.-
client-repos.-.-
client-repos
standards-mokostandards-file-spec.-
standards-mokostandards-file-spec
templates-client-waas
templates-dolibarr
templates-generic
templates-mcp
unnamed
workflows-README.-
workflows-README
workflows-auto-release.-
workflows-auto-release
workflows-branch-protection.-
workflows-branch-protection
workflows-build-release.-
workflows-build-release
workflows-cascade-dev.-
workflows-cascade-dev
workflows-changelog-management.-
workflows-changelog-management
workflows-demo-deployment.-
workflows-demo-deployment
workflows-dev-branch-tracking.-
workflows-dev-branch-tracking
workflows-dev-deployment.-
workflows-dev-deployment
workflows-index.-
workflows-index
workflows-release-system.-
workflows-release-system
workflows-renovate.-
workflows-renovate
workflows-reusable-workflows.-
workflows-reusable-workflows
workflows-rs-deployment.-
workflows-rs-deployment
workflows-secret-scanning.-
workflows-secret-scanning
workflows-shared-workflows.-
workflows-shared-workflows
workflows-standards-compliance.-
workflows-standards-compliance
workflows-static-analysis.-
workflows-static-analysis
workflows-sub-issue-management.-
workflows-sub-issue-management
workflows-update-server.-
workflows-update-server
workflows-workflow-architecture.-
workflows-workflow-architecture
Clone
9
JOOMLA_SYNC
Jonathan Miller edited this page 2026-05-20 01:26:13 +00:00
Table of Contents
Joomla Extension Sync
Sync Joomla sites between two servers with three modes -- manifest-based smart sync, full rsync via SSH, or SFTP directory scan.
Sync Modes
| Mode | Flag | Speed | When to Use |
|---|---|---|---|
| Manifest (default) | -- | Fastest | After updating extensions -- only syncs changed ones |
| Rsync | --rsync |
Fast | After core updates or when files are broadly out of sync. Requires SSH key on source server to reach destination |
| Full SFTP | --full |
Slowest | When servers can't SSH to each other directly |
How Each Mode Works
Manifest (default)
- Reads extension manifest XML files from both servers via SFTP
- Compares versions -- identifies extensions with mismatches
- Syncs only the directories and language files for changed extensions
- Typically completes in seconds
Rsync (--rsync)
- SSHs to source server
- Runs
rsync --deleteto destination, excluding per-environment files - Best when both servers share the same SSH user -- source server needs an SSH key that can reach destination
- Syncs everything (core, libraries, vendor, media) in one pass
Full SFTP (--full)
- Connects to both servers via SFTP simultaneously
- Walks every file in every extension directory
- Compares by timestamp (default) or size (
--force) - Slowest but works when servers can't reach each other
Usage
Via MCP
standards_sync_joomla(
source_config: "scripts/sftp-config/sftp-config.dev.json",
dest_config: "scripts/sftp-config/sftp-config.rs.json",
mode: "manifest", // manifest | rsync | full
dry_run: false
)
Via CLI
# Smart sync — only changed extensions (default)
php deploy/sync-joomla.php \
--source sftp-config.dev.json --dest sftp-config.rs.json
# Full site rsync via SSH (after core updates)
php deploy/sync-joomla.php \
--source sftp-config.dev.json --dest sftp-config.rs.json --rsync
# Dry-run any mode
php deploy/sync-joomla.php \
--source sftp-config.dev.json --dest sftp-config.rs.json --rsync --dry-run
Excluded Files (all modes)
Always skipped to prevent overwriting per-environment config:
| File/Directory | Reason |
|---|---|
configuration.php |
Database, paths, secrets differ per server |
.htaccess |
Server-specific rewrite rules |
cache/, tmp/, logs/ |
Transient data |
.git/, vendor/, tests/ |
Dev-only (rsync mode) |
.DS_Store, Thumbs.db, *.swp |
OS/editor junk |
What Gets Synced per Extension (manifest mode)
| Type | Directories | Language |
|---|---|---|
| Component | administrator/components/com_xxx/, components/com_xxx/, media/com_xxx/ |
*/language/*/com_xxx.* |
| Plugin | plugins/group/name/, media/plg_group_name/ |
*/language/*/plg_group_name.* |
| Module (site) | modules/mod_xxx/, media/mod_xxx/ |
*/language/*/mod_xxx.* |
| Module (admin) | administrator/modules/mod_xxx/ |
*/language/*/mod_xxx.* |
| Template | templates/xxx/, media/templates/site/xxx/ |
-- |
SSH Key Setup for Rsync Mode
The source server needs an SSH key that can reach the destination:
# On the source (dev) server:
ssh-keygen -t ed25519 -f ~/.ssh/id_sync_to_live -N ''
# Add the public key to the destination (live) server:
ssh-copy-id -i ~/.ssh/id_sync_to_live user@live-host
The sync script auto-detects keys at ~/.ssh/id_sync_to_live, ~/.ssh/id_ed25519, or ~/.ssh/id_rsa.
SFTP Config Format
Standard Sublime Text SFTP format:
{
"type": "sftp",
"host": "example.com",
"user": "username",
"port": "22",
"remote_path": "/home/user/site/public_html/",
"ssh_key_file": "path/to/key.ppk",
"connect_timeout": 30
}
Akeeba Backup JSON API v2
The monitoring system queries Akeeba Backup status via the JSON API v2. Key differences from earlier versions:
Authentication
| Parameter | Value |
|---|---|
| Auth parameter | _akeebaAuth (not key) |
| Configuration | Akeeba Backup: Components > Akeeba Backup > Options > Frontend Secret Word |
API Endpoint
| Route | Auth Method |
|---|---|
/index.php?option=com_akeebabackup&view=Api&format=raw |
_akeebaAuth parameter |
/api/index.php/v2/akeebabackup |
X-Joomla-Token header |
Full URL example:
https://example.com/index.php?option=com_akeebabackup&view=Api&format=raw&method=listBackups&_akeebaAuth=YOUR_SECRET
- Method parameter:
method(notaction) -- e.g.method=listBackups
Related
- SITE_MONITORING -- Monitoring architecture and metrics
- WORKFLOW_STANDARDS -- CI/CD workflow conventions
- client-repos -- Client repository standards
Repo: moko-platform · moko-platform wiki
| Field | Value |
|---|---|
| Minimum Version | 04.07.00 |
| Platform | joomla |
| Applies To | Joomla repositories |
| Revision | Date | Author | Description |
|---|---|---|---|
| 1.0 | 2026-05-09 | Moko Consulting | Initial version |