This checklist will guide you through setting up DAVE from scratch in the correct order.
Before you begin, make sure you have:
- Docker (version 20.10 or higher) installed
- Docker Compose (version 1.29 or higher) installed
- Python 3.8+ installed (for data ingestion scripts)
- Git installed
- At least 16GB RAM available for Docker
- NVIDIA GPU (optional, but recommended for text generation)
Verify your installation:
docker --version
docker compose version
python --version-
Clone the DAVE repository
git clone <repository-url> cd DAVE
-
Copy the environment sample file
cp .env.sample .env
-
(Optional) Edit
.envto customize passwords- For local development, the defaults work fine
- For production, generate secure passwords and secrets
- See Environment Variables Reference
-
Install Python requirements
pip install -r requirements.txt
Or use a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Start all services
docker compose up -d
-
Wait for services to start (1-2 minutes)
docker compose ps
-
Check that all services are running
- postgres: Up
- keycloak: Up
- mongo: Up
- es (Elasticsearch): Up
- documents: Up
- ui: Up
- text-generation: Up
- qavectorizer: Up
-
Check logs if any service fails
docker compose logs -f <service-name>
This is a critical step. Without this, you won't be able to log in.
- Open Keycloak Admin Console
- URL: http://127.0.0.1:8080
- Username:
admin - Password:
admin
- Click the dropdown in top-left (says "master")
- Click "Create Realm"
- Enter realm name:
DAVE(exact spelling, case-sensitive) - Enable: ON (toggle should be green)
- Click "Create"
-
Click "Clients" in left sidebar
-
Click "Create client" button
-
Fill in:
- Client type:
OpenID Connect - Client ID:
dave_client(exact spelling)
- Client type:
-
Click "Next"
-
Configure capabilities:
- Client authentication: ON
- Authorization: OFF
- Standard flow: ON (checked)
- Direct access grants: ON (checked)
-
Click "Next"
-
Configure login settings:
- Valid redirect URIs:
http://127.0.0.1:3000/dave/api/auth/callback/keycloak http://127.0.0.1:3000/* - Valid post logout redirect URIs:
http://127.0.0.1:3000/dave http://127.0.0.1:3000/* - Web origins:
http://127.0.0.1:3000 +
- Valid redirect URIs:
-
Click "Save"
- Click on "dave_client" in the clients list
- Click "Credentials" tab
- Copy the "Client secret" value
- Open
.envfile - Find the line:
KEYCLOAK_SECRET=your-keycloak-secret-change-me - Replace with:
KEYCLOAK_SECRET=<paste-your-secret-here> - Save the file
- Restart UI to pick up the new secret
docker compose restart ui
-
In Keycloak, click "Users" in left sidebar
-
Click "Add user" button
-
Fill in:
- Username:
testuser(or your preferred username) - Email:
testuser@example.com(optional) - Email verified: ON
- Enabled: ON
- Username:
-
Click "Create"
-
Click "Credentials" tab
-
Click "Set password" button
-
Fill in:
- Password:
your-password - Password confirmation:
your-password - Temporary: OFF (important!)
- Password:
-
Click "Save"
-
Confirm in the popup
See Keycloak Setup Guide for detailed instructions and troubleshooting.
-
Open DAVE in your browser
-
You should see a login page
-
Log in with the user you created:
- Username:
testuser(or what you chose) - Password:
your-password
- Username:
-
Verify you can access the DAVE interface
Note: Always use 127.0.0.1 instead of localhost to avoid DNS issues.
If you have documents to ingest:
- Place GateNLP format JSON documents in:
scripts/input_data/
-
Run the upload script from the project root:
python scripts/upload_mongo.py
-
Verify documents were uploaded (check output for count)
-
Run the indexing script from the project root:
python scripts/insert_elastic.py
-
Wait for indexing to complete (this may take a while)
- Refresh DAVE UI in browser
- You should see your documents listed
- Try searching for a document
- Search: Try searching for documents
- View: Open and view a document
- Chat: Try the conversational AI feature (if text generation is running)
- Filters: Test entity-based filtering
Cannot Access Keycloak (http://127.0.0.1:8080)
# Check if Keycloak is running
docker compose ps keycloak
# Check logs
docker compose logs -f keycloak
# Restart Keycloak
docker compose restart keycloak- Make sure you're using
127.0.0.1notlocalhost - Verify redirect URIs in Keycloak client match exactly
- Check
NEXTAUTH_URLin.envis correct
- Verify Keycloak user is enabled
- Verify email is verified (toggle ON)
- Verify password is not temporary
- Check
KEYCLOAK_SECRETin.envmatches Keycloak
# Check which service failed
docker compose ps
# View logs for specific service
docker compose logs -f <service-name>
# Common services to check:
docker compose logs -f mongo
docker compose logs -f es
docker compose logs -f keycloak
docker compose logs -f ui- Verify
MONGO_ROOT_PASSWORDin.envis correct - Make sure MongoDB is running:
docker compose ps mongo - Check the password in the connection string matches
- Increase Docker memory allocation (Settings → Resources → Memory)
- Minimum 8GB recommended
Once everything is running:
| Service | URL | Credentials |
|---|---|---|
| DAVE UI | http://127.0.0.1:3000/dave | Keycloak user (testuser) |
| Keycloak Admin | http://127.0.0.1:8080 | admin / admin |
| Elasticsearch | http://127.0.0.1:9200 | None (no auth) |
| MongoDB | mongodb://127.0.0.1:27018 | root / MONGO_ROOT_PASSWORD |
| Document Service | http://127.0.0.1:3001 | Internal only |
After successful setup:
- Read the main README for detailed features
- Review Environment Variables for customization
- Configure your data ingestion pipeline
- Set up production deployment (if needed)
- Customize UI theme/variant (if needed)
- Configure backup strategy for MongoDB and Elasticsearch
If you encounter issues:
- Check logs:
docker compose logs -f <service> - Review documentation:
- Common issues: See troubleshooting section above
- Contact: Reach out to the development team
If you don't want to use Keycloak for authentication:
- Edit
.envfile - Set:
USE_KEYCLOAK=false - Restart services:
docker compose restart ui documents - Access DAVE UI: http://127.0.0.1:3000/dave
- Log in with:
- Username:
admin(fromACCESS_USERNAME) - Password:
password(fromACCESS_PASSWORD)
- Username:
Last Updated: 2024