OPEN SOURCE / SELF-HOSTED

Deployment and local setup

Run DuDu with local MySQL, the Java server and three frontend apps, then review the configuration boundaries for self-hosting.

Prerequisites

Install Git, Java 21, Maven 3.9, Docker Compose, Node.js 22.12 or later, and Corepack / Yarn 4. Start from the repository root and use separate terminals for the frontend apps. Compose provides development MySQL only, not a complete production stack.

Start MySQL and the server

git clone https://github.com/Buktal/dudu.git
cd dudu
corepack enable
docker compose -f dudu-server/compose.yaml up -d --wait
cd dudu-server
mvn spring-boot:run

The server listens on port 8080 by default. Flyway manages schema migrations. Existing database files are retained; do not remove existing data to repeat initialization.

Start the administration apps and workspace

# Terminal 1, from the repository root
cd dudu-admin
yarn install
yarn dev --port 5173 --strictPort

# Terminal 2, from the repository root
cd dudu-console
yarn install
yarn dev --port 5174 --strictPort

# Terminal 3, from the repository root
cd dudu-desk
yarn install
yarn dev

Local entry points are Admin :5173, Console :5174 and Desk :1423. Development proxies forward API calls to the server; Desk also proxies WebSocket traffic. Continue with the support workflow guide to create an organization, employees, groups and a channel account.

Production boundaries

Deploy the server jar with a .env file in its working directory, using the same keys as application.yaml. Explicitly override the database URL, credentials and dudu.auth.jwt-secret with at least 32 random bytes. Missing entries fall back to development defaults. An empty database initially creates admin/admin for local setup; change this password before exposing the service.

The Console production gateway must proxy /api. Configure VITE_API_ORIGIN for Desk and Admin builds as described in their READMEs. The deployment layer must handle the actual cross-origin policy and preserve WebSocket upgrades for Desk. Set the public callback origin with dudu.channel.callback-base-url: scheme, host and optional port only, without a path or trailing slash.

Use a private database network and verify backup restoration. Meituan requires an actual public HTTP endpoint on port 80 or 8080; HTTPS-only deployments do not enable it. Consult the Server deployment reference ↗, Desk README ↗ and Admin README ↗ for current configuration details.