> For the complete documentation index, see [llms.txt](https://docs.opendatadiscovery.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opendatadiscovery.org/configuration-and-deployment/trylocally.md).

# Try locally

This section includes instructions to run the ODD Platform locally using docker and docker-compose. This configuration is basic and best suited as a demo sandbox. For other deployment paths (Helm on Kubernetes, AWS EKS, build from source), see [Deployment Options](/configuration-and-deployment/deployment.md).

This environment consists of:

* ODD Platform – an application that ingests, structurizes, indexes and provides a collected metadata via REST API and UI
* ODD Platform Enricher – a tool to inject a metadata sample into the Platform
* PostgreSQL sample database
* `odd-collector` – the bundled lightweight pull collector (one implementation in the [Collector](/introduction/main-concepts.md#the-architecture-chain) family); gathers metadata from your data sources via pull adapters.

## Prerequisites

* Docker Engine 19.03.0+
* Preferably the latest docker-compose

## Step 1: Configuring and running ODD Platform with a metadata sample in it

### Assumptions

* Ports 5432 and 8080 are free. Commands to check that might be:
  * Linux/Mac: `lsof -i -P -n | grep LISTEN | grep <PORT_NUMBER>`
  * Windows Powershell: `Get-NetTCPConnection | where Localport -eq <PORT_NUMBER> | select Localport,OwningProcess` Replace `<PORT_NUMBER>` with 5432 and 8080. Empty output mean that the port is free and ready to go

### Execution

First, clone the GitHub repository <https://github.com/opendatadiscovery/odd-platform> and then just run from the **project root folder** `docker-compose -f docker/demo.yaml up -d odd-platform-enricher`.

### Result

1. Open <http://localhost:8080/management/datasources> in your browser.\
   You should be able to see 10 predefined data sources in the list.
2. Go to the **Catalog**.\
   You should be able to see metadata sample injected in the Platform.

![](/files/TMc42ZrBR3ISnz7nM41S)

## Step 2: Configuring and running Collector to gather metadata from the sample data source

### Create Collector entity

1. Go to the <http://localhost:8080/management/collectors> and select `Add collector`
2. Complete the following fields:
   * **Name**
   * **Namespace** (optional)
   * **Description** (optional)
3. Click **Save**. Your collector should appear in the list
4. Copy the token by clicking **Copy** right to the token value

### Configure and run the Collector

1. Paste the token obtained in the previous step into the `docker/config/collector_config.yaml` file under the `token` entry
2. If you'd like, you may change the name of the `postgresql` plugin under the `name` entry
3. Save the changed file and run **from the project root folder** `docker-compose -f docker/demo.yaml up -d odd-collector`

{% hint style="warning" %}
**This demo does not actually enforce the token.** The bundled stack ships with ingestion authentication turned off (`auth.ingestion.filter.enabled` defaults to `false`), so the local Platform accepts metadata at `/ingestion/entities` from any caller — the token you paste here is what a real Collector sends, but the demo Platform never checks it. That is fine on a local workstation. Before exposing a Platform on a network, turn ingestion authentication on so the token actually gates ingestion — see [Enable security → Ingestion authentication](/configuration-and-deployment/enable-security.md).
{% endhint %}

### Result

1. Open <http://localhost:8080/management/datasources> in your browser.\
   You should be able to see a new data source with the name you've passed into the collector\_config.yaml file (Default is `Sample demo data source`). Overall you should see 11 data sources in the list.
2. Go to the **Catalog**. Select the created data source in the **Datasources** filter.\
   You should be able to see 11 new entities of different types injected into the Platform.

![](/files/VhOTwYuEwA3MT5Bv6Mn3)

## Step 3 (Optional): Configuring and running Collector to gather metadata from your own data sources

### Assumptions

* You've done Step 1 and Step 2
* You already have locally accessible data sources and want to ingest metadata from these data sources into the Platform
* These data sources are supported by collectors:
  * [supported data sources by odd-collector](/integrations/integrations/odd-collector.md)
  * [supported data sources by odd-collector-aws](/integrations/integrations/odd-collector-aws.md)
  * [supported data sources by odd-collector-gcp](/integrations/integrations/odd-collector-gcp.md)
  * [supported data sources by odd-collector-azure](/integrations/integrations/odd-collector-azure.md)

### Configure the existing Collector

1. Add new entries under plugin list in the `docker/config/collector_config.yaml`\
   See the [`odd-collector` configuration reference](/integrations/integrations/odd-collector.md) for per-source-type configuration shapes (per-adapter spotlights with YAML examples + the full per-adapter configuration reference table).
2. Restart the Collector by running **from the project root folder** `docker-compose -f docker/demo.yaml restart odd-collector`

### Result

You should be able to see new data sources and data entities that correspond with them.

### Troubleshooting

**My entities from the sample data aren't shown in the Platform.**

Check the logs by running from the project root folder `docker-compose -f docker/demo.yaml logs -f`.
