Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Self-hosting Mahara on an Ubuntu VPS is a conventional Linux deployment: pin a Mahara release, install its tested PHP and database stack, put the application under a web server, keep dataroot outside the public directory, and protect cron and upgrades with a urlsecret. The safest order is to choose the Mahara version before provisioning Ubuntu packages, because the requirements published for Mahara 22.10 do not guarantee that every newer Ubuntu, PHP, PostgreSQL, or MariaDB combination has been tested.

Decide which Mahara release you are installing

Mahara 24.04 documentation is dated 26 April 2024. Start with that release, or another explicitly selected version, and use its matching installation and upgrade manual. Do not copy the older 22.10 compatibility table onto a current Ubuntu image without checking the newer manual.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Item What the published requirements establish How to apply it
Operating system The 22.10 requirements page lists Ubuntu 18.04 LTS or later. Use a supported Ubuntu LTS image, then verify that your selected Mahara release supports that exact LTS.
Web server Apache 2 or later is listed; Nginx is described as tested. Choose the server your team can operate and whose PHP integration you can support.
Database PostgreSQL or MySQL/MariaDB is supported, subject to the Mahara release matrix. Pin a tested database version instead of accepting an unverified major-version upgrade.
PHP The 22.10 page lists PHP 7.2–7.4 and warns that PHP 8.1 production use was not tested. Do not install a PHP version solely because it is the Ubuntu default; follow the selected release manual.
Newer combinations The page calls out Ubuntu 22.04+, PostgreSQL 13+, MariaDB 10.8+, and PHP 8.1 as untested combinations for that requirements result. Treat those warnings as version-specific, not as a blanket statement about every later Mahara release.

Record the Mahara version, Ubuntu release, PHP version, database engine and database version in your deployment notes. That record makes security updates and later upgrades much easier to evaluate.

Choose the production shape

Traditional Linux installation

The Mahara 24.04 manual presents a traditional Linux installation as the normal supported path. It gives you direct control over Apache or Nginx, PHP, the database, filesystem permissions, TLS, cron and backups. This is the most straightforward shape for an Ubuntu VPS when you already administer Linux services.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

Docker

Mahara documents Docker for development and testing. A Docker deployment can make repeatable builds and isolated dependencies easier, but a live service still needs hardened images, persistent volumes for the database and dataroot, secret management, TLS termination, scheduled tasks, logging, backups and an update procedure. Do not treat a development container as a production security design.

Apache or Nginx

Apache 2+ is the least surprising choice when you want the conventional Mahara layout and broad operational documentation. Nginx is also a viable tested option, but normally hands PHP requests to PHP-FPM, so you must configure the socket, document root, rewrite behavior and permissions correctly. Pick the server your administrators can monitor and repair; a familiar stack is usually safer than a theoretically smaller one.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

PostgreSQL or MySQL/MariaDB

Both database families are supported, but the correct choice is the one tested by your Mahara release and already understood by your team. Compare the release-specific version matrix, existing backup tooling, replication or managed-service availability, and who will handle routine maintenance. Mahara does not make an arbitrary database choice safe when the exact version is outside its tested combinations.

Plan DNS, storage and capacity before installing

Create a DNS name for the site and decide whether it will be the canonical HTTPS address, such as portfolio.example.org. Point the record to the VPS before requesting a certificate. Reserve disk for the operating system, database growth, uploaded files, generated artefacts, logs and at least one local staging area for backups. Upload-heavy portfolios can consume storage much faster than the source code itself.

No reviewed Mahara source publishes a guaranteed CPU, RAM, storage or user-count minimum. Capacity depends on concurrent sessions, upload size, database activity, email volume, search/indexing and retention. Start with monitoring, keep a growth margin, and resize after observing real workload rather than selecting a supposed universal minimum.

Prepare the Ubuntu VPS

  1. Provision an Ubuntu LTS image. Select an LTS release that is supported by the Mahara version you pinned. Use a provider snapshot or image you can reproduce, and document the image identifier.
  2. Create an administrative account. Add a named user with sudo access. Install an SSH key and test a second administrative session before changing SSH settings.
  3. Set hostname and DNS. Make the server hostname, forward DNS and (where used) reverse DNS consistent. Confirm that the Mahara hostname resolves to the VPS from an external network.
  4. Update the operating system. Run sudo apt update and sudo apt full-upgrade, review any package changes, and reboot if the kernel or core services require it.
  5. Enable a firewall. Allow SSH from the administration networks and allow TCP 80 and 443 for web traffic. Do not expose the database port to the public internet; keep it on localhost or a private network.
  6. Synchronize time. Enable Ubuntu time synchronization. Correct timestamps matter for sessions, certificates, logs, scheduled tasks and database recovery.

