2.4 KiB
Aura CRM Platform
A self-hosted CRM for repair shops / service centers — order tracking (Kanban), clients, cartridge refill batches, inventory, payroll, loyalty, cash register, client notifications (Telegram/MAX/VK/SMS), PDF documents (invoice/act/receipt), and more.
Two services, one platform:
core/— authentication, staff, roles, module registry. No CRM logic of its own; it exists so multiple business apps (production/is the first one) can share one login and one staff/roles system.production/— the CRM itself (Go+Fiber backend, React+Vite frontend). Has no login of its own — it verifies JWTscoreissues.
Install
Requires Docker and the docker compose v2 plugin.
git clone <this-repo-url> aura-crm
cd aura-crm
./install.sh
The script will:
- Ask for your admin account (name/email/password) and business name.
- Generate every secret involved (JWT signing key, database passwords,
MinIO keys, the module token
coreandproductionuse to authenticate to each other) — you never type or invent a secret by hand. - Start
core, wait for it to come up, and let it bootstrap your admin account automatically. - Register
productionas a module againstcore's API, capturing the token that lets the two services talk to each other. - Start
productionwith everything already wired in.
Re-running ./install.sh after a successful install is safe — it detects
existing .env files and skips straight to docker compose up for both
services (useful after a reboot, or to pick up a rebuild).
When it's done, the CRM is at http://localhost:18092, logged in as the
account you just created. See the script's own "Going public" note at the
end for what to change if you want a real domain in front of it.
What's optional
Everything in production/.env.example beyond the required
Postgres/MinIO/JWT/core-registration block is an optional integration —
AI-assisted intake (Gemini), Telegram/MAX/VK/SMS client notifications, IMEI
lookup, self-hosted Telegram Bot API, wholesale supplier scraping, and
deploy-agent's self-update button. Each one fails soft (disabled, not
crash) when its env vars are unset — turn on only what you need, whenever
you need it, from the app's own Settings page after install (most of these
are editable there without touching .env again).
License
MIT — see LICENSE in each service directory.