Install Webmaster Ramos Extensions
This guide explains how to install Webmaster Ramos extensions in a Magento 2 / Adobe Commerce project using Composer. You need two things: the repository URL and your access credentials (public + private key). Credentials are issued from your account dashboard or sent by email after acquiring an extension.
Prerequisites
- Magento 2.4.x (Open Source or Commerce)
- PHP 8.1+ and Composer 2.x
- Shell access to the project (SSH or local)
- Your access keys — public and private — from
/account/extensions
Your public key is openly visible in the dashboard. The private key is shown only once, immediately after a key pair is generated. If you lose it, create a new key pair — the old one can be revoked at any time.
Step 1. Register the repository
Tell Composer where to find Webmaster Ramos packages. Run this in your project root (the folder with composer.json):
composer config repositories.webramos composer https://webmaster-ramos.com/repo
This adds an entry to composer.json:
{
"repositories": {
"webramos": {
"type": "composer",
"url": "https://webmaster-ramos.com/repo"
}
}
}
Step 2. Configure authentication
Credentials go into an auth.json file, which Composer reads for HTTP Basic authentication. You have two places to put it — pick based on where you need access.
Option A — Project-level (recommended for Magento)
File: <project-root>/auth.json (next to composer.json)
{
"http-basic": {
"repo.magento.com": {
"username": "<your-magento-marketplace-public-key>",
"password": "<your-magento-marketplace-private-key>"
},
"webmaster-ramos.com": {
"username": "<webramos-public-key>",
"password": "<webramos-private-key>"
}
}
}
CLI alternative (writes the file for you):
composer config http-basic.webmaster-ramos.com \
<webramos-public-key> \
<webramos-private-key>
Never commit auth.json to git. Ensure it is listed in .gitignore:
# Composer credentials
/auth.json
Magento skeleton projects usually have this rule already — double-check before your first commit.
Option B — Global user-level
File: ~/.composer/auth.json (Linux / macOS) or ~/.config/composer/auth.json on XDG-compliant systems.
Same JSON structure. CLI:
composer config --global --auth http-basic.webmaster-ramos.com \
<webramos-public-key> \
<webramos-private-key>
Use this on: a developer laptop where you work with multiple Magento projects and want one set of credentials for all of them.
Do not use this on: CI runners or shared production servers — their execution user is not you, and credentials should be scoped to the project, not the user profile.
Step 3. Install the extension
With the repository and credentials in place, require the package normally:
composer require webramos/module-name
Composer fetches https://webmaster-ramos.com/repo/packages.json, picks the latest version that satisfies any version constraint you specify, and downloads the ZIP over authenticated HTTPS.
Then run the standard Magento post-install steps:
bin/magento module:enable WebmasterRamos_ModuleName
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:flush
For later updates:
composer update webramos/module-name
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
CI / CD setup
Do not store auth.json in the repository. Choose one of the patterns below.
Pattern 1 — COMPOSER_AUTH environment variable
Export the entire auth payload as a single JSON string:
export COMPOSER_AUTH='{"http-basic":{"webmaster-ramos.com":{"username":"<pub>","password":"<priv>"}}}'
composer install --no-dev --optimize-autoloader
In GitHub Actions, GitLab CI, Jenkins, or CircleCI, store COMPOSER_AUTH as a masked secret variable. Composer reads it automatically on every run — no file on disk.
Pattern 2 — Deploy tool shared file
Deployer, Capistrano, and Ansible all support persistent shared files across deploys. Example in deploy.yaml (Deployer):
shared_files:
- auth.json
Upload the real auth.json to the server once — either manually (dep upload) or during server provisioning — and every deploy symlinks it into the release directory before composer install. Do not commit the uploaded file.
Multiple environments, different keys
You can hold as many access keys as you need. Common pattern:
| Key | label |
expires_at |
is_active |
|---|---|---|---|
| Production | Prod — store-name.com |
blank (never) | on |
| Staging | Staging |
blank or 1 year | on |
| Developer laptop | Dev — John M. |
30–90 days | on |
| CI pipeline | CI — GitHub Actions |
1 year | on |
All keys of a single user share the same entitlement set — whichever key you use, it sees the same extensions. If one key is compromised or a developer leaves, disable that specific key from the dashboard; the others keep working.
Support window and updates
Each extension purchase includes 12 months of updates and support. During this window, composer update pulls every new version released for that extension. After the window expires:
- The extension keeps working indefinitely — your license is perpetual
composer installfrom your existingcomposer.lockcontinues to download the same ZIPscomposer updatestops seeing versions released after your support window expired- Renewal extends the window at 50% of the original price
You can always see your current support end dates in your dashboard.
Troubleshooting
The "https://webmaster-ramos.com/repo/packages.json" file could not be downloaded (HTTP/1.1 401 Unauthorized)
Authentication failed. Check:
auth.jsonlocation — if using project-level, it must be next tocomposer.json- The host in
auth.jsonmatches exactly:webmaster-ramos.com(nohttps://, no trailing slash, no subdomain) - Public and private key are correct — copy-paste from the dashboard, no trailing spaces
- The key is not disabled or expired — check status in
/account/extensions
Run composer config --list | grep webramos to verify the repository URL is registered.
Could not find package webramos/module-name with any version constraint
Common causes:
- The repository is registered on a different host than
auth.jsonexpects — re-run bothcomposer config repositories.webramos ...andcomposer config http-basic.webmaster-ramos.com ... - You have not acquired the extension yet — check your dashboard
- Your support window has ended and the extension was first released after it — renew or pin an older version
- Typo in the package name
SHA-256 mismatch or Checksum verification failed
Rare. If this happens, contact contact@webmaster-ramos.com with the package name, version, and the exact error message.
Repository "webramos" is missing a "url" key
Composer config was written partially. Re-run:
composer config repositories.webramos composer https://webmaster-ramos.com/repo
Next steps
- Browse available extensions:
/extensions - Manage your keys:
/account/extensions - Questions or issues: contact@webmaster-ramos.com