After the base setup, disable password-based SSH authentication where practical, restrict root login, and keep a tested recovery path before closing the original session.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install the web, PHP and database packages

Use the package names and PHP version required by the selected Mahara manual. The following illustrates the sequence for an Apache-based host; substitute the release-approved package names and versions if your Ubuntu repository differs.

sudo apt update
sudo apt install apache2 postgresql
sudo apt install php php-cli libapache2-mod-php
sudo apt install php-curl php-gd php-json php-ldap php-mbstring php-fileinfo php-pgsql php-session php-simplexml php-intl

Mahara 22.10 lists these required capabilities: curl; GD with FreeType; JSON; LDAP; libxml; mbstring; fileinfo or mime_magic; a database driver; sessions; SimpleXML; and intl. On some Ubuntu releases, JSON, session and fileinfo are built into the PHP package rather than separate packages. Verify the loaded modules with php -m and check the web server’s PHP handler, not only the command-line binary.

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

Optional capabilities listed for that requirements page include bz2, imagick, openssl or xmlrpc, memcached, zlib, adodb, and enchant or pspell. Install an optional extension only when a feature or integration needs it and the selected Mahara manual supports it. Avoid mixing packages from an unrelated PHP repository unless you have a documented reason and a rollback plan.

If you choose Nginx, install the release-compatible PHP-FPM package instead of Apache’s PHP module, configure Nginx to pass PHP files to the correct FPM socket, and ensure the socket account can read the application while only the intended directories are writable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create a dedicated database

Use a separate database and least-privilege account for Mahara. The database may listen on localhost or a private network, but it should not be reachable from the public interface.

  1. Install the PostgreSQL or MySQL/MariaDB version listed as tested for your Mahara release.
  2. Create an empty database with the encoding and locale recommended by that release.
  3. Create a dedicated login role or user with a long, randomly generated password.
  4. Grant that account only the privileges Mahara needs on its own database. Do not use a server-wide administrator account in config.php.
  5. Record the database name, username, password, host and port in your password manager and deployment notes.

For PostgreSQL, a typical administrative session starts with sudo -u postgres psql; perform the exact CREATE DATABASE, role and grant statements appropriate to the selected release and your security policy. For MySQL or MariaDB, use the equivalent dedicated database and account statements. Test a login with the application credentials before proceeding.

Download Mahara and lay out the filesystem

Obtain the chosen release from Mahara’s official distribution channel and verify a supplied checksum or signature when one is published. Keep the archive and verification record with your deployment notes. Extract the package into a dedicated application directory rather than mixing it with another site.

Mahara’s installation checklist says to copy the files under htdocs into the web root. A practical layout is an application directory containing the release files, with the virtual host document root set to that release’s htdocs directory. Do not expose the parent directory, archives, deployment notes or secret backups through a public alias.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo mkdir -p /var/www/mahara/releases/24.04
sudo tar -xf mahara-release.tar.gz -C /var/www/mahara/releases/24.04
sudo chown -R www-data:www-data /var/www/mahara/releases/24.04

Use the web-server account appropriate to your distribution; Ubuntu’s Apache examples commonly use www-data. Keep source files non-writable by the web process wherever possible, granting write access only to directories Mahara documents as writable.

Put dataroot outside the public web root

Mahara’s dataroot stores uploaded artefacts and generated data. It must be a separate directory that cannot be requested directly by a browser. The 24.04 defaults documentation recommends mode 0700, allowing only the web-server account to read it.

Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
sudo mkdir -p /var/lib/mahara/dataroot
sudo chown -R www-data:www-data /var/lib/mahara/dataroot
sudo chmod 0700 /var/lib/mahara/dataroot

Do not place this directory below htdocs, a public Nginx alias or an accidentally published backup directory. If a documented operational requirement means another account needs access, use a controlled group and the narrowest permissions that meet that requirement; do not make the directory world-readable.

Create and protect config.php

Copy htdocs/config-dist.php to htdocs/config.php. Enter the database connection, canonical wwwroot, dataroot path and other site values required by the release.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
cd /var/www/mahara/releases/24.04/htdocs
sudo cp config-dist.php config.php
sudoedit config.php

Use the exact variable names and syntax shown in that release’s template. Set wwwroot to the final HTTPS hostname, not an IP address or temporary URL. Set dataroot to the private path created above. Keep the file readable by the web process but not by unrelated users, and store a protected backup because it contains database credentials and site secrets.

