AlumDeck

Guide · technical, no terminal needed

Install alumni management software on cPanel hosting.

If you can create a database and extract a zip in File Manager, you can put a complete alumni site on hosting you already pay for. About fifteen minutes on a healthy host. This is the whole process, including the parts that go wrong.

Step zero

What you need in front of you before you start.

Installs go badly when one of these is missing and nobody notices until halfway through.

Six things to have ready
You needDetailsWhere to find it
cPanel hostingAn ordinary shared plan is enough. You need File Manager, MySQL Databases, Domains and Cron Jobs.Your host's control panel
PHP 8.3 or newerThe installer refuses anything older before it writes a thing.Select PHP Version
MySQL or MariaDBOne empty database and a user with all privileges on it.MySQL Databases
A domain or subdomainalumni.riverside.edu is the usual shape. Turn on the free SSL certificate before anyone types a password.Domains
Your licence key36 characters with four dashes, in the purchase email with your download link.Your inbox
Outbound HTTPSScreen one checks the key with alumdeck.com. Nearly every host allows it.Ask your host if screen one cannot connect

The one thing to get right

The layout on your server keeps secrets out of reach.

The application, including the .env file that will hold your database password, sits outside anything a browser can reach. Only its public folder is served.

/home/youraccount/
  alumdeck/                  the application, never served
    public/                  the only part a browser should see
  public_html/
    alumni.riverside.edu/    the document root cPanel gave your domain

There are two ways to connect the domain to the application, and your host decides which one you can use.

If your host lets you choose the document root

Point the domain straight at /home/youraccount/alumdeck/public. Nothing else to do. Try this first: it is one less thing to keep in step at every update.

If cPanel keeps the document root under public_html

Most shared accounts do, and quietly rewrite any other path you type. Then copy the contents of alumdeck/public/ into the document root, and change three lines of its index.php so they reach back into the application folder. Count how many folders the document root sits below your home directory, and use that many ../. For public_html/alumni.riverside.edu that is three:

if (file_exists($maintenance = __DIR__.'/../../../alumdeck/storage/framework/maintenance.php')) {
    require $maintenance;
}
require __DIR__.'/../../../alumdeck/vendor/autoload.php';
$app = require_once __DIR__.'/../../../alumdeck/bootstrap/app.php';

Get the count wrong and you see a 403 or a blank page. It is the step people get wrong, and it is always the number of ../.

The install

Twelve steps, in this order.

Four jobs in cPanel, six screens in a browser, and two jobs straight afterwards that decide whether the site actually works.

  1. Create an empty database and a user

    In MySQL Databases, create the database, create a user with a long password, then add the user to the database with All Privileges. Creating both is not the same as connecting them. Copy the full names down: most hosts add your account name as a prefix.

  2. Upload the zip to your home directory

    In File Manager, open your home directory, not public_html. Upload the zip and use Extract. You get a folder called alumdeck. Nothing needs Composer and nothing needs building: the libraries and compiled assets are already inside.

  3. Create the domain and connect it

    Add the subdomain in Domains and switch on SSL. Then connect it to the application using one of the two layouts above.

  4. Open the address

    Visit the domain. With nothing configured yet, AlumDeck sends you to /install. A 403 or a blank page here almost always means the ../ count.

  5. Screen 1: your licence key

    Paste the key. It is checked with alumdeck.com, sending the key, the product name and your hostname, and nothing else. The address you install on becomes the one live site the key covers.

  6. Screen 2: the server check

    Every requirement, checked live. Red must be fixed; amber is recommended but optional. Nothing has been written yet, so change a setting in cPanel, reload and try again as often as you need.

  7. Screen 3: the database

    Host (localhost on almost every shared host), port, database, user and password. The installer opens a real connection, then creates and drops a probe table, so a user who can connect but not create tables fails here rather than halfway through.

  8. Screen 4: your site and the first admin

    Site name, the address members will see, your timezone, and the first administrator. Use your own email rather than a shared inbox, and a password of at least twelve characters.

  9. Screens 5 and 6: review, install, done

    The review screen has an add sample content box, ticked by default: leave it for a first look, untick it for the real site. Install writes .env, creates the tables and your account, adds leaving years from 1940 and templates for your privacy and terms pages, and makes a real uploads folder inside the document root rather than a symlink, which shared hosts often refuse to serve. It then fetches its own address twice to prove an uploaded file is actually served.

  10. Add the cron line

    In Cron Jobs, add one entry that runs every minute and calls artisan schedule:run. The exact line is just below these steps. Without it, eleven scheduled jobs never run: announcements, event reminders, birthday greetings, two digests, email campaigns, engagement scores, audit log pruning, the queue, nightly backups and the weekly restore check. Nothing looks broken. Things just do not happen.

  11. Set up mail and send a test

    Mail ships set to log: messages are written to a file, not sent, so a half-configured install cannot post mail to strangers. In the admin, open Settings, Mail, enter your SMTP details and press Send a test email. Until you do, nobody receives a password reset or a welcome invitation.

  12. Check the door is shut

    Visit /install on your address: it should return a plain 404, as it does on the live demo. Then check that /.env returns nothing. The installer switches itself off for good once an administrator exists.

