To install MODX on Bluehost, create a MySQL database and user in cPanel, upload the MODX Revolution Traditional package into your domain’s folder, extract it, then run /setup/ in the browser and follow the wizard. Check the Softaculous Apps Installer first, because MODX is in the Softaculous catalog, but not every host exposes the whole catalog.
yourdomain.com/setup/, then delete the setup/ directory and rename ht.access to .htaccess.MODX is a good fit for Bluehost shared hosting. It’s a plain LAMP application with no daemon, no queue worker and no build step, so nothing about it fights the platform the way a Node app or a Go binary would. The whole install is about twenty minutes, and most of the pain people hit afterward comes down to two things: the setup/ directory left in place, and friendly URLs configured on only one of the two sides that need it.
Is MODX still in Bluehost’s script installer?
Check, don’t assume. MODX is definitely still maintained in the Softaculous app catalog, listed at version 3.2.3-pl with a July 2026 release date and about 61 MB of disk. Bluehost does ship Softaculous, reachable two ways:
- Bluehost Portal → Hosting → cPanel → scroll to Software → Softaculous Apps Installer.
- Bluehost Portal → Websites → Manage Site → Overview tab → cPanel → Software → Softaculous Apps Installer.
What Bluehost does not publish is a complete list of which Softaculous apps its licence exposes, and hosts routinely surface only a subset. So search “MODX” in the Softaculous sidebar. If it appears, use it: pick the domain, set the install directory (leave it blank for the domain root), set the admin username, password and email, and let it create the database for you. Two minutes, done.
If it doesn’t appear, the manual install below is straightforward and gives you more control over the database name, the table prefix and the PHP version. I’d argue it’s the better route anyway, because Softaculous installs sometimes lag the current MODX release and you end up upgrading immediately.
MODX 3 requirements vs Bluehost shared hosting
| Requirement | MODX 3 needs | Bluehost shared provides | Verdict |
|---|---|---|---|
| PHP version | 8.1 minimum for 3.2.x; 8.2+ sensible | 7.4 minimum, up to 8.5; anything below 8.2 marked deprecated | Fine. Set 8.3 or 8.4. |
| PHP extensions | zlib, json, gd, pdo_mysql, simplexml, curl, mbstring, imagick | All standard on cPanel builds; imagick varies | Check imagick in the config screen |
| memory_limit | 64 MB recommended minimum | Typically well above that on shared plans | Fine, but raise it before big package installs |
| Database | MySQL 5.7+ or MariaDB 10.1+, utf8mb4 | MySQL/MariaDB via cPanel | Fine |
| Web server | Apache 2.4+ or nginx 1.18+, rewrite support | Apache with .htaccess honored | Fine |
| Disk space | ~61 MB for the package, plus media | 10 GB on Starter, 50 GB on Business, 100 GB on eCommerce Essentials | Fine even on Starter |
| Cron | Not required by core; per-minute for the Scheduler extra | Cron Jobs in cPanel; presets start at every 15 minutes | Enter fields manually for tighter schedules |
| Shell access | Needed only for the Advanced package | Non-root SSH on some plans | Use the Traditional package and skip it |
The only genuine question mark is SQL Server, which MODX dropped support for in 3.0, and PostgreSQL, which exists only as a third-party implementation. On Bluehost you’re using MySQL either way, so it’s moot.
Step 1: Set the PHP version
Do this before you upload anything, because a MODX 3.2 install on PHP 8.0 fails at the config check and wastes your time. Two paths:
- Bluehost Portal → Websites → Manage Site → Advanced tab → PHP Version tile → Change Version.
- Or cPanel → Software → MultiPHP Manager, tick the domain, pick the version from the dropdown, click Apply.
PHP 8.3 or 8.4 is the sweet spot. MODX 3.2 declares PHP 8.5 compatibility, but the extras ecosystem always trails the core, so I’d stay one version behind the newest option available.
Step 2: Create the database and user
In cPanel, open Databases → MySQL Databases. Bluehost prefixes everything with your account name, so a database you name modx becomes something like acctname_modx. Write down the full prefixed names exactly as cPanel shows them, because that’s what the installer wants.
- Under Create New Database, enter a name and click Create Database.
- Under MySQL Users → Add New User, create a user with a generated password. Save it somewhere.
- Under Add User To Database, pick both, click Add, then grant ALL PRIVILEGES.
MODX needs SELECT, INSERT, UPDATE and DELETE for normal operation, plus CREATE, ALTER, INDEX and DROP for installs and upgrades, and CREATE TEMPORARY TABLES for some extras. Granting ALL PRIVILEGES on a single-purpose database is the pragmatic call on shared hosting.
Step 3: Upload and extract MODX
Download the Traditional distribution from modx.com. The Advanced package is smaller because the core is compressed, but it expects SSH and comfort with permissions, so the Traditional one is right for shared hosting.
Then either use cPanel’s File Manager or SFTP:
- File Manager route: cPanel → Files → File Manager, navigate to
public_html(or the addon domain’s folder), click Upload, send the ZIP, then right-click it and choose Extract. This is much faster than uploading thousands of small files over SFTP. - SFTP route: connect on port 22 with your cPanel credentials, extract the ZIP locally, and upload the extracted tree. Expect it to take a while.
The archive extracts into a versioned folder like modx-3.2.3-pl. Move its contents up one level so index.php, core/, manager/, connectors/ and setup/ sit directly in the document root. Then delete the ZIP and the empty folder.
core/cache/ and core/config/ writable before you run setup. On Bluehost, PHP usually runs as your own user, so 755 on directories is enough. If the config check complains, create an empty core/config/config.inc.php and make it writable, and do the same for core/packages, core/import and core/export.Step 4: Run /setup/ and read the config check
Browse to https://yourdomain.com/setup/. The wizard walks through:
- Language selection.
- Install type. Pick New installation.
- Database connection: hostname
localhost, plus the prefixed database name, username and password from step 2. Leave the table prefix asmodx_unless you’re putting two installs in one database. Click the link to test the database server connection and view collations and pickutf8mb4_general_ci. - Administrator account: username, a strong password, and a real email address. MODX 3.2 raised the minimum password length, so a short one will be rejected.
- The config check. This is the screen that matters.
The config check verifies your PHP version and extensions and confirms every directory it needs is writable. Green across the board means continue. A red line tells you exactly which path or extension to fix, and you can re-run the check without restarting the wizard. Fix problems here rather than pushing through, because a half-installed MODX is more annoying to clean up than a fresh start.
Step 5: Remove or lock down /setup/
MODX explicitly recommends removing the setup/ directory after installing, so nobody else can run setup against your site. The final wizard screen offers a checkbox to do it for you. Tick it.
If the checkbox fails because of permissions, delete the folder by hand in File Manager. If you want to keep it around for a future upgrade, at minimum drop an .htaccess inside it:
# public_html/setup/.htaccess
Require all deniedyourdomain.com/setup/ in a private browser window after you finish. If you get anything other than a 403 or 404, it’s still exposed. This is the single most common way freshly installed MODX sites get taken over.Step 6: Turn on friendly URLs
Friendly URLs need two changes, and doing only one is why people end up with 404s everywhere. First, rename the file MODX ships as an example:
- In File Manager, rename
ht.accessin the document root to.htaccess. Turn on “Show hidden files” in File Manager settings or it will vanish from the listing. - In the MODX manager, go to System → System Settings, filter for
friendly_urls, and set it to Yes. Setfriendly_alias_urlsto Yes as well if you want alias paths. - Clear the cache from Manage → Clear Cache (or the site menu, depending on your manager theme).
The minimum working rewrite block, straight from the MODX documentation, is:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]If MODX lives in a subdirectory rather than the domain root, change RewriteBase to match, for example RewriteBase /mysite/. That one line accounts for most subdirectory friendly-URL failures.
Step 7: Set up cron for scheduled tasks
MODX core does not need a cron job to function, which surprises people coming from other CMS platforms. You need one once you install something that schedules work: the Scheduler extra, which wants to be triggered every minute, or CronManager, which lets you manage jobs from inside the manager.
On Bluehost, go to Websites → Manage Site → Advanced tab → Cron Jobs tile → Manage. You can either pick a preset from Common Settings, which starts at every 15 minutes, or fill in the minute, hour, day, month and weekday fields yourself for anything tighter. The command follows the usual PHP CLI shape:
# Every minute, quietly
* * * * * /usr/local/bin/php -q /home/USERNAME/public_html/path/to/task.php >/dev/null 2>&1Replace USERNAME with your account name and confirm the PHP binary path in cPanel, since it differs between servers. Sending output to /dev/null stops cron emailing you every minute forever. Also check that the cron job’s PHP version matches the one your site runs, because the CLI binary and the web handler can differ.
Step 8: Log into the manager
Your admin panel is at https://yourdomain.com/manager/. Log in with the administrator account from the wizard. First things worth doing:
- Set
site_urlandsite_startin System Settings if anything looks wrong. - Force HTTPS. Bluehost provisions a free certificate, so redirect HTTP in
.htaccessand set the manager to require it. - Install extras from Extras → Installer. If package downloads fail, your
core/packagesdirectory isn’t writable or outbound requests are blocked.
Troubleshooting
Blank white manager screen
Almost always a PHP error being swallowed. Check the error log in cPanel under Metrics → Errors, and look at core/cache/logs/error.log. The usual causes are an unwritable core/cache, a PHP version mismatch after you changed it in MultiPHP Manager, or a memory limit hit while the manager builds its JavaScript. Clearing the contents of core/cache by hand in File Manager fixes a surprising share of these.
“Could not connect to the database”
Three checks, in order. One, is the database name actually prefixed with your account name? People type modx when cPanel created acctname_modx. Two, is the user attached to the database with privileges granted, not just created? Three, is the host localhost? On Bluehost shared it is. If setup already wrote a bad config, the credentials live in core/config/config.inc.php and you can correct them there directly.
Cache or permission errors after install
MODX writes to core/cache constantly and to core/packages, core/import and core/export when handling extras. Set directories to 755 and files to 644, and only escalate if that genuinely fails. If you extracted the ZIP locally and uploaded over SFTP, permissions can arrive scrambled, which is another reason to upload the archive and extract server-side.
Friendly URLs return 404 on every page but the homepage
The .htaccess isn’t there or isn’t being read. Confirm the file is named .htaccess with the leading dot and not still ht.access, confirm RewriteBase matches where the site lives, confirm friendly_urls is Yes in System Settings, and clear the cache. If the homepage 404s too, you have a rewrite loop, usually from a stale RewriteBase left over from a different install.
The manager loads but the resource tree is empty
A cached permissions problem. Clear the cache, then check that your admin user is in a group with the Administrator role and that the default context is set. If you’re still stuck, the MODX server requirements page is the fastest way to rule out an environment problem before you go digging in the database.
Frequently asked questions
Does Bluehost support MODX?
Yes. MODX 3 is a standard PHP and MySQL application, and Bluehost shared hosting meets every requirement, including PHP 8.2 and newer and Apache with .htaccess support. Whether it appears in Bluehost’s Softaculous list depends on their catalog, but the manual install works regardless.
What PHP version does MODX 3 need?
MODX 3.2 and later require PHP 8.1 as an absolute minimum, and 3.2 added PHP 8.5 compatibility. The MODX docs still list a 7.2 floor, which is stale. On Bluehost, set 8.3 or 8.4 in MultiPHP Manager before you run the installer.
Do I have to delete the setup directory?
Yes, and MODX says so in its own docs. Leaving setup/ in place lets anyone who finds it run the installer against your site. Use the checkbox on the final wizard screen, or delete the folder in File Manager, then verify it returns 403 or 404.
Why do my MODX pages 404 after enabling friendly URLs?
You almost certainly renamed ht.access but didn’t set the friendly_urls system setting to Yes, or you did both but never cleared the cache. In a subdirectory install, also check that RewriteBase points at that subdirectory.
Should I use Softaculous or install MODX manually?
Manually, if you’re comfortable with File Manager and cPanel databases. Softaculous is faster but often installs a version behind, uses a generated database name you didn’t choose, and hides the config-check step that tells you what’s wrong with your environment. If you’re new to cPanel, the same skills you’d use to disable a WordPress plugin from cPanel are exactly what you need here.
Can I try MODX before putting it on Bluehost?
Yes, and it’s worth doing. MODX runs happily on a local LAMP or XAMPP stack, the same kind of environment described in our guide to installing WordPress on a local host. Build the site locally, then move the files and import the database.
Wrapping up
MODX on Bluehost is one of the easier CMS installs going, provided you do things in the right order: PHP version first, database second, upload and extract third, then /setup/. Check Softaculous before you start, because a one-click install saves fifteen minutes when it’s available. Then delete setup/, rename ht.access, flip friendly_urls on, and clear the cache.
Where shared hosting stops being the right answer is when you want per-site PHP tuning, Redis for MODX’s cache, or staging environments you control. At that point a VPS with a control panel makes more sense, and our walkthrough of launching CyberPanel on Hostinger covers what that setup looks like. If you’re still weighing MODX against the alternatives, our guide to creating a Joomla website is a fair comparison point, and the document-root and PHP-version lessons in deploying FuelPHP on hosting apply to any PHP app you put on a shared plan. Always confirm the current numbers on the official MODX download page before you install.

