On-Premises Setup
One command installs everything β Docker, PostgreSQL, 25+ microservices, and up to 6 branded web apps behind an auto-TLS reverse proxy. Runs on Linux, macOS, and Windows.
System Requirements
Server
Linux (Ubuntu, Debian, CentOS, Fedora, etc.), macOS, or Windows Server
RAM
Minimum 4 GB (8 GB+ recommended)
Disk
20 GB free space (SSD recommended)
Network
Outbound internet access for pulling Docker images
Database
PostgreSQL 14+ (bundled option available, or bring your own)
Docker
Auto-installed by the installer if not already present
Install in One Command
Run a single command on your server. The installer handles Docker, PostgreSQL, keys, secrets, and all 25+ services automatically.
curl -fsSL https://koroworks.com/deploy/get-koroerp.sh | KORO_DOWNLOAD_URL=https://koroworks.com/deploy bashThe command downloads the installer from this website and runs it interactively.
Install scripts
Prefer downloading scripts first? Use the files below.
How Installation Works
The installer is an orchestrator. It lets you deploy the core ERP, web apps, and AI together or as separate stages.
1. Bootstrap
get-koroerp.sh or get-koroerp.ps1 downloads the versioned deployment files into a koro-erp folder and launches the root installer.
2. ERP APIs
install.sh or install.ps1 creates the environment file, keys, database connection, Caddy TLS settings, and starts the core API services. APIs are the foundation for every web app.
3. Web apps
The optional apps stage starts the selected web applications with the shared API configuration. Apps can only be installed after the APIs are available.
4. AI service
The AI stage can run on the ERP server or on a separate VM. On the same server it reuses the API database settings; on a separate VM it asks for its own database and ERP gateway URL.
Choose a deployment style
All-in-one: answer yes to APIs, web apps, and AI. The root installer runs each stage in order.
Core only: install APIs and skip web apps and AI. Add either component later from the same deployment folder.
Split AI: install APIs and apps on the main server, then run the AI installer separately with the public ERP gateway URL.
Install as native binaries instead
Every Koro service also ships as a static executable β no Docker, no daemon, ~20β50 MB each. Ideal for low-resource VPS, Windows Server without Docker Desktop, air-gapped environments, and edge deployments.
What Gets Deployed
ποΈ Infrastructure
- β Caddy reverse proxy (auto-TLS via Let's Encrypt)
- β API Gateway (in-cluster rate limiting)
- β PostgreSQL database (optional bundled)
- β Redis cache (for lookups service)
- β 6 branded Flutter web apps (nginx per app)
- β RSA key management (JWT + licence)
π¦ Services (25+ modules)
Manual Installation
Prefer full control? Download the files and run the setup step by step.
Download individual files
Then run manually
# 1. Copy and edit environment variables
cp env.example .env
nano .env
# 2. Point DNS at your server
# *.acmecorp.com A <server-ip>
# 3. Generate RSA keys
mkdir -p keys
openssl genpkey -algorithm RSA -out keys/private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in keys/private.pem -out keys/public.pem
# 4. Start ERP core stack
docker compose -f apis/docker-compose.yml --profile db up -d
# 5. Optional companion apps
docker compose \
-f apis/docker-compose.yml \
-f apps/docker-compose.yml \
--profile db --profile pos --profile shop up -dInstall stages separately
# Core APIs first
bash apis/install.sh
# Optional web apps, after APIs are running
docker compose --env-file apis/.env \
-f apis/docker-compose.yml -f apps/docker-compose.yml \
--profile all up -d
# Optional AI on this server or a separate VM
bash ai/install.sh
# Manage an existing deployment
bash manage.sh update
bash manage.sh status
bash manage.sh restart apisVerify Installation
Run these checks after deployment to confirm services are healthy and routing works.
Service health checks
# Gateway health endpoint
curl -i http://localhost:7012/health
# Platform API health endpoint
curl -i http://localhost:7080/health
# Running containers
docker compose -f docker-compose.yml psSmoke test URLs
# Core web app
https://erp.<your-domain>
# API gateway
https://api.<your-domain>
# Optional apps (if profiles enabled)
https://pos.<your-domain>
https://shop.<your-domain>
https://school.<your-domain>