Ready-to-use server

Ushahidi

Crowdsourcing Crisis Information

Ushahidi screenshots

Ushahidi (Swahili for "testimony" or "witness") is a crowdsourcing application created in the aftermath of Kenya's disputed 2007 presidential election that enables local observers to submit reports using their mobile phones or the internet, while simultaneously creating a temporal and geospatial archive of events.

This appliance includes all the standard features in TurnKey Core, and on top of that:

  • Ushahidi configurations:

    • Ushahidi Platform v6 is installed from the pinned official release archive in /var/www/ushahidi.

    • PHP 7.4 is installed from the deb.sury.org Trixie repository because the current Ushahidi backend requires PHP 7.4 and excludes PHP 8. Debian is preferred, but cannot satisfy that contract; Sury is a third-party, best-effort source without a guaranteed security-coverage window.

    • Laravel is updated from the official laravel/framework Git repository to stable v8.83.29. The complete Laravel 8.x repository is retained at /usr/local/share/turnkey-ushahidi/laravel-framework.git for update, recovery, and provenance auditing.

    • turnkey-ushahidi-update checks or applies official v6 stable patch releases whose complete artifact tuple has been vetted in a TurnKey package update, without replacing the database, uploads, or local secrets.

    • turnkey-ushahidi-laravel-update independently checks or applies stable Laravel 8.x tags from the official Git history. It never pulls into live files: a verified generation is staged and activated atomically, with automatic rollback when its health check fails.

  • SSL support out of the box.

  • Adminer administration frontend for MySQL (listening on port 12322 - uses SSL).

  • Postfix MTA configured as a localhost-only application submission service.

  • Webmin modules for configuring Apache2, PHP, MySQL and Postfix.

Credentials (passwords set at first boot)

  • Webmin, SSH, MySQL: username root

  • Adminer: username adminer

  • Ushahidi: username is email set on first boot

Application security updates

Operating-system and PHP package updates continue through APT. The two application-local update channels have different trust and compatibility boundaries:

turnkey-ushahidi-update --check
turnkey-ushahidi-update --apply --dry-run

turnkey-ushahidi-laravel-update --check
turnkey-ushahidi-laravel-update --apply --dry-run
turnkey-ushahidi-laravel-update --apply
turnkey-ushahidi-laravel-update --rollback

The Laravel command accepts only non-prerelease v8.* tags that descend from the installed version and the CVE-2024-52301 fix, remain on the official 8.x history, and keep the package dependency/autoload contract unchanged. It keeps the previous verified generation for explicit recovery. See man turnkey-ushahidi-laravel-update for verification and recovery details.

Laravel 8 is beyond its formal support window. TurnKey accepts the official 8.x repository as a best-effort humanitarian-appliance maintenance channel because upstream has made post-EOL security releases, including v8.83.28 for CVE-2024-52301. There is no SLA or guarantee that every present or future issue will be fixed. If upstream stops publishing acceptable stable tags, the command fails closed; administrators should not install branch HEAD or an unverified fork in place. TurnKey must then review/backport the issue, migrate Ushahidi, or withdraw the affected update path.

Usage details & Logging in for Administration

No default passwords: For security reasons there are no default passwords. All passwords are set at system initialization time.

Ignore SSL browser warning: browsers don't like self-signed SSL certificates, but this is the only kind that can be generated automatically without paying a commercial Certificate Authority.

Username for ushahidi:

Login as username is email set on first boot

Web - point your browser at either:

  1. http://12.34.56.789/ - not encrypted so no browser warning
  2. https://12.34.56.789/ - encrypted with self-signed SSL certificate

Username for database administration:

Login as MySQL username root at

  1. https://12.34.56.789:12322/ - Adminer database management web app
  2. MySQL command line tool:
    $ mysql --user root --password
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
    

Username for OS system administration:

Login as root except on AWS marketplace which uses username admin.

  1. Point your browser to:
  2. Login with SSH client:
    ssh root@12.34.56.789
    

    Special case for AWS marketplace:

    ssh admin@12.34.56.789
    

* Replace 12.34.56.789 with a valid IP or hostname.