---
# System prepended metadata

title: Nexus Georgia - A CIAM Platform based on Keycloak

---

# Nexus Georgia - A CIAM Platform based on Keycloak

## :question: Purpose
:::success
Describe the purpose of the process.
:::
This tutorial is for uploading the file into GitHub.


## :feet: How to Run :: Step by Step:
:::success
List all the steps of your process
:::
[TBD].

:::info
:bulb: [TBD] - {Some relevant info do mention before setting the things up}.
:::

### Requirements

* [Optional] Java IDE, such as: 
  - IntelliJ-Idea Community or Ultimate;
  - Eclipse
* Git client (https://git-scm.com/book/en/v2/Getting-Started-Installing-Git);
* Java 17 (JDK) [Tip: Use `SDK Man` (https://sdkman.io)];
* Apache Maven 3.8.5+
* Docker - Version: 23.0.1
* Docker Compose - Version: 2.15.1

### Cloning the Repository

1. Open a Terminal session and:
	1. git clone https://gitlab.com/nexusge/infrastructure/keycloack
	2. cd keycloack
	3. git status
	7. Set your personal seetings on Git:
        - Settings
        - Developer settings
        - Personal access tokens

### Setting the Persistent Volumes folder

* Find the `nexusgeo-ciam-docker-envs-runtimes.zip` file under the `keycloack/`
* Decomp

### Setting the Hosts names in your machine

* Open the `/etc/hosts` file in your machine;
* Add the following entries:

````
# Nexusgeo-CIAM-Plafform :: Local DNS changes for Developer's machine
127.0.0.1 nginx-mgr.nexus-devlocal.ge portainer.nexus-devlocal.ge pgadmin4.nexus-devlocal.ge webmail.nexus-devlocal.ge rabbitmq.nexus-devlocal.ge kafkaui.nexus-devlocal.ge grafana.nexus-devlocal.ge prometheus.nexus-devlocal.ge graylog.nexus-devlocal.ge jaeger.nexus-devlocal.ge sso.nexus-devlocal.ge sso-legacy-01.nexus-devlocal.ge sso-legacy-02.nexus-devlocal.ge sso-next-01.nexus-devlocal.ge sso-next-02.nexus-devlocal.ge clientapp-01.nexus-devlocal.ge clientapp-02.nexus-devlocal.ge clientapp-03.nexus-devlocal.ge clientapp-04.nexus-devlocal.ge clientapp-05.nexus-devlocal.ge clientapp-06.nexus-devlocal.ge clientapp-07.nexus-devlocal.ge clientapp-08.nexus-devlocal.ge clientapp-09.nexus-devlocal.ge clientapp-10.nexus-devlocal.ge fakemobile-backend-app-01.nexus-devlocal.ge fakefullstack01-springreact.nexus-devlocal.ge fakefrnd01-onlyreactjs.nexus-devlocal.ge
````

### Building the Project

* Go to the Project's root;
* Issue: `clear && mvn clean install -DskipTests`;


### Create the external docker network:

````bash
docker network create -d bridge nexusgeo-network-dev1-01-external
````

### Docker-Compose Services

* Open a bash terminal;
* Go to directory `nexusgeo-ciam-solution/infra-config/1-dev-local`;
* Issue the following `docker-compose` commands to build/start/stop/destroy docker containers:

- To Build:
````bash
clear && docker-compose -p "nexusgeo-dev-local-01" -f docker-compose-base.yaml -f docker-compose-kck-v[NN].yaml [-f docker-compose-msgbrk-rabbitmq.yaml] [-f docker-compose-msgbrk-kafka.yaml] [-f docker-compose-observability.yaml] up -d --build
````

- To Start/Stop:
````bash
clear && docker-compose -p "nexusgeo-dev-local-01" -f docker-compose-base.yaml -f docker-compose-kck-v[NN].yaml [-f docker-compose-msgbrk-rabbitmq.yaml] [-f docker-compose-msgbrk-kafka.yaml] [-f docker-compose-observability.yaml] [start/stop]
````

- To Destroy:
````bash
clear && docker-compose -p "nexusgeo-dev-local-01" -f docker-compose-base.yaml -f docker-compose-kck-v[NN].yaml [-f docker-compose-msgbrk-rabbitmq.yaml] [-f docker-compose-msgbrk-kafka.yaml] [-f docker-compose-observability.yaml] down -v
````


### Generating the Self-Signed Certificate

Read and follow the instructions described in this file: ./00-commons-config/certs/README.md


## Browse the Services

|  **Service:**  |           **Local URL:**          | **Credentials:** |
|:----------:|:----------------------------------:|:--------:|
| Nginx Proxy Manager | http://nginx-mgr.nexus-devlocal.ge | Username: ??? / Password: ??? |
| PG4Admin | http://pgadmin4.nexus-devlocal.ge | Username: ??? / Password: ??? |
| Fake Mail Server | http://webmail.nexus-devlocal.ge/ | Username: ??? / Password: ??? |
| Portainer | http://portainer.nexus-devlocal.ge/ | Username: ??? / Password: ??? |
| Keycloak | https://sso.nexus-devlocal.ge/auth | Username: ciam-admin / Password: Pa55w0rd |
| RabbitMQ UI | https://rabbitmq.nexus-devlocal.ge | Username: admin / Password: admin |
| Kafka UI | https://kafkaui.nexus-devlocal.ge |  |
| Graylog  | https://graylog.nexus-devlocal.ge | Username: admin / Password: admin |
| Grafana | https://grafana.nexus-devlocal.ge | Username: admin / Password: 1a88a1 |
| Jaeger | https://jaeger.nexus-devlocal.ge |  |



       
- {To be written}


## Getting each container's IP Address

````bash
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
````

## Building and Running this App

[TBD].


## Recommended / Needed Improvements:

[TBD]. 