The cron line, for step ten

Change the PHP path and your account name to match; cPanel usually shows the PHP path on the Cron Jobs page itself.

* * * * * /usr/local/bin/php /home/youraccount/alumdeck/artisan schedule:run >/dev/null 2>&1

Your first hour

A working site with nothing in it. This order saves rework.

Sign in at /admin

Nine things, in this order

Sign in with the account you made on screen four. Then:

  • General: your association's name and the year it was founded. Left blank, the built-in homepage shows this year and "0 years of history"
  • Branding and Theme: logo, square badge, favicon and four colours; nothing to rebuild
  • Modules: switch off what you will not run yet; nothing is deleted
  • Menus: if you switched anything off, build a custom menu, because the built-in one still links to those pages
  • Pages: replace the privacy and terms templates, which open with a not-legal-advice notice
  • Users: give each committee member only the areas they need, out of 13
  • My profile: turn on two-factor sign-in for your own account; it is opt-in
  • SEO: a title and a description for the homepage, About and Join
  • Tomorrow morning: the Backups page should list last night's run
The settings, screen by screen

When it does not work

The problems people actually hit, and their fixes.

Each starts with what you see, because that is what you have.

A blank white page before the installer appears

Almost always a missing PHP function rather than a missing extension. AlumDeck checks for them before the framework starts, so you normally get a page naming the function. If you truly get nothing, check that the domain is on PHP 8.3 or newer in Select PHP Version.

Screen one cannot reach the licence server

Your server cannot make outbound HTTPS requests. Ask your host to allow them from your account. There is no offline path: a key can only be checked against the licence server.

The licence key is not recognised

Check it against your purchase email: 36 characters with four dashes, and no space at the end. If it still fails, send it to us through the contact form.

The key is already in use on another address

One key covers one live site. Reinstalling on the same address always works. If you are moving hosts, ask us through the contact form to release the old address, or wait: an address that has not checked in for 30 days is released automatically.

The database step rejects details you know are right

On cPanel the real names carry your account prefix, so copy them exactly as MySQL Databases shows them. Check the user is added to the database with All Privileges, and use localhost as the host. If it connects but the probe table fails, the user lacks the create privilege.

A folder is not writable

Set the named folder to 755 with Recurse into subdirectories ticked; some hosts want 775. Do not use 777. If it still fails, the folder belongs to another user, and that is one for your host.

A 403 or a blank page after connecting the domain

Nearly always the number of ../ in index.php. Count the folders between your home directory and the document root again. Or the document root is serving the wrong folder: it must hold the contents of alumdeck/public.

The site loads with no styling

The compiled assets did not come across. Check that build/, with its manifest.json and assets/ folder, is in the document root.

Photos upload but do not display

Open one uploaded image's address directly. A 404 means PUBLIC_DISK_ROOT in .env is not a folder inside your document root. A 403, or your host's own page, means the address is blocked: set PUBLIC_DISK_URL to an address that is not /storage.

The admin sign-in says the captcha field is required

Only one of the two Cloudflare Turnstile keys is set in .env. Set both, or clear both.

/install still loads after installing

Either no administrator was created, or APP_INSTALLED=true is missing from .env. Check the users table in phpMyAdmin for a row with is_admin set.

Questions

What people ask before they start

Do I need a developer to install it?

No. Creating a database and extracting a zip are the same two jobs as installing any website software, the index.php edit is three lines, and the rest is a form. If you would rather hand it over, any web developer will recognise a standard Laravel application.

Will it run on cheap shared hosting?

Yes, that is what it was built for. You will feel the limits of a small plan on photo-heavy gallery pages long before member records, because AlumDeck stores uploads exactly as they arrive, without resizing them.

Can I rehearse the install before going live?

Yes, on the address you will use. Install with the sample content ticked, try everything, then start again: drop the database, delete the files and begin at step one. The key accepts a reinstall on the same address as often as you like. The licence also allows one private staging copy; make it by copying the live site's files and database, because the installer registers one address per key.

How long does it really take?

About fifteen minutes on a healthy host, most of it uploading. An afternoon if you need your host to move you to PHP 8.3, which is the one step outside your control.

What if my host cannot meet the requirements?

Send us the server check screen through the contact form. It names the exact requirement, and most failures are one support ticket to your host. If it still will not run, the 14-day money-back guarantee covers you.

See the finished result before you install.

Sign in as an admin or a member and click anything. Nothing you do can break it.

Sign-in details on the demo pageResets every night