Перейти к основному содержимому

🏠 Installing on Shared Hosting

Many of our users run Monitron SaaS on shared hosting — and that's totally fine! Shared hosting providers like cPanel, Plesk, DirectAdmin, and CyberPanel are fully supported.

This guide walks you through every single step, from uploading files to getting your first monitor running. No SSH or terminal access needed! Monitron SaaS is a true plug-and-play solution. 🎉

подсказка

Zero artisan commands required! The Installation Wizard handles everything automatically — database migrations, encryption key generation, storage linking, and more. You just fill in the forms, and Monitron does the rest.


🤔 Can I Really Run Monitron on Shared Hosting?

Yes! Monitron SaaS is designed to work on shared hosting. Here's what you need:

RequirementMinimumNotes
PHP Version8.2+Most modern hosts offer PHP 8.2 or 8.3
MySQL / MariaDB5.7+ / 10.3+Almost always included
Storage Space100 MB+For the application files
Cron JobsAt least 1Required for monitoring to work
warning

Shared hosting limitations to be aware of:

  • Some hosts disable PHP functions like exec(), proc_open(), or shell_exec() — Monitron works without them, but the Ping (ICMP) monitor type may not be available.
  • Some hosts limit cron jobs to every 5 or 15 minutes — this means your minimum check interval will be 5 or 15 minutes instead of 1 minute.
  • Some hosts limit outgoing connections — this could affect monitors that check external ports (TCP, SMTP, etc.).
  • Queue workers run via cron instead of Supervisor — slightly less real-time, but perfectly functional.
к сведению

If your host supports Node.js or SSH access, you may have more flexibility. But this guide assumes you have only a basic cPanel-style control panel — no terminal access needed.


📋 Step-by-Step Overview

Here's what we'll do — all from your hosting control panel, no command line needed:

  1. ✅ Check your hosting meets the requirements
  2. 📦 Upload the files
  3. 📂 Set the document root (public folder alignment)
  4. 🗄️ Create a database
  5. 🧙 Run the Installation Wizard (handles everything else automatically!)
  6. ⏰ Set up the cron job
  7. ✅ Verify everything works

That's it — 7 simple steps, all done through your browser! 🚀

Let's go! 👇


✅ Step 1: Check Your Hosting Requirements

Before you begin, log into your hosting control panel and verify:

Check PHP Version

In cPanel:

  1. Go to "Select PHP Version" or "MultiPHP Manager"
  2. Make sure your domain is set to PHP 8.2 or higher
  3. If not, change it — most hosts let you switch PHP versions instantly

In Plesk:

  1. Go to Websites & Domains → your domain → PHP Settings
  2. Select PHP 8.2+ from the dropdown
  3. Click Apply

In DirectAdmin:

  1. Go to Domain Setup → your domain
  2. Click PHP Version
  3. Select 8.2 or higher

Check Required PHP Extensions

Most shared hosts include all required extensions. But double-check these are enabled:

  • BCMath
  • Ctype
  • cURL
  • DOM
  • Fileinfo
  • JSON
  • Mbstring
  • OpenSSL
  • PDO (with pdo_mysql)
  • Tokenizer
  • XML
  • Zip

In cPanelSelect PHP VersionExtensions tab — check all the boxes above.

к сведению

Don't worry if you miss one! The Installation Wizard in Step 5 will check all requirements and tell you exactly what's missing.


📦 Step 2: Upload the Files

You have two options for uploading:

Option A: Upload via File Manager (Easiest)

  1. Log into your hosting control panel (cPanel, Plesk, etc.)
  2. Open the File Manager
  3. Navigate to your home directory (usually /home/yourusername/)
  4. Upload the monitron-saas.zip file here (NOT inside public_html!)
  5. Extract the ZIP file — this creates a monitron/ folder
  6. You should now have /home/yourusername/monitron/ with all the app files

Option B: Upload via FTP

  1. Connect to your server using an FTP client (FileZilla, WinSCP, Cyberduck)
  2. Use the FTP credentials from your hosting panel
  3. Navigate to /home/yourusername/
  4. Upload the extracted monitron/ folder here
осторожно

🚨 Do NOT upload everything into public_html! The application files must be placed outside of the public directory for security. Only the contents of the public/ folder should be web-accessible.

Set Folder Permissions

