The Things Network Stack for LoRaWAN is an open-source LoRaWAN network stack suitable for large, global and geo-distributed public and private networks as well as smaller networks. The architecture follows the LoRaWAN Network Reference Model for standards compliancy and interoperability.
LoRaWAN is a protocol for low-power wide area networks. It allows for large scale Internet of Things deployments where low-powered devices efficiently communicate with Internet-connected applications over long range wireless connections.
- LoRaWAN Network Server
- Supports LoRaWAN 1.1
- Supports LoRaWAN 1.0, 1.0.1, 1.0.2 and 1.0.3
- Supports LoRaWAN Regional Parameters 1.0, 1.0.2 rev B, 1.0.3 rev A, 1.1 rev A and B
- Supports Class A devices
- Supports Class B devices
- Supports Class C devices
- Supports OTAA devices
- Supports ABP devices
- Supports MAC Commands
- Supports Adaptive Data Rate
- Implements LoRaWAN Back-end Interfaces 1.0
- LoRaWAN Application Server
- Payload conversion of well-known payload formats
- Payload conversion using custom JavaScript functions
- MQTT pub/sub API
- HTTP Webhooks API
- Implements LoRaWAN Back-end Interfaces 1.0
- LoRaWAN Join Server
- Supports OTAA session key derivation
- Supports external crypto services
- Implements LoRaWAN Back-end Interfaces 1.0
- OAuth 2.0 Identity Server
- User management
- Entity management
- ACLs
- GRPC APIs
- HTTP APIs
- Command-Line Interface
- Create account and login
- Application management and traffic
- End device management, status and traffic
- Gateway management and status
- Web Interface (Console)
- Create account and login
- Application management and traffic
- End device management, status and traffic
- Gateway management, status and traffic
You want to get started? Fantastic! Here's an extensive Getting Started guide.
The easiest way to set up a private network is with the provided docker-compose.yml
.
- Prerequisites
- Make sure you have Docker and Docker Compose installed.
- Make sure you have a TLS certificate and key ready. We'll expect a
cert.pem
andkey.pem
. For development, you can generate self-signed certificates withmake dev.certs
.
- Pull the Docker images:
docker-compose pull
- Initialize the database:
docker-compose run --rm stack is-db init
- Create the
admin
user:You can choose a different user ID if you want. If you do, make sure to use that fordocker-compose run --rm stack is-db create-admin-user \ --id admin --email admin@example.com
owner
below. - Register the CLI as an OAuth client:
docker-compose run --rm stack is-db create-oauth-client \ --id cli --name "Command Line Interface" --no-secret \ --owner admin \ --redirect-uri 'http://localhost:11885/oauth/callback'
- Register the Console as an OAuth client:
Make sure to copy the value of the
docker-compose run --rm stack is-db create-oauth-client \ --id console --name "Console" \ --owner admin \ --redirect-uri 'http://example.com:1885/console/oauth/callback' \ --redirect-uri 'https://example.com:8885/console/oauth/callback'
secret
that is printed by this command. - Export the Console's OAuth client secret or replace it in your
docker-compose.yml
:export TTN_LW_CONSOLE_OAUTH_CLIENT_SECRET=<PASTE SECRET HERE>
- Run the Stack:
docker-compose up
Read the full Getting Started guide here
- General documentation can be found at thethingsnetwork.org/docs
- Learn how to contribute in CONTRIBUTING.md
- Setting up a development environment is documented in DEVELOPMENT.md
- Documentation for the Go code can be found at godoc.org
- The forums contain a massive amount of information and has great search
- You can chat on Slack, an invite can be requested from your account page
- Hosted solutions, as well as commercial support and consultancy are offered by The Things Industries