# Eclipse Ditto™
[](https://gitter.im/eclipse/ditto?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://github.com/eclipse-ditto/ditto/actions?query=workflow%3Abuild)
[](https://search.maven.org/search?q=g:org.eclipse.ditto)
[](https://hub.docker.com/search?q=eclipse%2Fditto&type=image)
[](https://opensource.org/licenses/EPL-2.0)
[](https://www.openhub.net/p/eclipse-ditto)
[Eclipse Ditto](https://www.eclipse.dev/ditto/)™ is a technology in the IoT implementing a software pattern called “digital twins”.
A digital twin is a virtual, cloud based, representation of his real world counterpart (real world “Things”, e.g. devices like sensors, smart heating, connected cars, smart grids, EV charging stations, …).
An ever growing list of [adopters](https://iot.eclipse.org/adopters/?#iot.ditto) makes use of Ditto as part of their IoT platforms - if you're as well using it, it would be super nice to show your [adoption here](https://iot.eclipse.org/adopters/how-to-be-listed-as-an-adopter/).
## Documentation
Find the documentation on the project site: [https://www.eclipse.dev/ditto/](https://www.eclipse.dev/ditto/)
## Eclipse Ditto™ explorer UI
Find a live version of the latest explorer UI: [https://eclipse-ditto.github.io/ditto/](https://eclipse-ditto.github.io/ditto/?primaryEnvironmentName=ditto_sandbox)
You should be able to work with your locally running default using the `local_ditto` environment - and you can add additional environments to also work with e.g. with a deployed installation of Ditto.
## Star History
## Getting started
In order to start up Ditto via *Docker Compose*, you'll need:
* a running Docker daemon
* Docker Compose installed
* for a "single instance" setup on a local machine:
* at least 2 CPU cores which can be used by Docker
* at least 4 GB of RAM which can be used by Docker
You also have other possibilities to run Ditto, please have a look [here](https://github.com/eclipse-ditto/ditto/tree/master/deployment) to explore them.
### Start Ditto
In order to start the latest built Docker images from Docker Hub, simply execute:
```bash
cd deployment/docker/
docker-compose up -d
```
Check the logs after starting up:
```bash
docker-compose logs -f
```
Open following URL to get started: [http://localhost:8080](http://localhost:8080)
Or have a look at the ["Hello World"](https://www.eclipse.dev/ditto/intro-hello-world.html)
Additional [deployment options](deployment/) are also available, if Docker Compose is not what you want to use.
## Development Guide
If you plan to develop extensions in Ditto or to contribute some code, the following steps are of interest for you.
> :warning: **If you just want to start/use Ditto**, please ingore the following sections!
### Build and start Ditto locally
In order to build Ditto, you'll need:
* JDK >= 17
* Apache Maven >= 3.8.x installed.
* a running Docker daemon
In order to first build Ditto and then start the built Docker images.
#### 1. Build Ditto with Maven
```bash
mvn clean install
```
Skip tests:
```bash
mvn clean install -DskipTests
```
#### 2. Build local Ditto Docker snapshot images
```bash
./build-images.sh
```
If your infrastructure requires a proxy, its host and port can be set using the `-p` option like for example:
```bash
./build-images.sh -p 172.17.0.1:3128
```
Please note that the given host and port automatically applies for HTTP and HTTPS.
#### 3. Start Ditto with local snapshot images
```bash
cd ../deployment/docker/
# the "dev.env" file contains the SNAPSHOT number of Ditto, copy it to ".env" so that docker compose uses it:
cp dev.env .env
docker-compose up -d
```
Check the logs after starting up:
```bash
docker-compose logs -f
```
You have now running:
* a MongoDB as backing datastore of Ditto (not part of Ditto but started via Docker)
* Ditto microservices:
* Policies
* Things
* Things-Search
* Gateway
* Connectivity
* an nginx acting as a reverse proxy performing a simple "basic authentication" listening on port `8080`
* including some static HTTP + API documentation on [http://localhost:8080](http://localhost:8080)