After uploading, make sure these folders are writable. In your File Manager:

  1. Navigate to /home/yourusername/monitron/storage/
  2. Right-click → Change Permissions → set to 755 (or 775 if 755 doesn't work)
  3. Check the box "Apply to all subdirectories and files" (recursive)
  4. Do the same for /home/yourusername/monitron/bootstrap/cache/

📂 Step 3: Public Folder Alignment (CRITICAL!)

This is the most important step on shared hosting. Your web server's document root (usually public_html) must serve the contents of Monitron's public/ folder.

There are three ways to do this. Pick the one that works for your hosting:

This is the cleanest approach. Point your domain's document root directly to the Monitron public/ folder.

In cPanel:

  1. Go to "Domains" or "Subdomains"
  2. Click "Create a New Domain" (or modify existing)
  3. Set the Document Root to:
    /home/yourusername/monitron/public
  4. Save

In Plesk:

  1. Go to Websites & DomainsHosting & DNSHosting Settings
  2. Change Document Root to:
    /home/yourusername/monitron/public
  3. Click OK

In DirectAdmin:

  1. Go to Domain Setup
  2. Edit your domain
  3. Set the Document Root (public_html) path to:
    /home/yourusername/monitron/public
подсказка

This method is the safest because the application code lives completely outside the web root. No .env file or source code is ever accessible from the web.

If your host doesn't let you change the document root, you can create a symbolic link from public_html to Monitron's public/ folder.

Using cPanel File Manager → Terminal (if available):

# First, back up and remove the existing public_html
cd /home/yourusername
mv public_html public_html_backup

# Create a symlink
ln -s /home/yourusername/monitron/public public_html

If you don't have terminal access, some File Manager tools allow creating symlinks. Or ask your host's support to create it for you — it takes them 30 seconds!

warning

Some shared hosts disable symlinks for security reasons. If this method doesn't work, try Method C.

Method C: Copy Public Files + Modify index.php

If you can't change the document root OR create symlinks, you can copy the public files and modify the entry point.

  1. Copy everything from monitron/public/ into public_html/:

    monitron/public/*  →  public_html/

    This includes index.php, .htaccess, favicon.ico, robots.txt, build/ folder, etc.

  2. Edit public_html/index.php using the File Manager's code editor — you need to update two lines:

    Find this line:

    require __DIR__.'/../vendor/autoload.php';

    Change to:

    require '/home/yourusername/monitron/vendor/autoload.php';

    Find this line:

    $app = require_once __DIR__.'/../bootstrap/app.php';

    Change to:

    $app = require_once '/home/yourusername/monitron/bootstrap/app.php';
  3. Edit monitron/bootstrap/app.php — add the public path override. Add this line after the $app is created:

    $app->usePublicPath('/home/yourusername/public_html');

    This tells Laravel where the public folder actually lives.

к сведению

Replace /home/yourusername/ with your actual home directory path. You can find this in cPanel under "Server Information" or by looking at the File Manager's path bar.

warning

When upgrading Monitron, remember to re-copy the public files and re-apply the index.php changes if using Method C. Methods A and B don't have this issue.


🗄️ Step 4: Create a Database

In cPanel:

  1. Go to "MySQL® Databases"
  2. Create a new database — e.g., yourusername_monitron
  3. Create a new database user — e.g., yourusername_monuser
  4. Set a strong password (save it, you'll need it!)
  5. Add the user to the database with ALL PRIVILEGES

In Plesk:

  1. Go to DatabasesAdd Database
  2. Database name: monitron
  3. Create a database user with a strong password
  4. Click OK

In DirectAdmin:

  1. Go to MySQL Management
  2. Create a new database and user
  3. Grant all privileges
к сведению

Write down these three values — you'll need them in the next step:

  • Database name (e.g., yourusername_monitron)
  • Database username (e.g., yourusername_monuser)
  • Database password

🧙 Step 5: Run the Installation Wizard

Now open your browser and go to:

https://your-domain.com/install
подсказка

The wizard does EVERYTHING for you automatically:

  • ✅ Generates a secure encryption key (APP_KEY)
  • ✅ Creates the .env configuration file
  • ✅ Runs all database migrations (creates tables)
  • ✅ Creates the storage symlink
  • ✅ Creates your admin account
  • ✅ Sets up your first team
  • ✅ Configures application settings
  • ✅ Clears and optimizes caches

No terminal. No SSH. No artisan commands. Just fill in the forms!

The wizard walks you through these screens:

Screen 1: Welcome

Just a friendly intro. Click Next to continue.

Screen 2: Requirements Check

The wizard checks your PHP version, extensions, and folder permissions. If anything is red:

  • PHP version too low? → Change it in your hosting panel (see Step 1)
  • Missing extension? → Enable it in "Select PHP Version" → Extensions tab
  • Folder not writable? → Set permissions to 755 or 775 (see Step 2)

Screen 3: Database Setup

Enter the database credentials you created in Step 4:

  • Database Driver: MySQL (default)
  • Host: localhost (almost always correct on shared hosting)
  • Port: 3306 (default for MySQL)
  • Database Name: e.g., yourusername_monitron
  • Username: e.g., yourusername_monuser
  • Password: the password you set

Click Test Connection — if it says "Connected!", you're good!

Screen 4: Admin Account

Fill in your details:

  • Your Name: Your full name
  • Email: Your email address (this is your login)
  • Password: Choose a strong password
  • App Name: e.g., "My Monitoring" or your company name
  • App URL: https://your-domain.com
  • Timezone: Select your timezone

Click Install and wait a few seconds while the wizard sets everything up.

Screen 5: Server Config

Shows you the cron job command you'll need (covered in the next step). Take note of it!

Screen 6: Complete! 🎉

You're done! Click the link to go to your dashboard.

👉 See the Installation Wizard page for a detailed walkthrough with more info on each step.


⏰ Step 6: Set Up the Cron Job

The cron job is the only thing you need to configure outside the wizard — and it's just clicking a few buttons in your hosting panel.

The cron job triggers monitoring checks. Without it, Monitron won't check your monitors!

In cPanel:

  1. Go to "Cron Jobs"
  2. Under "Add New Cron Job":
    • Common Settings: Select "Once Per Minute ( * * * )"
    • If your host only allows every 5 minutes, select **"Every 5 Minutes (/5 * * * )"
  3. Command:
    cd /home/yourusername/monitron && php artisan schedule:run >> /dev/null 2>&1
  4. Click "Add New Cron Job"

In Plesk:

  1. Go to Scheduled Tasks (under your subscription)
  2. Click "Add Task"
  3. Task type: Run a command
  4. Command:
    cd /home/yourusername/monitron && php artisan schedule:run >> /dev/null 2>&1
  5. Run: Every minute (or as frequently as your host allows)

In DirectAdmin:

  1. Go to Cron Jobs
  2. Add a new cron job with:
    • Minute: * (or */5)
    • Hour: *
    • Day of Month: *
    • Month: *
    • Day of Week: *
    • Command: cd /home/yourusername/monitron && php artisan schedule:run >> /dev/null 2>&1
