erp:install and the module install commands. Most customers do not need any of this: ARUKZ runs the hosted service at erp.arukz.com, with backups and upgrades included.
The ARUKZ ERP source is proprietary to ARUKZ DIGITAL (Aureus ERP’s parts are MIT-licensed). These steps are for developers working on the code and for anyone running a copy under an agreement with ARUKZ.
What you need
- Docker with Compose, on a Linux server with at least 4 GB of memory.
- A checkout of the repository, with
composer installandnpm ci && npm run buildalready run in it (the container servesvendor/andpublic/build/from the checkout). - A domain name and a reverse proxy that terminates HTTPS (Caddy, nginx, a load balancer or a tunnel). The image has no TLS of its own.
The container
The runtime image iswebkul/aureuserp:latest: Ubuntu 24.04 with PHP 8.4, nginx, PHP-FPM and MySQL 8.0. Your checkout is mounted over the application folder, and the repository’s own Supervisor file replaces the image’s so the queue worker gets enough memory. docker-compose.prod.yml in the repository is the file ARUKZ uses; a minimal version for your own server:
DB_HOST left at 127.0.0.1, MySQL runs inside the container and its data stays in the named volume. Point DB_HOST at another server to use an external MySQL 8 instead.
Settings
Copy.env.example to .env and set at least these:
Config is cached in production, so a changed
.env does nothing until the caches are rebuilt.
Install on a new database
Run these inside the container aswww-data, the user PHP-FPM runs as. They are the steps of docker/k8s/release.sh, which ARUKZ’s Kubernetes setup runs on every deploy.
1
Install the ERP
erp:install migrates, seeds and creates the first admin. It runs migrate without --force, so run it with APP_ENV=local:2
Install the ARUKZ modules and roles
3
Add the plans and a platform operator
--revoke.4
Warm the caches and reload
https://<your domain>/saas/register to create the first company, or create one as the platform operator from SaaS Platform → Tenants → Onboard New Tenant.After an upgrade
Pull the new code, runcomposer install and npm ci && npm run build if their lock files changed, then repeat migrate --force, the module install loop, shield:generate, saas:refresh-admin-role, and the cache step. Operations explains why the caches and the PHP-FPM reload matter.
Known limits
- The sample factory needs Faker, a development package. A
composer install --no-devleaves it out, and loading the sample factory then fails. - Backups (
saas:backup, nightly at 01:30) are written tostorage/app/backupson the same server. Copy them somewhere else; see Operations. - Company subdomains need wildcard DNS and a wildcard certificate; company paths (
/<company>/admin) need neither.