--- title: OpenMetadata Server slug: /developers/contribute/build-code-and-run-tests/openmetadata-server --- # OpenMetadata Server Learn how to run the OpenMetadata server in development mode by using Docker and IntelliJ. ## Prerequisites - Make sure you have a local instance of MySQL and ElasticSearch. - For an easy install of MySQL and ES, just install Docker on your local machine and run the following commands from the top-level directory ```shell docker-compose -f docker/local-metadata/docker-compose-dev.yml up ``` - Bootstrap MySQL with tables 1. Create a distribution as explained [here](/developers/contribute/build-code-and-run-tests/openmetadata-server#create-a-distribution-packaging) 2. Extract the distribution tar.gz file and run the following command ```shell cd open-metadata-/bootstrap sh bootstrap_storage.sh drop-create-all ``` - Bootstrap ES with indexes and load sample data into MySQL 1. Run OpenMetadata service instances through IntelliJ IDEA following the instructions [here](/developers/contribute/build-code-and-run-tests/openmetadata-server#run-instance-through-intellij-idea) 2. Once the logs indicate that the instance is up, run the following commands from the top-level directory ```shell python3 -m venv venv source venv/bin/activate pip install -r ingestion/requirements.txt make install_dev generate cd ingestion pip install -e '.[sample-data, elasticsearch]' metadata ingest -c ./pipelines/sample_data.json metadata ingest -c ./pipelines/sample_usage.json metadata ingest -c ./pipelines/metadata_to_es.json ``` - You are now ready to explore the app by going to [http://localhost:8585](http://localhost:8585) *If the web page doesn't work as intended, please take a look at the troubleshooting steps [here](/developers/contribute/build-code-and-run-tests/openmetadata-server#troubleshooting) ## Building The following commands must be run from the top-level directory. ```shell mvn clean install ``` If you wish to skip the unit tests you can do this by adding `-DskipTests` to the command line. ## Create a distribution (packaging) You can create a distribution as follows. ```shell $ mvn clean install ``` The binaries will be created at: ```shell openmetadata-dist/target/open-metadata-.pom openmetadata-dist/target/open-metadata-.tar.gz ``` ## Run instance through IntelliJ IDEA Add a new Run/Debug configuration like the below screenshot. 1. Click on Intellij - Run menu 2. Click on "Edit Configurations" 3. Click + sign and Select Application and make sure your config looks similar to the below image Intellij Runtime Configuration ## Add missing dependency Right-click on openmetadata-service Open project Click on "Open Module Settings" Open Module Settings Go to "Dependencies" Go to dependencies Click “+” at the bottom of the dialog box and click "Add" Add dependency Click on Library Click on Library In that list look for "jersey-client:2.25.1" Add jersey-client dependency Select it and click "OK". Now run/debug the application. ## Troubleshooting - If you see blank page at [http://localhost:8585](http://localhost:8585), please check the logs at logs/openmetadata.log. You might be encountering one of the following errors: - `connection refused` or `unreachable` - please confirm that MySQL and ES are reachable outside of docker by running `docker ps` and checking that ports 3306 and 9200 are listening on 0.0.0.0 - If ElasticSearch in Docker on Mac is crashing, try changing Preferences -> Resources -> Memory to 4GB - If ElasticSearch logs show `high disk watermark [90%] exceeded`, try changing Preferences -> Resources -> Disk Image Size to at least 16GB - `Public Key Retrieval is not allowed` - verify that the JDBC connect URL in `conf/openmetadata.yaml` is configured with the parameter `allowPublicKeyRetrieval=true ` - Browser console shows javascript errors, try doing a [clean build](/developers/contribute/build-code-and-run-tests/openmetadata-server#create-a-distribution-packaging). Some npm packages may not have been built properly. ## Coding Style 1. Configure IntelliJ to disable the [wild-card imports] ([https://www.jetbrains.com/help/idea/creating-and-optimizing-imports.html#disable-wildcard-imports](https://www.jetbrains.com/help/idea/creating-and-optimizing-imports.html#disable-wildcard-imports))