к сведению

Not sure about the PHP path? Some hosts require the full path to PHP. If the command above doesn't work, try replacing php with the full path:

Common PHP paths:

  • /usr/bin/php
  • /usr/local/bin/php
  • /usr/local/bin/ea-php82 (EasyApache on cPanel)
  • /opt/cpanel/ea-php82/root/usr/bin/php (cPanel with MultiPHP)
  • /opt/plesk/php/8.2/bin/php (Plesk)

Example with full path:

cd /home/yourusername/monitron && /opt/cpanel/ea-php82/root/usr/bin/php artisan schedule:run >> /dev/null 2>&1
warning

If your host only allows cron every 5 or 15 minutes, Monitron will still work! But your monitors will only be checked at that interval. For most websites, this is perfectly acceptable.

What About Queue Workers?

On a VPS you'd normally run a separate queue worker process. On shared hosting, you don't need to! Monitron's scheduler automatically processes queued jobs during each cron run. The single cron job handles both scheduling AND queue processing.

If you want slightly faster queue processing, you can add a second cron job (optional):

cd /home/yourusername/monitron && php artisan queue:work --stop-when-empty --max-time=55 >> /dev/null 2>&1

But this is completely optional — the default setup works great for most users.

Alternative: Sync Queue Driver (Zero Cron Setup for Queues)

If you want the absolute simplest setup, you can tell Monitron to process everything immediately instead of queuing it. After installation, go to your Monitron dashboard:

  1. Navigate to SettingsGeneral
  2. Or edit the .env file and change:
    QUEUE_CONNECTION=sync

This means checks run instantly when the scheduler fires. Fine for under 20 monitors.


✅ Step 7: Verify Everything Works

1. Log into the Dashboard

Visit https://your-domain.com/admin and log in with the admin credentials you created in the wizard.

