Updating KodMail

A minor version bump (e.g. 1.0.0 → 1.1.0) never migrates data destructively. You can apply the update entirely from the admin panel — no SSH or artisan commands required.

At a glance

  1. Back up database + KodMail folder.
  2. Download the new release ZIP from CodeCanyon.
  3. Upload the extracted files over your existing folder (FTP / File Manager). Keep .env and storage/.
  4. Sign in → Admin → Updates → click Apply update.
  5. If your host uses OPcache, restart PHP once.
  6. Re-verify your licence if prompted.

Recommended flow (shared hosting, cPanel, Plesk, VPS)

  1. Back up the database and the KodMail folder before starting. Any modern MySQL export tool works (mysqldump, phpMyAdmin export, cPanel Backup).
  2. Download the new release ZIP from your CodeCanyon downloads page (for example kodmail-installer-v1.1.0.zip).
  3. Upload the extracted files over your existing KodMail folder using FTP, SFTP, or your hosting File Manager. Keep your existing .env file and the storage/ folder untouched — overwriting them wipes uploads and configuration.
  4. Sign into the admin panel and open Admin → Updates. Click the highlighted Apply update button. This runs pending database migrations, clears the framework caches, backfills any new KODMAIL_* keys added to .env.example (existing values are preserved), and stamps the new version in the settings.
  5. If your host enables PHP OPcache, restart PHP or reload the app pool once so the freshly uploaded PHP files take effect. In Laragon, cPanel, and most managed hosts this is a one-click "Restart PHP" button.
  6. Once the update finishes, KodMail may redirect you to Admin → License with a "please re-verify" notice. This happens when the new release enforces stricter activation rules (for example, item-ID matching after CodeCanyon approval). Enter your purchase code and marketplace username and click Verify & activate — the green "verified" badge returns and the reminder modal stops appearing.

That's it. No terminal, no php artisan commands. The button records the outcome in the audit log so you have a paper trail of who ran the update and when.

What changes in .env during Apply update

KodMail 1.1.0 introduced a handful of new KODMAIL_* environment keys that older installs (from 1.0.0) don't have. Apply update adds any missing keys to your .env automatically — it never touches keys you already set. Only APP_INSTALLED and KODMAIL_* keys are considered; per-install values like DB_*, MAIL_*, and AWS_* are never rewritten.

New keys as of 1.1.0:

  • KODMAIL_ITEM_ID — populated post-CodeCanyon approval so the activation service can enforce item-ID matching on verify.
  • KODMAIL_LICENSE_SIGNING_SECRET — shared HMAC secret. Ships empty; set only when your activation service enables response signing.
  • KODMAIL_STRICT_VERIFY — reject activation responses lacking proof of identity. Default false; enable once your server sends a buyer field or signature.

If you prefer to manage .env yourself, copy those three lines from the shipped .env.example — the Apply-update button is purely a convenience.

Prefer the command line?

All the steps the button runs are also available as artisan calls if you're comfortable with SSH:

cd /path/to/kodmail
php artisan down                       # optional maintenance mode
# ... upload / rsync the new files ...
php artisan migrate --force
php artisan optimize:clear
php artisan up

Behaviour is identical either way.

Rolling back

If the update misbehaves, restore your pre-upgrade database backup and swap the old folder back in. The settings table stores the running version — restoring the DB restores the version stamp too. If you ran migrations that can't be trivially reversed, use your DB snapshot rather than running migrate:rollback.

Legacy in-place upgrade (VPS / dedicated with SSH)

  1. Take a database backup. Seriously.
  2. Put the app in maintenance mode: visit Admin → Settings → Maintenance mode, or from the command line php artisan down.
  3. Download the newer KodMail release ZIP from your marketplace receipt.
  4. Extract directly over the old webroot — the archive has no wrapper folder, so files overwrite in place. Preserve .env, the whole storage/ tree, and the public/storage symlink — these carry your data and configuration.
  5. Open any URL on your site. KodMail detects the new code, runs any pending migrations on the next request, and re-warms its caches automatically.
  6. Take the site out of maintenance mode: Admin → Settings → Maintenance mode, or php artisan up.
  7. If you run a Supervisor-managed queue worker (VPS / dedicated), restart it so it loads the new code: supervisorctl restart kodmail-worker:*.