Home›Deliora›Quickstart
Deliora · Quickstart

Deliora Quickstart, as shipped in the download

The QUICKSTART.txt in the download — the same steps your delivery email carries.

DELIORA — QUICKSTART
====================

REQUIREMENTS
------------
  - PHP 8.0+ with extensions: pdo, pdo_sqlite (or pdo_mysql), fileinfo
  - MySQL 5.7+ OR SQLite 3 (SQLite requires no extra setup)
  - A web server (Apache with mod_rewrite, or Nginx with try_files)
  - Optional: SMTP credentials for real buyer emails. Without them, all
    transactional mail is stored in the admin Outbox (evaluation mode).

SHARED HOSTING / CPANEL (RECOMMENDED FOR MOST BUYERS)
------------------------------------------------------
1. Upload the contents of the `app/` folder to your web root (e.g. public_html/)
   or a subdirectory (e.g. public_html/store/).

2. Make sure the data/ directory is writable by PHP.
   Via cPanel File Manager: right-click -> Permissions -> 755 or 775.

3. Visit https://yourdomain.com/install/ in your browser.

4. Fill in the installer:
     - Database: MySQL (host/name/user/pass) or SQLite (no setup)
     - Store name, currency, timezone
     - Admin email + password

5. The installer writes config.php and redirects you to the login page.

6. Log in -> Products -> New product. Add editions (single/extended/saas),
   upload each edition's ZIP deliverable, upload screenshots, publish.

7. Payments start in DEMO mode: the storefront's Buy button opens a built-in
   simulated checkout that exercises the FULL fulfillment loop (order, license
   key, download link, outbox email) with no real money. Try it end to end.

GOING LIVE WITH REAL PAYMENTS
-----------------------------
  Deliora hands checkout to a payment provider (Lemon Squeezy or Stripe) and
  fulfills from their signed webhooks — card data never touches your server.

  1. Settings -> Payments: pick your provider, add its webhook secret
     (write-only), and set each edition's checkout URL / variant / price ID.
  2. Point the provider's webhook at: https://yourdomain.com/webhook/lemonsqueezy
     (or /webhook/stripe).
  3. IMPORTANT — crypto modules: webhook SIGNATURE VERIFICATION and HMAC
     license signing are fully implemented (see README "Crypto modules").
     Any non-demo webhook whose signature does not verify is REJECTED (fail
     closed) — nothing can be forged, and nothing will fulfill. The demo
     provider is fully functional for evaluation with no real money.

DEMO DATA (OPTIONAL, LOCAL EVALUATION)
--------------------------------------
  php bin/demo.php
  Login: admin@deliora.app with the one-time password it prints
  Loads a sample store: 4 products, 10 orders, licenses with activations,
  a refunded order, and outbox emails.

LOCAL PREVIEW WITHOUT APACHE
----------------------------
  php -S 127.0.0.1:8080 router.php
  then open http://127.0.0.1:8080/install/

LICENSE API (FOR YOUR OWN PRODUCTS)
-----------------------------------
  POST /license/check    JSON {"key":"OWX-...","sku":"your-product-slug"}
  POST /license/activate JSON {"key":"OWX-...","sku":"...","domain":"client.com"}
  -> {"valid":true,"tier":"single","activations_left":2,"reason":""}
  Re-activating the same domain never consumes an extra slot.

TROUBLESHOOTING
---------------
  - 500 after upload: data/ not writable, or PHP < 8.0
  - "Session expired" on every form: cookies blocked or PHP sessions broken
  - Buy button says "no checkout link configured": set the edition's checkout
    URL (or variant/price ID) in the product editor, or stay in demo mode
  - Downloads 404: the edition has no ZIP uploaded yet
  - Emails not arriving: SMTP unconfigured -> check the admin Outbox

LOOKING AFTER IT (from 4.0)
---------------------------
  * Updates: open Updates in the menu, save your license key once, press Check for updates.
    Reaching 4.0 from 3.x is the last update by hand: replace the files; config.php and data/ stay.
  * Sample data: the installer offers to start with a sample; remove it later with one click.
  * Backups: "Back up once a day by itself" is on by default (/admin/restore); add an S3-compatible bucket there for
    a copy somewhere else. The Health page (/admin/health) says whether all of this is working.
  * On Nginx: use the server block in the manual ("On Nginx: keep data/ private", https://ownware.io/p/deliora/manual);
    it opens the installer and keeps data/ private.
  * One-line install for technical owners:
    curl -fsSL https://ownware.io/install.sh | sh -s -- deliora <your license key>

← Back to Deliora · Manual · API · Test run