2. Create a Test Monitor

  1. Click "Monitors" in the sidebar
  2. Click "New Monitor"
  3. Select "HTTP(S)" as the type
  4. Enter https://www.google.com as the address
  5. Set the interval to 1 minute (or 5 minutes if your cron is limited)
  6. Click "Create"

3. Wait for a Check

  • Wait for the next cron run (1-5 minutes depending on your cron interval)
  • Refresh the page
  • The monitor status should change from Pending to Up
  • You should see a response time and uptime percentage

4. If the Monitor Stays on "Pending"

Don't panic! Check these things:

  • Is the cron job set up? Check your hosting panel → Cron Jobs
  • Is the PHP path correct? Try using the full path to PHP
  • Check the log file: Use File Manager to open monitron/storage/logs/laravel.log — it will tell you exactly what's wrong

🔧 Shared Hosting Tips & Tricks

💡 Finding Your Home Directory Path

Not sure what your home path is? In cPanel File Manager, look at the path bar at the top. It usually shows something like:

/home/yourusername/

💡 PHP Memory Limit

If you get "out of memory" errors, increase the PHP memory limit:

In cPanel"Select PHP Version"Options tab:

  • memory_limit = 256M (or higher)
  • max_execution_time = 120
  • upload_max_filesize = 10M
  • post_max_size = 12M

Or add to your .htaccess (in your public web folder):

php_value memory_limit 256M
php_value max_execution_time 120

💡 Handling SSL / HTTPS

Most shared hosts now offer free SSL via Let's Encrypt:

In cPanel:

  1. Go to "SSL/TLS Status" or "Let's Encrypt" or "AutoSSL"
  2. Enable SSL for your domain
  3. It usually activates within minutes

After SSL is active, make sure your App URL in the Monitron settings uses https://.

💡 Fixing "500 Internal Server Error"

This is the most common issue on shared hosting. Here's the debugging checklist:

  1. Check .htaccess: Make sure the .htaccess file exists in your public folder with the Laravel rewrite rules
  2. Check PHP version: Must be 8.2+
  3. Check permissions: storage/ and bootstrap/cache/ must be writable (755 or 775)
  4. Check .env: Make sure it exists and has correct database credentials (the wizard creates this for you)
  5. Check the error log: In cPanel → "Errors" or check storage/logs/laravel.log via File Manager

💡 Email Configuration on Shared Hosting

Most shared hosts provide SMTP email. After installation, go to SettingsEmail in your Monitron dashboard and configure:

  • SMTP Host: localhost or mail.your-domain.com
  • SMTP Port: 25 (localhost) or 465 (SSL)
  • Username: Your email address (e.g., [email protected])
  • Password: Your email account password

Or if you prefer an external service (Gmail, SendGrid, etc.), see the Email Settings guide.

The Installation Wizard automatically creates the storage symlink for you. If for some reason it didn't work (some hosts block symlinks), Monitron will still function — file uploads will just be served differently. No action needed on your part.


🏢 Hosting Provider-Specific Guides

Hostinger

  1. Go to hPanelWebsitesManage
  2. PHP Configuration: Set to 8.2+ under AdvancedPHP Configuration
  3. File Manager: Upload to /home/yourusername/
  4. Document Root: In Domains → point to /home/yourusername/monitron/public
  5. Database: DatabasesMySQL Databases → Create new
  6. Wizard: Visit https://your-domain.com/install
  7. Cron: AdvancedCron Jobs → Add with minimum interval

Namecheap (cPanel)

  1. PHP Version: cPanel → Select PHP Version → 8.2
  2. Upload: File Manager → upload to /home/yourusername/ outside public_html
  3. Document Root: Use Subdomains or Addon Domains to point to monitron/public
  4. Database: cPanel → MySQL® Databases
  5. Wizard: Visit https://your-domain.com/install
  6. Cron: cPanel → Cron Jobs → Every minute

SiteGround

  1. PHP Version: Site Tools → DevsPHP Manager → 8.2
  2. Upload: Site Tools → SiteFile Manager → upload outside public_html
  3. Document Root: Use SiteSite Settings to change the document root
  4. Database: Site Tools → SiteMySQL → Create
  5. Wizard: Visit https://your-domain.com/install
  6. Cron: Site Tools → DevsCron Jobs → Add

Bluehost (cPanel)

  1. PHP Version: cPanel → MultiPHP Manager → Set to 8.2
  2. Upload: File Manager → upload to /home/yourusername/
  3. Document Root: Cannot easily change — use Method C (copy public files)
  4. Database: cPanel → MySQL® Databases
  5. Wizard: Visit https://your-domain.com/install
  6. Cron: cPanel → Cron Jobs → Minimum every 5 minutes

