OpenCrowd — Quick Start Guide¶
Get OpenCrowd running in 5 minutes. This guide covers installation, first login, user management, and connecting your first application.
1. Install & Start¶
# Clone the repository
git clone https://github.com/opencrowd-io/opencrowd.git
cd opencrowd
# Copy the environment file
cp .env.example .env
# Start everything (PostgreSQL, Redis, Keycloak, Backend, Frontend)
cd infrastructure/docker
docker compose up -d
Wait about 60 seconds for all services to start. Check status:
All containers should show "healthy" or "running."
2. Access the Application¶
| Service | URL | Purpose |
|---|---|---|
| OpenCrowd | http://localhost:3000 | Main application |
| Keycloak Admin | http://localhost:8180 | User management |
| API Swagger | http://localhost:8080/swagger-ui/index.html | API documentation |
3. First Login¶
OpenCrowd uses Keycloak for authentication. The administrator credentials are what you configured in your .env file.
| Field | Value |
|---|---|
| Username | admin (or your configured KEYCLOAK_ADMIN) |
| Password | The value you set for KEYCLOAK_ADMIN_PASSWORD in .env |
- Open http://localhost:3000
- You'll be redirected to Keycloak login
- Log in with the credentials configured in your
.envfile - You're now in OpenCrowd as "Platform Admin"
Important: Never use default or weak passwords. Store your credentials in a password manager.
4. User Management (Keycloak)¶
All user accounts are managed in Keycloak — not inside OpenCrowd itself. OpenCrowd handles governance (who has access to what), while Keycloak handles identity (who can log in).
Change the admin password¶
- Go to http://localhost:8180
- Log in with the credentials from your
.envfile - Select realm: opencrowd
- Go to Users → click on the admin user
- Credentials tab → Set new password
Create a new user¶
- In Keycloak Admin → Users → Add User
- Fill in username, email, first/last name
- Credentials tab → set a password (turn off "Temporary")
- Role Mappings tab → assign roles:
manage_connectors— can manage applications, approve requests, see all datadefault-roles-opencrowd— basic access (view dashboard, submit requests)- The user can now log into OpenCrowd at http://localhost:3000
Roles explained¶
| Role | What it allows |
|---|---|
manage_connectors |
Full admin: manage apps, approve/reject requests, JML flows, settings |
| (default) | View dashboard, submit access requests, view own profile |
5. Connect Your First Application¶
Now that you're logged in, connect xWiki, OpenProject, or Nextcloud.
- Go to Applications (left sidebar)
- Click Add Connector
- Enter the Base URL, username, and password for your app
- Click Save → then Health Check
- Once connected, click Sync to import users and groups
See Connect applications for detailed instructions per application.
6. Explore¶
After your first sync, check:
- Dashboard — Governance overview, risk alerts, connected apps
- Identity — All users from all connected apps
- Groups — All groups across apps
- Access Matrix — Unified permission view (who has what, where)
- Requests — Access request form (also public at
/request) - Audit — Full activity log
7. Next Steps¶
| Task | Guide |
|---|---|
| Connect applications | Connect applications |
| Development setup | Repository development guide |
| Configure email notifications | Set SMTP vars in .env |
| Enable AI assistant (Kai) | Add OPENCROWD_MISTRAL_API_KEY to .env |
| Customize approval workflows | Settings → Approval Workflows in the UI |
Environment Variables (.env)¶
Key settings you may want to change:
# Keycloak admin (change before production!)
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=<your-strong-random-password>
# Edition: community | professional | enterprise
OPENCROWD_EDITION=community
# Email notifications (optional)
SPRING_MAIL_HOST=smtp.yourprovider.com
SPRING_MAIL_PORT=587
SPRING_MAIL_USERNAME=notifications@company.com
SPRING_MAIL_PASSWORD=your-smtp-password
OPENCROWD_NOTIFICATIONS_ENABLED=true
OPENCROWD_NOTIFICATIONS_ADMIN_EMAIL=admin@company.com
# AI assistant (optional, Professional+ only)
OPENCROWD_MISTRAL_API_KEY=your-mistral-api-key
Architecture¶
┌──────────────────────────────────────────────────────────────┐
│ Your Browser │
│ http://localhost:3000 │
└─────────────────────────────┬────────────────────────────────┘
│
┌─────────────────────────────▼────────────────────────────────┐
│ Frontend (React + TypeScript) :3000 │
│ Serves UI, proxies API calls to backend │
└─────────────────────────────┬────────────────────────────────┘
│
┌─────────────────────────────▼────────────────────────────────┐
│ Backend (Kotlin + Spring Boot) :8080 │
│ REST API, business logic, connectors, sync engine │
└──────┬──────────────┬──────────────┬─────────────────────────┘
│ │ │
┌──────▼──────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ PostgreSQL │ │ Valkey │ │ Keycloak │
│ (data) │ │ (cache) │ │ (auth) │
│ :5432 │ │ :6379 │ │ :8180 │
└─────────────┘ └───────────┘ └───────────┘
│
│ Backend connects outbound to:
│
┌──────▼──────────────────────────────────────────────────────┐
│ Your Applications │
│ ┌─────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ xWiki │ │ OpenProject │ │ Nextcloud │ │
│ └─────────┘ └──────────────┘ └───────────┘ │
└──────────────────────────────────────────────────────────────┘
Stopping & Restarting¶
# Stop all services (data preserved)
docker compose down
# Stop and delete all data (fresh start)
docker compose down -v
# Restart
docker compose up -d
Troubleshooting¶
| Problem | Solution |
|---|---|
| "Cannot connect" on login | Wait 60s for Keycloak to start. Check docker compose logs keycloak |
| Frontend blank page | Check docker compose logs frontend — rebuild if needed |
| Backend unhealthy | Check docker compose logs backend — usually DB connection |
| "401" everywhere | Your Keycloak token expired. Log out and back in. |
| Port already in use | Another service is using 3000/8080/8180. Stop it or change ports in docker-compose.yml |