Deploy ChirpStack LoRaWAN Network Server (v4) on Rockwell Automation OptixEdge devices using Portainer.
- In Portainer, navigate to Stacks → Add stack
- Name your stack (e.g.,
chirpstack) - Choose one of:
- Repository:
https://github.com/asqi-carter/chirpstack-docker-Optix-Edge - Web editor: Paste the contents of
docker-compose.yml
- Repository:
- Add optional env vars seen in .env.example
- Click Deploy the stack
- Wait for
config-initto complete (shows "Exited" status) - chirpstack-service will have some mqtt log errors on first deployment. stop and start the Portainer stack after first deployment to resolve
- Access ChirpStack at
http://<optixedge-ip>:8080
Default credentials:
- Username:
admin - Password:
admin
This setup is optimized for OptixEdge devices, which restrict direct host filesystem access through Portainer.
Traditional ChirpStack Docker deployments mount configuration files directly from the host. Since OptixEdge doesn't allow this, we use a different approach:
The config-init service:
- Runs once during deployment
- Clones the official ChirpStack Docker repository
- Copies all configuration files to Docker volumes
- Auto-generates your API secret
- Exits (showing "Exited" status is normal)
This gives you:
- All upstream ChirpStack configurations automatically
- No manual file management
- Works within OptixEdge/Portainer constraints
- Stays synchronized with official releases
Configuration files persist in Docker volumes and are reused on subsequent starts.
All env vars are optional.
To customize, add environment variables in Portainer when deploying the stack:
| Variable | Default | Description |
|---|---|---|
CHIRPSTACK_API_SECRET |
auto-generated | Override the auto-generated API secret |
CHIRPSTACK_REGION |
eu868 |
LoRaWAN region for gateway bridge |
CHIRPSTACK_NETWORK_ID |
000000 |
LoRaWAN Network ID (3 bytes hex) |
CHIRPSTACK_HTTP_PORT |
8080 |
Web UI port |
GATEWAY_UDP_PORT |
1700 |
Semtech UDP gateway port |
GATEWAY_BASICSTATION_PORT |
3001 |
BasicStation gateway port |
| Region | Description |
|---|---|
eu868 |
Europe 863-870 MHz |
us915_0 - us915_7 |
United States (sub-bands) |
au915_0 - au915_7 |
Australia (sub-bands) |
as923, as923_2, as923_3, as923_4 |
Asia Pacific |
cn470_0 - cn470_11 |
China (sub-bands) |
in865 |
India |
kr920 |
South Korea |
ru864 |
Russia |
cn779 |
China 779 MHz |
eu433 |
Europe 433 MHz |
ism2400 |
ISM 2.4 GHz |
Configure your gateway with:
- Server address:
<optixedge-ip> - Server port:
1700
Example gateway configuration:
{
"gateway_conf": {
"server_address": "192.168.1.100",
"serv_port_up": 1700,
"serv_port_down": 1700
}
}If your gateway runs ChirpStack Gateway Bridge or MQTT Forwarder:
[integration.mqtt]
server="tcp://<optixedge-ip>:1883"Ensure the topic_prefix matches your CHIRPSTACK_REGION setting.
Import pre-configured device profiles from The Things Network's lorawan-devices repository:
- In Portainer, go to Containers
- Click
chirpstack-server - Click Console → select
/bin/shas command androotas user - Click Connect
- Run:
apk add --no-cache git && \
git clone https://github.com/brocaar/lorawan-devices /tmp/lorawan-devices && \
chirpstack -c /etc/chirpstack import-legacy-lorawan-devices-repository -d /tmp/lorawan-devices- Wait 5-10 minutes for import to complete
- Device profile templates will appear in the ChirpStack web UI
This will clone the lorawan-devices repository and execute the import command of ChirpStack.
Note: an older snapshot of the lorawan-devices repository is cloned as the latest revision no longer contains a LICENSE file.
Check the config-init container logs for errors. Ensure:
- OptixEdge has internet access to clone the git repository
- All previous stack containers are stopped
If you see MQTT connection errors in ChirpStack logs after first deployment:
- In Portainer, go to Stacks
- Click your stack name
- Click Stop → wait for all containers to stop
- Click Start
This timing issue typically resolves after one restart.
To completely reset and redeploy:
- In Portainer, delete the stack
- Go to Volumes → delete all volumes starting with your stack name
- Redeploy the stack
Warning: This deletes all data including devices, gateways, and your API secret.
This deployment includes:
| Service | Description | Port |
|---|---|---|
| chirpstack-postgres | PostgreSQL 14 database | Internal |
| chirpstack-redis | Redis 7 cache | Internal |
| chirpstack-mosquitto | MQTT broker | 1883 |
| chirpstack-server | ChirpStack network server | 8080 |
| chirpstack-gateway-bridge | Semtech UDP gateway bridge | 1700/udp |
| chirpstack-gateway-bridge-bs | BasicStation gateway bridge | 3001 |
| chirpstack-rest-api | REST API interface | 8090 |
| config-init | One-time initialization | - |
The config-init service clones configuration files from the official ChirpStack repository on first deployment and exits (normal behavior).
- ChirpStack Documentation
- ChirpStack Community Forum
- Original ChirpStack Docker Repository
- OptixEdge Documentation
ChirpStack is licensed under the MIT License. See the ChirpStack LICENSE for details.