2019-01-18 14:58:43 +01:00
# Docker configuration for ThingsBoard Microservices
2018-10-24 19:56:25 +03:00
This folder containing scripts and Docker Compose configurations to run ThingsBoard in Microservices mode.
2018-10-25 12:34:02 +03:00
## Prerequisites
ThingsBoard Microservices are running in dockerized environment.
Before starting please make sure [Docker CE ](https://docs.docker.com/install/ ) and [Docker Compose ](https://docs.docker.com/compose/install/ ) are installed in your system.
2018-10-24 19:56:25 +03:00
## Installation
2019-01-18 14:58:43 +01:00
Before performing initial installation you can configure the type of database to be used with ThingsBoard.
2018-10-25 12:34:02 +03:00
In order to set database type change the value of `DATABASE` variable in `.env` file to one of the following:
- `postgres` - use PostgreSQL database;
2020-04-23 15:55:03 +03:00
- `hybrid` - use PostgreSQL for entities database and Cassandra for timeseries database;
2019-01-18 14:58:43 +01:00
2020-04-23 15:55:03 +03:00
**NOTE**: According to the database type corresponding docker service will be deployed (see `docker-compose.postgres.yml` , `docker-compose.hybrid.yml` for details).
2018-10-25 12:34:02 +03:00
2022-06-22 23:24:05 +03:00
In order to set cache type change the value of `CACHE` variable in `.env` file to one of the following:
- `redis` - use Redis standalone cache (1 node - 1 master);
- `redis-cluster` - use Redis cluster cache (6 nodes - 3 masters, 3 slaves);
2023-06-01 14:47:47 +03:00
- `redis-sentinel` - use Redis cluster in a sentinel mode (3 nodes - 1 master, 1 slave, 1 sentinel)
2022-06-22 23:24:05 +03:00
2023-06-01 14:47:47 +03:00
**NOTE**: According to the cache type corresponding docker service will be deployed (see `docker-compose.redis.yml` , `docker-compose.redis-cluster.yml` , `docker-compose.redis-sentinel.yml` for details).
2022-06-22 23:24:05 +03:00
2020-03-10 16:52:50 +02:00
Execute the following command to create log folders for the services and chown of these folders to the docker container users.
To be able to change user, **chown** command is used, which requires sudo permissions (script will request password for a sudo access):
`
$ ./docker-create-log-folders.sh
`
2018-10-25 12:34:02 +03:00
Execute the following command to run installation:
2018-10-24 19:56:25 +03:00
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
$ ./docker-install-tb.sh --loadDemo
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
2018-10-25 12:34:02 +03:00
Where:
- `--loadDemo` - optional argument. Whether to load additional demo data.
2018-10-24 19:56:25 +03:00
## Running
2018-10-25 12:34:02 +03:00
Execute the following command to start services:
2018-10-24 19:56:25 +03:00
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
$ ./docker-start-services.sh
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
2018-10-25 15:11:03 +03:00
After a while when all services will be successfully started you can open `http://{your-host-ip}` in you browser (for ex. `http://localhost` ).
2018-10-25 12:34:02 +03:00
You should see ThingsBoard login page.
Use the following default credentials:
2019-01-18 14:58:43 +01:00
- **System Administrator**: sysadmin@thingsboard .org / sysadmin
2018-10-25 12:34:02 +03:00
If you installed DataBase with demo data (using `--loadDemo` flag) you can also use the following credentials:
- **Tenant Administrator**: tenant@thingsboard .org / tenant
- **Customer User**: customer@thingsboard .org / customer
2019-01-18 14:58:43 +01:00
In case of any issues you can examine service logs for errors.
2018-10-25 12:34:02 +03:00
For example to see ThingsBoard node logs execute the following command:
2019-01-18 14:58:43 +01:00
`
2020-11-11 18:02:10 +02:00
$ docker-compose logs -f tb-core1 tb-core2 tb-rule-engine1 tb-rule-engine2 tb-mqtt-transport1 tb-mqtt-transport2
2019-01-18 14:58:43 +01:00
`
2018-10-25 12:34:02 +03:00
Or use `docker-compose ps` to see the state of all the containers.
Use `docker-compose logs --f` to inspect the logs of all running services.
2019-01-18 14:58:43 +01:00
See [docker-compose logs ](https://docs.docker.com/compose/reference/logs/ ) command reference for details.
2018-10-25 12:34:02 +03:00
2018-10-24 19:56:25 +03:00
Execute the following command to stop services:
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
$ ./docker-stop-services.sh
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
Execute the following command to stop and completely remove deployed docker containers:
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
$ ./docker-remove-services.sh
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
2018-10-25 12:34:02 +03:00
Execute the following command to update particular or all services (pull newer docker image and rebuild container):
2018-10-24 19:56:25 +03:00
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
$ ./docker-update-service.sh [SERVICE...]
2019-01-18 14:58:43 +01:00
`
2018-10-24 19:56:25 +03:00
2018-10-25 12:34:02 +03:00
Where:
2019-01-18 14:58:43 +01:00
- `[SERVICE...]` - list of services to update (defined in docker-compose configurations). If not specified all services will be updated.
2018-10-25 12:34:02 +03:00
2019-01-18 14:58:43 +01:00
## Upgrading
2018-10-24 19:56:25 +03:00
In case when database upgrade is needed, execute the following commands:
2018-10-24 20:04:45 +03:00
```
2018-10-24 19:56:25 +03:00
$ ./docker-stop-services.sh
$ ./docker-upgrade-tb.sh --fromVersion=[FROM_VERSION]
$ ./docker-start-services.sh
2018-10-24 20:04:45 +03:00
```
2018-10-24 19:56:25 +03:00
2018-10-25 12:34:02 +03:00
Where:
- `FROM_VERSION` - from which version upgrade should be started. See [Upgrade Instructions ](https://thingsboard.io/docs/user-guide/install/upgrade-instructions ) for valid `fromVersion` values.
2021-04-28 15:13:26 +03:00
## Monitoring
If you want to enable monitoring with Prometheus and Grafana you need to set < b > MONITORING_ENABLED< / b > environment variable to < b > true< / b > .
After this Prometheus and Grafana containers will be deployed. You can reach Prometheus at `http://localhost:9090` and Grafana at `http://localhost:3000` (default login is `admin` and password `foobar` ).
To change Grafana password you need to update `GF_SECURITY_ADMIN_PASSWORD` environment variable at `./monitoring/grafana/config.monitoring` file.
Dashboards are loaded from `./monitoring/grafana/provisioning/dashboards` directory.
If you want to add new monitoring jobs for Prometheus update `./monitoring/prometheus/prometheus.yml` file.