Zéro Casse-tête Serveur • Estimé 10–15 Minutes

Guide d'Installation Étape par Étape

Découvrez comment installer, configurer et mettre à jour MarbleSend sur un hébergement mutualisé classique. Conçu pour les débutants — sans VPS, sans Docker et sans terminal SSH.

1. Quick Prerequisites Checklist

Before you begin, have these four simple items ready in your hosting control panel.

check_circle
PHP 8.2 or Higher
Standard shared hosting supports PHP 8.2 & 8.3. Ensure extensions pdo_mysql, curl, mbstring, openssl, zip, and sodium are enabled.
database
1 Empty MySQL Database
MySQL 8.0+ or MariaDB 10.6+ with one dedicated database user granted All Privileges.
language
Domain or Subdomain
A dedicated subdomain such as news.yourdomain.com or app.yourdomain.com with its document root configured.
key
License Key
Found in your purchase confirmation email (or your Envato purchase code). Required during wizard verification.
info
Sodium Extension Note: The sodium extension is required to verify the digital signature of your license. Some hosting providers leave it disabled by default; you can enable it with one click under Select PHP Version → Extensions in cPanel or hPanel.

2. Choosing Your Installation Method

Two installation methods are available. We strongly recommend Method A for maximum convenience.

Highly Recommended

Method A: Web Quick-Installer (install.php)

Single-file upload

Skip downloading and re-uploading large ZIP archives over slow connections. Simply download the lightweight install.php file from your purchase email and upload it to your domain folder via your hosting File Manager.

  1. Upload install.php into your domain folder (e.g. public_html/news).
  2. Open your browser to https://yourdomain.com/install.php.
  3. Enter your License Key. The installer automatically downloads the signed release package over HTTPS, checks its Ed25519 signature, extracts files into place, and deletes itself for safety.
  4. You are immediately redirected to the Setup Wizard.
Alternative Option

Method B: Manual ZIP Upload & Extract

If you prefer the manual route, download the release ZIP via your purchase email and upload it to your server.

your-folder/                 # Parent folder (NOT served to web)
├── app/                     # Application code & encrypted config
├── storage/                 # Logs & worker state (must be writable)
├── migrations/              # Database schema migrations
├── worker.php               # CLI background worker entrypoint
└── public/                  # <-- DOCUMENT ROOT of your domain
    ├── index.php
    └── migrate-web.php      # Web setup wizard

Extract the ZIP using your hosting File Manager. Point your domain's Document Root to the public/ subfolder, then navigate to https://yourdomain.com/migrate-web.php?setup=1.

3. Creating a MySQL Database on Shared Hosting

Step-by-step instructions for Hostinger (hPanel) and cPanel environments.

dns

Hostinger (hPanel) Guide

  1. Log in to hPanel → navigate to Databases → MySQL Databases.
  2. Under Create New MySQL Database And Database User, enter a database name (e.g. marblesend), username, and strong password.
  3. Click Create.
  4. Note: Hostinger prepends an account prefix (e.g. u123456789_marblesend). Copy the full prefixed name.
  5. Database Host is always: localhost (do not use external hostnames like srv...hstgr.io).
settings_suggest

cPanel Guide (Namecheap, Bluehost, SiteGround, etc.)

  1. Log in to cPanel → click MySQL Database Wizard.
  2. Step 1: Enter a database name (e.g. msend) and click Next Step.
  3. Step 2: Create a database username and secure password, then click Create User.
  4. Step 3 (Crucial): Check the ALL PRIVILEGES checkbox, then click Make Changes.
  5. Copy the full prefixed names (e.g. cpaneluser_msend).
  6. Database Host is always: localhost.

4. Walking Through the 8-Step Setup Wizard

An interactive browser wizard guides you from start to finish in minutes.

Open https://yourdomain.com/install.php or https://yourdomain.com/migrate-web.php?setup=1 in your web browser. Follow the 8 guided steps:

1
Language Selection
Choose your preferred language for the installer and the admin interface (21 languages supported).
2
Server Check
Automatically tests PHP version, required extensions (sodium), writable directories, memory, and license server reachability with plain-English feedback.
3
License Verification
Enter the License Key from your purchase confirmation email.
4
Database Credentials
Enter Host (localhost), Database Name, User, and Password created in Step 3. The connection is validated immediately.
5
Administrator Account
Create your admin login email, password (12+ characters), and configure your primary timezone.
6
Encryption Key Backup
Generates an AES-256 master key that encrypts your SMTP passwords and secrets. Download or copy this key to a safe location before proceeding.
7
Security Check
Verifies that internal folders (such as app/config/config.php) cannot be reached directly via web requests. Installation completes only when verified safe.
8
Finish & Copy Cron Command
Builds database schema, locks the installer, and shows the exact cron command for Section 5. Copy it before logging in.

5. Setting Up the Background Worker (Cron Job)

The Cron Job is the automated engine that dispatches email queues, handles unsubscribes, and processes scheduled campaigns every minute.

