Helpdesk

Quickstart

Start a local instance with Docker Compose, create the first user and fill it with invented demo data.

This starts a development instance on your machine. For a server, continue with the deployment guide.

Start the stack

cp .env.example .env
# Edit .env: DATABASE_URL is the only required change for local development.
# The object storage (MinIO) runs inside Docker, no external account is needed.

docker compose up

Compose starts the API, the web app, the two workers (IMAP and mailer), a local MinIO and Nginx. PostgreSQL is not part of the stack: point DATABASE_URL at a database of your own.

Create the first user

SEED_ADMIN_EMAIL=you@example.com \
SEED_ADMIN_PASSWORD='choose-a-password' \
pnpm --filter=@casoon/helpdesk-api seed

Fill it with demo data (optional)

pnpm --filter @casoon/helpdesk-api seed:demo

The script fills a migrated, local database with invented data: users, two mailboxes, organizations, customers, about 45 tickets with replies, notes and history, an SLA with a business-hours calendar, triggers, macros and custom fields. All addresses use example.com, example.org or example.net; no mail is sent. It refuses to run unless DATABASE_URL points to localhost.

Develop

pnpm install
pnpm dev           # all apps in watch mode via Turborepo

Database migrations:

pnpm db:generate   # generate SQL from schema changes
pnpm db:migrate    # apply migrations
pnpm db:studio     # open Drizzle Studio