version: "2" # --------------------------------------------------------------------------- # NETWORKS # --------------------------------------------------------------------------- networks: default: driver: bridge ipam: config: - subnet: 172.18.0.0/16 gateway: 172.18.0.1 # --------------------------------------------------------------------------- # SERVICES # --------------------------------------------------------------------------- services: # --------------------------------------------------------------------------- # Hack for Portainer # --------------------------------------------------------------------------- configuration-helper: image: bitnami/git:latest working_dir: /temp command: > bash -c " git clone https://github.com/RAKWireless/portainer-templates && cp -R ./portainer-templates/Stack/ChirpStack4/configuration/* /temp/configuration/ " volumes: - configuration-chirpstack:/temp/configuration/chirpstack - configuration-chirpstack-gateway-bridge:/temp/configuration/chirpstack-gateway-bridge - configuration-mosquitto:/temp/configuration/mosquitto - configuration-postgresql-initdb:/temp/configuration/postgresql/initdb # --------------------------------------------------------------------------- # Main application # --------------------------------------------------------------------------- chirpstack: container_name: chirpstack image: chirpstack/chirpstack:4 command: -c /etc/chirpstack restart: unless-stopped volumes: - configuration-chirpstack:/etc/chirpstack - chirpstack-certificates:/etc/chirpstack/certs depends_on: - postgres - mosquitto - redis environment: - MQTT_BROKER_HOST=mosquitto - REDIS_HOST=redis - POSTGRESQL_HOST=postgres - API_SECRET=${API_SECRET:-you_must_change_this} # use the output of `openssl rand -base64 32` - ENABLED_REGION=${BAND:-eu868} - NET_ID=${NET_ID:-000000} networks: default: ipv4_address: 172.18.0.6 ports: - 8080:8080 chirpstack-rest-api: container_name: chirpstack-api image: chirpstack/chirpstack-rest-api:4 restart: unless-stopped command: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecure networks: default: ipv4_address: 172.18.0.9 ports: - 8090:8090 depends_on: - chirpstack postgres: container_name: chirpstack-postgres image: postgres:14-alpine restart: unless-stopped volumes: - configuration-postgresql-initdb:/docker-entrypoint-initdb.d - chirpstack-postgresql:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=root networks: default: ipv4_address: 172.18.0.2 depends_on: configuration-helper: condition: service_completed_successfully redis: container_name: chirpstack-redis image: redis:7-alpine restart: unless-stopped volumes: - chirpstack-redis:/data networks: default: ipv4_address: 172.18.0.4 mosquitto: container_name: chirpstack-mosquitto image: eclipse-mosquitto:2 restart: unless-stopped networks: default: ipv4_address: 172.18.0.3 ports: - 1883:1883 - 8883:8883 volumes: - configuration-mosquitto:/mosquitto/config - chirpstack-certificates:/mosquitto/config/certs depends_on: configuration-helper: condition: service_completed_successfully # --------------------------------------------------------------------------- # Certificate generator # --------------------------------------------------------------------------- chirpstack-certificates: container_name: chirpstack-certificates build: context: ./chirpstack-certificates dockerfile: Dockerfile-devel volumes: - chirpstack-certificates:/chirpstack-certificates/certs environment: - CHIRPSTACK_GATEWAY_BRIDGE_HOSTS=${CHIRPSTACK_GATEWAY_BRIDGE_HOSTS:-127.0.0.1,localhost} - MQTT_BROKER_HOSTS=${MQTT_BROKER_HOSTS:-127.0.0.1,localhost} command: make # --------------------------------------------------------------------------- # Bridges # --------------------------------------------------------------------------- chirpstack-gateway-bridge-udp: container_name: chirpstack-bridge-udp-${BAND:-eu868} image: chirpstack/chirpstack-gateway-bridge:4 restart: unless-stopped networks: default: ipv4_address: 172.18.0.8 ports: - 1700:1700/udp volumes: - configuration-chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge - chirpstack-certificates:/etc/chirpstack-gateway-bridge/certs depends_on: - mosquitto environment: - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=${BAND:-eu868}/gateway/{{ .GatewayID }}/event/{{ .EventType }} - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=${BAND:-eu868}/gateway/{{ .GatewayID }}/state/{{ .StateType }} - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=${BAND:-eu868}/gateway/{{ .GatewayID }}/command/# # --------------------------------------------------------------------------- # PERSISTENT VOLUMES # --------------------------------------------------------------------------- volumes: chirpstack-postgresql: chirpstack-redis: chirpstack-certificates: configuration-chirpstack: configuration-chirpstack-gateway-bridge: configuration-mosquitto: configuration-postgresql-initdb: