Install on shared hosting
Upload the release zip, run the web installer, and add the cron job. No SSH or Composer needed.
The release zip bundles its dependencies, so you can install Tidemark Billing on a normal PHP host with only a file manager and a browser.
Before you start#
Check that your host meets the requirements: PHP 8.3 or newer and the listed extensions. If you build the zip yourself, run scripts/build-release.sh 0.1.0 from the source tree, which writes dist/tidemark-billing-0.1.0.zip.
Install#
- Upload the zip to your host and unzip it.
- Set the domain's document root to the
public/folder. In cPanel this is usually under the domain settings. - If your host does not allow changing the document root, upload the unzipped folder to the web root as it is. The bundled root
.htaccessforwards requests topublic/and blocks access to.env,app,config,storage,vendorand other internals. - Open
https://your-domain/install. - Read the server checks at the top. Each failed check shows a hint when you hover over it. Fix the items marked with a cross, then reload.
- Under Database, choose SQLite, MySQL / MariaDB or PostgreSQL. For MySQL, enter the host, port, database name and username (the password is optional).
- Under Your business, enter the business name and default currency. Under Administrator, enter your name, email and a password of at least 8 characters.
- Tick the plugins you want now. You can change this later under Plugins.
- Select Install Tidemark Billing.
The installer runs the migrations, creates the admin account, saves the database settings and your site address to .env, and signs you in. After that, /install redirects to the home page.
Add the cron job#
Invoices, reminders and suspensions are started by a scheduled task. Set it up now, using the steps in Set up the cron job.
Set up email and payments#
- Open Settings → Email and enter your SMTP details. See Email.
- Open Plugins and turn on a payment plugin such as Stripe or PayPal.
- Enter its keys under Settings → Payments.
Never leave
.envreachable from the web. Pointing the document root atpublic/is the safest setup. The.htaccessfallback blocks.env, but only on servers that read.htaccessfiles.