Using ChirpStack Application Server without ChirpStack Network Server

Hi there.

Totally new to Lora. We just got ourselves a Ursalink UG85 gateway. It can work in two modes: either packet forwarder (send all data to an external network server), or network server (internal network server sending data to an external application using HTTPS or MQTT).

I’m trying to implement the internal network server mode and I thought I’d use ChirpStack Application Server as application server to transfer data to our InfluxDB instance. I’m trying to figure out how to make the connection between the gateway (and its internal network server) and the application server.

In the Ursalink UG85 web interface, I’m trying to add an application. I pick HTTPS. I’m asked for 4 URLs:

  • Uplink data
  • Join notification
  • ACK notification
  • Error notification

I don’t know what I should put in there. I figured it would be something like https://my-chirpstack-server/uplink-route and so on but I didn’t see that in the docs or the Chirpstack Application Server web interface.

In the ChirpStack Application Server web interface, I can add a network server. I’m asked for a host:port but I don’t know what to put there. I thought the communication was one way, and since the network server on the gateway is not meant to be exposed as host:port on the Internet, I don’t expect the application server to reach the network server. I’m stuck there.

Looks like ChirpStack Application Server is only made to work with ChirpStack Network Server. Is it the case?

Ursalink has a tutorial about connecting with ChirpStack. In fact, they even have ChirpStack in their drop-down menu in the web interface. But the tutorial is for the packet forwarder mode, using both Chirpstack Network Server and Application Server.

Maybe I should be using the packet forwarder mode. Again, beginner. I figured considering the application (remote building with a single gateway) it made sense to filter packets at gateway level. And since the gateway includes a network server, I was only looking for an application server. But there may be many practical reasons to prefer the packet forwarding mode and use the ChirpStack Network Server, so I’d be happy to get feedback about that choice.

If I go the packet forwarder way, then I can follow the tutorial above. IIUC, I’ll need to expose the MQTT broker over the Internet so that the gateway can forward it the packets, as there is no HTTPS way from the gateway to the network server like there is between the network server and the application server. The example in the tutorial uses local addresses, but it should be feasible to expose mosquitto (I’m using NGINX to proxy the application server already, I can extend that to the network server and the MQTT broker) and use authentication (the config menu in the Ursalink offers to enter credentials for the MQTT broker).

That’s a bit of a long post and an open question. I found it useful to state the whole context because being new to Lora, I may be going in the wrong direction.

Thanks for any hint.

Go the packet-forwarder way. It’s the easiest route I think. mqtts is just mqtt with tls. Your nginx instance could do the termination and on the back you just have regular mqtt.

1 Like

Thank you for your help.

I installed ChirpStack Network Server and exposed MQTT to the world over TLS.

I seem to have the whole chain setup close to correctly. I just see join requests with no reply, and errors about invalid mic. That’s another question, I guess.

OK, I got it working in packet-forwarder mode.

The question in OP might be of interest, though.