# Rocket.Chat Micro-Services ## PM2 This usually suits better for development purposes. Start NATS first, you can it via Docker: ``` docker run --rm -d -p 4222:4222 nats ``` Then run Rocket.Chat as usual with an additional `TRANSPORTER` and `DISABLE_DB_WATCH` env vars: ``` TRANSPORTER=nats://localhost:4222 MOLECULER_LOG_LEVEL=debug DISABLE_DB_WATCH=true meteor ``` Set up an Enterprise license going to Admin > Enterprise. Then you can spin up micro services. From this folder, first install dependencies: ``` meteor npm i ``` You can run on `dev` to have hot reloading: ``` MONGO_URL=mongodb://localhost:3001/meteor \ MOLECULER_LOG_LEVEL=debug \ TRANSPORTER=nats://localhost:4222 \ meteor npm run dev ``` To see process logs, do: ``` meteor npm run pm2 -- logs ``` ## Docker Compose The `.env` file defines the HTTP address to be used, default to `localhost`. It requires meteor to be running, and the config at `services/.config/services/service.env` uses the default meteor mongodb. To run it: ``` TRANSPORTER=nats://localhost:4222 MOLECULER_LOG_LEVEL=debug meteor ``` The `docker-compose.yml` file contais a setup of the micro-services plus some extra tools: ### Traefik It's used to route the the domain on port 80 to the **DDP Streamer Service** and expose these addresses * `traefik.localhost` as Traefik admin * `prometheus.localhost` as Prometheus admin * `grafana.localhost` as Grafana dashboards ### Prometheus Used to collect metrics from the micro-services ### Grafana Used to expose metrics from prometheus as dashboards ### Nats Used for the communication of the microservices ## Build containers `npm run build-containers` will build the typescript files and generate the containers ## Running with docker-compose `docker-compose up --remove-orphans` will run all the micro-services, still need to run MongoDB and Rocket.Chat Core separated ### Running rocket.chat core `MONGO_URL=mongodb://localhost:27017/rocketchat MONGO_OPLOG_URL=mongodb://localhost:27017/local TRANSPORTER=nats://localhost:4222 MOLECULER_LOG_LEVEL=debug meteor`