schedule
Why is a Cron Job required? MarbleSend sends emails in smooth background batches without freezing your browser. A 1-minute cron job (* * * * *) triggers the background worker reliably.

Method 1: Server Cron in Hostinger (hPanel)

  1. In hPanel, go to Websites → Dashboard → Cron Jobs.
  2. Set Type to Custom.
  3. Paste the command line copied from the final wizard page or Settings → System into Command to run.
  4. Select Once Per Minute (or enter asterisks: * * * * *).
  5. Click Save.

Method 2: Server Cron in cPanel

  1. In cPanel, open Cron Jobs (under the Advanced section).
  2. Under Common Settings, select Once Per Minute (* * * * *).
  3. In the Command field, enter the CLI command, e.g.:
    /usr/local/bin/php /home/username/your-folder/worker.php > /dev/null 2>&1
  4. Click Add New Cron Job.

Method 3: Web-Cron (HTTP Fallback)

If your hosting provider restricts CLI cron jobs or limits intervals to 15 minutes:

  1. In your MarbleSend dashboard, open Settings → System.
  2. Copy your private Web-Cron URL (protected with a secret token):
    https://yourdomain.com/cron.php?token=YOUR_SECRET_TOKEN
  3. Use a free external ping service such as cron-job.org or UptimeRobot to send a GET request every 1 minute.

6. Post-Installation: Connecting Your SMTP Provider

Configure your email sending engine and verify deliverability with a test send.

  1. Verify Worker Heartbeat: Go to Settings → System. Verify that Worker Status displays a green pulsing Active badge with a recent timestamp.
  2. Choose Your Sending Profile (Settings → SMTP Profiles):
    • Managed Amazon SES Relay: MarbleSend's official high-reputation delivery network. Ready to use immediately with zero AWS setup required.
    • Bring Your Own Mailer (BYOM): Click + Add SMTP Profile to connect your own Amazon SES, Brevo, Mailgun, Postmark, SendGrid, or cPanel Exim relay.
  3. Test Delivery: Click Test Connection on your active SMTP profile, enter your personal email address, and confirm test message receipt in your inbox.

7. In-App Stream Updates & Safe Rollback

Upgrade your installation in 1 click directly from the dashboard without touching files manually.

Whenever a new MarbleSend update is published, an alert banner appears automatically in your dashboard and on the Changelog page.

system_update

How 1-Click Updates Work:

  • Cryptographic Verification: Updates are downloaded directly from the official release server and verified against an Ed25519 digital signature.
  • Automatic File Backups: Before touching a single file, MarbleSend creates a full backup of the existing release under storage/backup-[version]-[timestamp]/ (the three newest backups are always retained).
  • Atomic Swap: Files are swapped in seconds and database migrations are executed automatically without extended maintenance windows.
  • Automatic Rollback: If an error occurs during file replacement, the installer automatically reverts to the pre-update backup.
Emergency Recovery (recover.php): If an unexpected server timeout occurs during an update, visit https://yourdomain.com/recover.php in your browser and click Restore the previous version to roll back immediately.

8. Tracking Changelogs & New Releases

Keep up to date with new features, performance optimizations, and security patches.

Stay informed about every MarbleSend update through two convenient channels:

public Public Changelog

Visit marblesend.com/en/changelog/ or subscribe via Atom RSS Feed to receive release notices in your favourite reader.

admin_panel_settings In-App Changelog

Inside your MarbleSend admin dashboard, open the Changelog sidebar item to view complete technical notes and migration steps.

9. Troubleshooting & FAQ

Plain-language solutions to the most common setup questions.

Q: "Not found." appears when opening the installer.
A: The setup URL requires the query parameter ?setup=1, e.g. https://yourdomain.com/migrate-web.php?setup=1. Without this flag, the page responds with "Not found." for security.
Q: Server check reports "sodium" extension missing.
A: Go to your hosting control panel → Select PHP Version → Extensions → check sodium. Refresh the installer and the check will turn green.
Q: Database connection failed.
A: (1) Ensure host is localhost; (2) Include the full account prefix for both database and user (e.g. u123456_msend); (3) In cPanel, verify that the user was added to the database with ALL PRIVILEGES.
Q: "Private files could be opened from the internet" warning.
A: Ensure your domain Document Root points to the public/ subfolder, not the parent folder. This protects secret config files from public browser access.
Q: Worker Status shows Inactive / Stalled in Settings → System.
A: Verify that your cron job points to a PHP 8.2+ CLI binary (e.g. /usr/local/bin/php or /opt/alt/php83/usr/bin/php). Alternatively, use the Web-Cron HTTP fallback URL.
Q: HTTP 429 or empty response when using Cloudflare.
A: If your host has its own CDN or firewall, set the domain DNS record in Cloudflare to DNS Only (grey cloud) to avoid conflicting rate-limit filters.

Les traductions sont fournies par commodité. En cas de divergence avec la version anglaise, la version anglaise prévaut.