PORTABLE INSTALL ================ This archive is a whole working copy of the solar CRM: the application's code, its database and the files it stores. The installer in portable/ sets it up on this computer in development mode, with PHP and MySQL (or SQLite) and nothing else to configure by hand. What you need on this machine ----------------------------- - PHP 8.3 or newer, with the zip, pdo_mysql (or pdo_sqlite), mbstring, openssl, curl, fileinfo and dom extensions - Composer (only if the package does not carry vendor/) - Node.js 18 or newer and npm (only if the package does not carry a built front end) - MySQL or MariaDB, if the package carries a MySQL database A package built with `php artisan crm:package --full` carries both, so a computer with PHP and MySQL can install and run it with no internet connection and nothing else installed. A package built without --full is smaller and runs composer install and npm install here instead. Install it ---------- 1. Unzip this archive somewhere outside a web root, for example C:\laragon\www\solar-crm or ~/sites/solar-crm 2. Open a terminal in the directory you unzipped it into 3. Run the installer: php portable/install.php --db-name=solar_crm On Windows you can also double-click portable\install.bat, and on macOS or Linux portable/install.sh does the same thing. Add these when the defaults do not fit: --db-user=root --db-password=secret --db-host=127.0.0.1 --db-port=3306 --app-name="Your Solar Co" --app-url=http://solar-crm.test 4. Start it: php artisan serve and, in a second terminal, the front end with hot reloading: npm run dev `composer run dev` runs the application, the front end and the queue worker together if you prefer one command. Look before you leap -------------------- php portable/install.php --dry-run checks the package, the machine and the database dump, and writes nothing. The installer refuses two things on purpose, because both are how somebody's live data gets replaced by accident: - it will not overwrite a .env that is already here. Pass --force if you really are reinstalling; the existing .env is kept beside the new one; - it will not import into a database that already holds tables. Pass --force only if that database is yours to replace. It also refuses to run inside the installation the package was built from. What is inside -------------- portable/manifest.json what the package holds, and its checksums portable/database.sql.gz the database dump portable/install.php this installer vendor/ + public/build/ only in a --full package: PHP dependencies and the compiled front end everything else the application The installer skips composer install when vendor/ is already here, and skips npm entirely when public/build is here and node_modules is not, so a --full package installs with nothing to download. `--dry-run` prints exactly which steps it would run. The file you were sent is confidential: it holds real customer records and the password hashes of the accounts that existed on the computer it came from. Do not email it, commit it, or leave it on a shared drive. The .env of the machine the package was built on is deliberately NOT in here, and neither are its application key or its git history. The installer writes a fresh .env and generates a fresh key, so the two installations share data but not credentials. Signing in ---------- The accounts come across with the database, with the passwords they already had. If they are not yours, change them from Settings once you are in, or set SUPER_ADMIN_EMAIL and SUPER_ADMIN_PASSWORD in .env and run: php artisan db:seed --class=SuperAdminSeeder Before it faces anybody ----------------------- This is a development installation: APP_ENV=local and APP_DEBUG=true. Set a real APP_URL, a real mailer and a queue worker before anyone else uses it, and take a verified backup of what you have now: php artisan queue:work --queue=default php artisan crm:backup --type=full