GoDaddy (cPanel)

  1. PHP Version: cPanel → Select PHP Version → 8.2
  2. Upload: File Manager → upload outside public_html
  3. Document Root: Create a subdomain pointing to monitron/public, or use Method C
  4. Database: cPanel → MySQL® Databases
  5. Wizard: Visit https://your-domain.com/install
  6. Cron: cPanel → Cron Jobs

A2 Hosting

  1. PHP Version: cPanel → Select PHP Version → 8.2+
  2. Upload: File Manager → upload to /home/yourusername/
  3. Document Root: Domains → Edit → Point to monitron/public
  4. Database: cPanel → MySQL® Databases
  5. Wizard: Visit https://your-domain.com/install
  6. Cron: cPanel → Cron Jobs → Every minute (allowed on most plans)

❓ Shared Hosting FAQ

Q: Do I need SSH or terminal access?

No! Monitron SaaS is completely plug-and-play. The Installation Wizard handles database setup, key generation, migrations, and everything else automatically. You just need a web browser and your hosting control panel.

Q: Do I need to run any commands?

No! There are zero command-line requirements. Everything is handled through the web-based Installation Wizard and your hosting control panel's cron job interface.

Q: Do I need Composer?

No! Monitron SaaS ships with all dependencies pre-installed in the vendor/ folder. No Composer needed.

Q: Will Monitron be slower on shared hosting?

A bit, compared to a VPS. Shared hosting shares CPU and memory with other users, so checks may occasionally take slightly longer. For most users monitoring under 50 websites, you won't notice a difference.

Q: Can I monitor 100+ websites on shared hosting?

It depends on your host's resource limits. For 100+ monitors, we recommend:

  • Setting check intervals to 5 minutes instead of 1 minute
  • Choosing a host with generous resource allocations (A2 Hosting Turbo, SiteGround GoGeek, etc.)

For 200+ monitors, consider upgrading to a VPS.

Q: My host only allows cron every 15 minutes. Is that OK?

Yes! Monitron will still work. Your monitors will be checked every 15 minutes instead of every minute. For most websites, this is perfectly fine — you'll still get notified of downtime within 15 minutes.

Q: Can I use SQLite instead of MySQL?

Yes! The Installation Wizard supports SQLite. On the database screen, select SQLite as the driver and enter the database file path. The wizard creates the file for you.

Q: My host blocks outgoing connections on port 25 (SMTP). What now?

Many shared hosts block port 25 to prevent spam. Use an external email service instead:

  • Gmail SMTP (port 587)
  • SendGrid (port 587)
  • Mailgun (port 587)
  • Amazon SES (port 587)

See the Email Settings guide for configuration details.

Q: How do I update Monitron on shared hosting?

  1. Back up your database (cPanel → Backup Wizard or phpMyAdmin → Export)
  2. Upload the new version files via File Manager (overwrite existing)
  3. If you used Method C, re-copy the public files to public_html and re-apply the index.php changes
  4. Visit https://your-domain.com/update — the updater handles database migrations automatically
  5. Done! No terminal needed.

See the Upgrading guide for full details.

Q: I see a blank white page. What's wrong?

This usually means a PHP error is being suppressed. Try:

  1. Open monitron/storage/logs/laravel.log in your File Manager — the error details are there
  2. Common causes:
    • Wrong PHP version (needs 8.2+)
    • Missing PHP extension
    • Wrong database credentials
    • storage/ folder not writable
  3. If there's no log file, check cPanel → "Errors" for PHP errors

Q: Can I run Monitron in a subdirectory (e.g., example.com/monitron/)?

We don't officially recommend it, but it's possible with extra configuration. It's much easier to use a subdomain like status.example.com.


🎉 You Did It!

Congratulations! Monitron SaaS is now running on your shared hosting! 🥳

No SSH. No terminal. No artisan commands. Just a clean, working monitoring platform. ✨

Here's what to do next:


🆘 Need Help?

If you're stuck:

  1. Check the Troubleshooting guide
  2. Look at storage/logs/laravel.log via File Manager for error details
  3. Make sure your cron job is running (check cPanel → Cron Jobs for recent runs)
  4. Verify file permissions (storage and bootstrap/cache should be 755 or 775)
  5. Contact your hosting provider's support — they're often happy to help with PHP configuration and cron setup