ChirpStack open-source LoRaWAN Network Server
Go to file
Orne Brocaar c0cd3a3361 Remove env variables from example config.
Initially this was added to make development using Docker Compose easier.
However, in my experience Docker Compose is not great for the reason
that there might be environmental differences between Rust running in
Compose and Rust running outside Compose (if using VSCode with Rust
plugin, then rust-analyzer will perform checks in the background). This
and 'cross' not working properly in Compose was the reason to migrate
to nix, as it provides a reproducible environment for development that
can also be used by VSCode (using the Nix environment selector
extension) and GitHub Actions (for the CI pipeline).

As the chirpstack-docker repository provides its own configuration files,
these files are not included in the Dockerfile and because we are
rewriting these env variables anyway to 'localhost' in the .deb and .rpm
post-installation script, it is better to set these to localhost by
default.

The post-installation rewrite to 'localhost' is causing issues on
upgrade (#295). If we only do the rewrite on initial installation, then
we run in an other issue; the package-manager will prompt that the
config file has changed (from 'localhost' to '$MQTT_BROKER_HOST' for
example) and will ask if you would like to overwrite or not. If the
end-user would accept the config changes without looking at the diff
this would break the installation as most likely, these environment are
not set (which is why we were rewriting these to 'localhost' in the first
place).
2023-11-22 11:10:13 +00:00
.cargo Implement fully static ARMv7 build. 2023-05-30 12:13:52 +01:00
.docker-compose/postgresql/initdb Initial commit. 2022-04-06 21:18:32 +01:00
.github Update dist workflow. 2023-05-30 12:13:52 +01:00
api Bump version to 4.6.0-test.2 2023-11-20 12:33:52 +00:00
backend Bump version to 4.6.0-test.2 2023-11-20 12:33:52 +00:00
chirpstack Remove env variables from example config. 2023-11-22 11:10:13 +00:00
chirpstack-integration Bump version to 4.6.0-test.1 2023-10-26 15:38:37 +01:00
cross Update pq, zlib and openssl versions. 2023-09-05 10:44:08 +01:00
examples Expose skip_f_cnt and device variables to ADR. 2023-10-09 11:23:13 +01:00
lrwn Bump version to 4.6.0-test.2 2023-11-20 12:33:52 +00:00
lrwn-filters Bump version to 4.6.0-test.2 2023-11-20 12:33:52 +00:00
ui Bump version to 4.6.0-test.2 2023-11-20 12:33:52 +00:00
.dockerignore Implement fully static AMD64 build. 2023-05-30 12:13:52 +01:00
.env Add dotenv for test dependency config. 2023-05-30 12:13:52 +01:00
.gitattributes Update .gitattributes. 2022-04-06 21:50:23 +01:00
.gitignore Add dotenv for test dependency config. 2023-05-30 12:13:52 +01:00
Cargo.lock Bump version to 4.6.0-test.2 2023-11-20 12:33:52 +00:00
Cargo.toml Add chirpstack_integration crate. 2023-10-13 11:38:56 +01:00
Cross.toml Implement fully static ARMv7 build. 2023-05-30 12:13:52 +01:00
docker-compose.yml Update README and Makefiles. 2023-05-30 12:13:52 +01:00
Dockerfile Refactor build scripts for cross-rs based cross compiling. 2023-05-30 12:13:52 +01:00
Dockerfile-devel Refactor build scripts for cross-rs based cross compiling. 2023-05-30 12:13:52 +01:00
LICENSE Initial commit. 2022-04-06 21:18:32 +01:00
Makefile Add chirpstack_integration crate. 2023-10-13 11:38:56 +01:00
README.md Update README + remove Vagrantfile. 2023-05-31 12:11:48 +01:00
rust-toolchain.toml Update Rust to 1.74.0. 2023-11-20 12:09:02 +00:00
shell.nix Refactor UI to function elements & update React + Ant. 2023-07-27 13:07:00 +01:00

ChirpStack open-source LoRaWAN(R) Network Server

CI

ChirpStack is an open-source LoRaWAN(R) Network Server which can be used to set up LoRaWAN networks. ChirpStack provides a web-interface for the management of gateways, devices and tenants as well to set up data integrations with the major cloud providers, databases and services commonly used for handling device data. ChirpStack provides a gRPC based API that can be used to integrate or extend ChirpStack.

Documentation and binaries

Please refer to the ChirpStack website for documentation and pre-compiled binaries.

Building from source

Requirements

Building ChirpStack requires:

Nix

Nix is used for setting up the development environment which is used for local development and for creating the binaries.

If you do not have Nix installed and do not wish to install it, then you can use the provided Docker Compose based Nix environment. To start this environment execute the following command:

make docker-devshell

Note: You will be able to run the test commands and run cargo build, but cross-compiling will not work within this environment (because it would try start Docker within Docker).

Docker

Docker is used by cross-rs for cross-compiling, as well as some of the make commands.

Starting the development shell

Run the following command to start the development shell:

nix-shell

Or if you do not have Nix installed, execute the following command:

make docker-devshell

Building the UI

To build the ChirpStack UI, execute the following command:

make build-ui

Running ChirpStack tests

Start required services

ChirpStack requires several services like PostgresQL, Redis, Mosquitto, ... to be running before you can run the tests. You need to start these services manually if you started the development shell using nix-shell:

docker-compose up -d

Run tests

Run the following command to run the ChirpStack tests:

make test

Building ChirpStack binaries

Before compiling the binaries, you need to install some additional development tools (for cross-compiling, packaging, e.d.). Execute the following command:

make dev-dependencies

Run the following command within the ./chirpstack sub-folder:

# Build AMD64 debug build (optimized for build speed)
make debug-amd64

# Build AMD64 release build (optimized for performance and binary size)
make release-amd64

# Build all packages (all targets, .deb, .rpm and .tar.gz files)
make dist

License

ChirpStack Network Server is distributed under the MIT license. See also LICENSE.