Mahara states that config.php is not changed by an update or upgrade. That protects local settings, but it also means administrators must review configuration changes deliberately and carry the file forward during a release migration.

Configure the virtual host and HTTPS

Create a dedicated virtual host whose document root is Mahara’s htdocs directory. Set the server name to the DNS name you selected and enable the PHP handler required by your Apache or Nginx design. Keep directory overrides and rewrite rules aligned with the release documentation; an overly broad alias can expose configuration or release files.

Obtain a certificate from your chosen certificate authority after DNS resolves correctly. Redirect HTTP to HTTPS, test the canonical URL and confirm that cookies, login redirects and uploaded files remain on HTTPS. Renew the certificate automatically and monitor its expiry.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If the web server already emits the HTTP Strict Transport Security header, coordinate Mahara’s HSTS setting so the header is not duplicated. HSTS is difficult to undo for users who have cached it, so confirm that every required hostname is permanently available over HTTPS before enabling a long policy.

Finish the web installer and verify the first administrator

  1. Visit the HTTPS wwwroot in a browser.
  2. Complete the release-specific database and schema setup when prompted.
  3. Create the first administrator account with a unique, strong password.
  4. Set the site name, default time zone and other institutional settings.
  5. Remove, disable or lock down installation-only artefacts if the release instructs you to do so.
  6. Test a login, logout, password reset path, file upload, session persistence and database write.
  7. Send a test message if mail is configured, and verify that the message is delivered without exposing credentials in logs.

Perform these checks from an ordinary user account as well as the administrator account. A successful installer page alone does not prove that PHP uploads, background tasks, mail or permissions work.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Protect and schedule Mahara cron

Mahara scheduled tasks handle maintenance and other background work. Run them under the appropriate service account using the system scheduler. A command-line invocation is preferable when your release documents it, because it avoids exposing a web endpoint.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If you invoke cron through HTTP, set a strong, unpredictable urlsecret and keep it out of client-side code, screenshots and public issue reports. Mahara documents the endpoint as /lib/cron.php?urlsecret=.... The same protection applies to a web-triggered upgrade at /admin/upgrade.php?urlsecret=.... Without this configuration variable, anybody who can reach the endpoint could run scheduled tasks or an upgrade and potentially cause damage.

Use a scheduler entry with a deliberate interval and log output to a protected location. Check the scheduler’s exit status and alert when runs stop succeeding. Do not assume that a page request from a browser is an adequate substitute for a reliable recurring job.

Production security checklist

  • Use SSH keys and disable password SSH login where practical.
  • Apply security updates, but check Mahara compatibility before changing PHP, the database engine or other major runtime components.
  • Keep PostgreSQL or MySQL/MariaDB bound to localhost or a private network.
  • Keep dataroot outside the web root with 0700-style permissions unless a documented need requires a different controlled arrangement.
  • Use a strong urlsecret and rotate it if it is disclosed.
  • Log production errors to the web-server error log instead of displaying debug output to visitors.
  • Set a strong password policy. If registration is open, evaluate reCAPTCHA and abuse controls.
  • Consider ClamAV scanning for uploaded files and evaluate whether external HTML resources should be disabled for your threat model.
  • Coordinate HSTS between Mahara and the web server so policy headers are consistent.
  • Limit administrative access by network or VPN where feasible and review the firewall after every service change.

Back up the parts that make a Mahara site recoverable

A usable backup contains the database, config.php and the complete dataroot. Backing up only the application files will not restore user portfolios or site settings. Encrypt backups, restrict access, keep a copy away from the VPS, and monitor that each scheduled job actually produced a restorable file.

There is no universal backup interval published in the reviewed Mahara material. Choose it from your recovery-point objective and upload volume: a site with frequent large uploads needs more frequent backups than a rarely changed test site. Periodically restore the database, configuration and dataroot into a separate environment, then verify that users can log in and files open.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Plan upgrades instead of treating them as ordinary apt updates

  1. Read the upgrade notes for the exact target Mahara release and confirm its Ubuntu, PHP and database requirements.
  2. Take fresh database and dataroot backups and protect a copy of config.php.
  3. Test the upgrade in a separate environment that matches production versions and extensions.
  4. Schedule a maintenance window and enable maintenance mode when the release procedure requires it.
  5. Run the documented upgrade mechanism, using the protected URL secret if a web endpoint is involved.
  6. Check the database schema result, application logs and web-server errors.
  7. Verify login, uploads, mail, cron and any external integrations before reopening the site.

