# ChirpStack Docker example This repository contains a skeleton to setup the [ChirpStack](https://www.chirpstack.io) open-source LoRaWAN Network Server (v4) using [Docker Compose](https://docs.docker.com/compose/). **Note:** Please use this `docker-compose.yml` file as a starting point for testing but keep in mind that for production usage it might need modifications. ## Directory layout * `docker-compose.yml`: the docker-compose file containing the services * `configuration/chirpstack`: directory containing the ChirpStack configuration files * `configuration/chirpstack-gateway-bridge`: directory containing the ChirpStack Gateway Bridge configuration * `configuration/mosquitto`: directory containing the Mosquitto (MQTT broker) configuration * `configuration/postgresql/initdb/`: directory containing PostgreSQL initialization scripts ## Configuration This setup is pre-configured for all regions. You can either connect a ChirpStack Gateway Bridge instance (v3.14.0+) to the MQTT broker (port 1883) or connect a Semtech UDP Packet Forwarder. Please note that: * You must prefix the MQTT topic with the region. Please see the region configuration files in the `configuration/chirpstack` for a list of topic prefixes (e.g. eu868, us915_0, au915_0, as923_2, ...). * The protobuf marshaler is configured. This setup also comes with two instances of the ChirpStack Gateway Bridge. One is configured to handle the Semtech UDP Packet Forwarder data (port 1700), the other is configured to handle the Basics Station protocol (port 3001). Both instances are by default configured for EU868 (using the `eu868` MQTT topic prefix). ### Reconfigure regions ChirpStack has at least one configuration of each region enabled. You will find the list of `enabled_regions` in `configuration/chirpstack/chirpstack.toml`. Each entry in `enabled_regions` refers to the `id` that can be found in the `region_XXX.toml` file. This `region_XXX.toml` also contains a `topic_prefix` configuration which you need to configure the ChirpStack Gateway Bridge UDP instance (see below). #### ChirpStack Gateway Bridge (UDP) Within the `docker-compose.yml` file, you must replace the `eu868` prefix in the `INTEGRATION__..._TOPIC_TEMPLATE` configuration with the MQTT `topic_prefix` of the region you would like to use (e.g. `us915_0`, `au915_0`, `in865`, ...). #### ChirpStack Gateway Bridge (Basics Station) Within the `docker-compose.yml` file, you must update the configuration file that the ChirpStack Gateway Bridge instance must used. The default is `chirpstack-gateway-bridge-basicstation-eu868.toml`. For available configuration files, please see the `configuration/chirpstack-gateway-bridge` directory. # Data persistence PostgreSQL and Redis data is persisted in Docker volumes, see the `docker-compose.yml` `volumes` definition. ## Requirements Before using this `docker-compose.yml` file, make sure you have [Docker](https://www.docker.com/community-edition) installed. ## Importing device repository To import the [lorawan-devices](https://github.com/TheThingsNetwork/lorawan-devices) repository (optional step), run the following command: ```bash make import-lorawan-devices ``` This will clone the `lorawan-devices` repository and execute the import command of ChirpStack. Please note that for this step you need to have the `make` command installed. **Note:** an older snapshot of the `lorawan-devices` repository is cloned as the latest revision no longer contains a `LICENSE` file. ## Usage To start the ChirpStack simply run: ```bash $ docker-compose up ``` After all the components have been initialized and started, you should be able to open http://localhost:8080/ in your browser. ## The example includes the [ChirpStack REST API](https://github.com/chirpstack/chirpstack-rest-api). You should be able to access the UI by opening http://localhost:8090 in your browser. **Note:** It is recommended to use the [gRPC](https://www.chirpstack.io/docs/chirpstack/api/grpc.html) interface over the [REST](https://www.chirpstack.io/docs/chirpstack/api/rest.html) interface.