Mahara recommends keeping installations current with security updates, but a security update still deserves a compatibility check when it changes a major PHP or database version.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Monitor the running service and scale from evidence

Monitor disk capacity, database growth, PHP and web-server errors, cron completion, mail delivery, response times and certificate expiry. Alert on a full dataroot volume, repeated database errors and missed scheduled tasks. Keep enough log retention to diagnose failures without allowing logs to consume the VPS.

Search-heavy installations may use Elasticsearch. Mahara documents sudo -u www-data php admin/cli/fast_index.php to start the next indexing batch immediately after the previous one. Run that command only in the release and account context described by your manual, and monitor indexing duration and resource usage.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

When measurements show pressure, identify the bottleneck before resizing. Concurrent PHP requests may require more CPU or memory; uploads require storage and bandwidth; database activity may require faster disks or additional memory; indexing can need separate scheduling. Increase capacity in stages and retain the monitoring data that justified each change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Networking and integrations

Mahara can connect to Moodle or another Mahara instance through its networking features, including single sign-on scenarios. The 24.04 manual recommends LTI for current integrations rather than older MNet approaches. Before enabling an integration, plan DNS, TLS certificates, trusted keys, identity mapping, account lifecycle and logout behavior.

Leave automatic host registration disabled unless you deliberately want any connecting host to create an institution. Test integrations with non-production identities first, document which side owns user attributes, and include integration secrets and certificates in your backup and rotation plan.

Troubleshooting by symptom

Symptom Likely checks
Installer reports missing PHP capability Compare the loaded web PHP modules with the selected Mahara release requirements; php -m from a shell may use a different PHP binary than Apache or PHP-FPM.
Uploads fail or disappear Check that dataroot exists, is outside the web root, is owned by the web-server account and has sufficient free space and restrictive permissions.
Database connection fails Recheck the host, port, database name, account password, server listening address and grants. Confirm that the database version is in the release’s tested matrix.
HTTPS redirects loop Check the canonical wwwroot, TLS termination or reverse-proxy headers, and whether the web server and Mahara disagree about the request scheme.
Cron appears to do nothing Run the documented command manually as the service account, inspect its output and scheduler logs, then verify that the URL endpoint includes the correct urlsecret if HTTP invocation is used.
Visitors see debug details Disable production debug display and send errors to protected web-server logs. Preserve the error details for administrators without returning them to users.
Upgrade stops partway through Keep the site in maintenance mode, consult the target release notes, inspect database and PHP errors, and restore the tested backup only after deciding whether a retry or rollback is safe.

Final go-live checklist

  • The Mahara release and all runtime versions are recorded and supported together.
  • DNS, hostname, firewall and time synchronization are working.
  • Apache or Nginx serves only the intended htdocs directory over HTTPS.
  • PHP has every required extension and no untested major-version substitution.
  • The dedicated database account works with least privilege and is not internet-facing.
  • dataroot is outside the public root, owned by the service account and tightly permissioned.
  • config.php contains the correct HTTPS URL and private dataroot path, with a protected backup.
  • The administrator, ordinary-user login, uploads, sessions and mail have been tested.
  • Cron runs under the correct account and is protected by urlsecret when accessed through HTTP.
  • Backups include the database, dataroot and configuration, and a restore test has succeeded.
  • Monitoring covers storage, database growth, errors, cron, mail and certificate expiry.
  • Upgrade notes and a maintenance procedure are written down for the next release.

Frequently Asked Questions

Can I install Mahara 22.10 on the newest Ubuntu PHP packages?

Not automatically. The 22.10 requirements result warns that combinations including Ubuntu 22.04 or later, PostgreSQL 13 or later, MariaDB 10.8 or later and PHP 8.1 were not tested for production use. Pin the Mahara release and follow its matching compatibility matrix before choosing packages.

Where should Mahara dataroot be located?

Use a separate directory outside the web root, owned by the web-server account. Mahara’s 24.04 defaults documentation recommends mode 0700 so only that account can read it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why is urlsecret necessary?

It prevents unauthenticated callers from triggering Mahara’s cron endpoint or a web upgrade. If you use the documented HTTP forms, protect both /lib/cron.php?urlsecret=… and /admin/upgrade.php?urlsecret=… with a strong secret.

How large should the Ubuntu VPS be?

Mahara does not publish a universal CPU, RAM, storage or user-count minimum in the reviewed material. Size the VPS for concurrent users, uploads, database activity, email, indexing and retention, then scale from monitoring data.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.