EdgeX ObjectBox Edition
EdgeX is the open source edge computing platform, and this repo contains a EdgeX version running on the ObjectBox database. ObjectBox is a resource-efficient and fast embedded database and thus is particular well suited for constrained edge devices. This repo is provided and maintained by ObjectBox.
Original text for EdgeX:
EdgeX Foundry is a vendor-neutral open source project hosted by The Linux Foundation building a common open framework for IoT edge computing. At the heart of the project is an interoperability framework hosted within a full hardware- and OS-agnostic reference software platform to enable an ecosystem of plug-and-play components that unifies the marketplace and accelerates the deployment of IoT solutions. This repository contains the Go implementation of EdgeX Foundry microservices. It also includes files for building the services, containerizing the services, and initializing (bootstrapping) the services.
ObjectBox provides docker images in our organization's DockerHub repository. They can be launched easily with docker-compose.
The simplest way to get started is to fetch the latest docker-compose.yml and start the EdgeX containers:
wget https://raw.githubusercontent.com/objectbox/edgex-objectbox/fuji/bin/docker-compose.yml docker-compose up -d
You can check the status of your running EdgeX services by going to http://localhost:8500/
Now that you have EdgeX up and running, you can follow our API Walkthrough to learn how the different services work together to connect IoT devices to cloud services.
Without security services
The following docker-compose file omits security services for an even more lightweight setup.
Note: this is the only option available for armhf/arm-32bit devices/OSs, such as Raspberry Pi with Raspbian, because Kong API gateway is not available for armhf.
wget https://raw.githubusercontent.com/objectbox/edgex-objectbox/fuji/bin/docker-compose-no-secty.yml docker-compose -f docker-compose-no-secty.yml up -d
Running EdgeX with security components
Starting with the Fuji release, EdgeX includes enhanced security features that are enabled by default. There are 3 major components that are responsible for security features:
When security features are enabled, additional steps are required to access the resources of EdgeX.
- The user needs to create an access token and associate every REST request with the access token.
- The exported external ports (such as 48080, 48081 etc.) will be inaccessible for security purposes. Instead, all REST requests need to go through the proxy. The proxy will redirect the request to the individual microservices on behalf of the user.
Sample steps to create an access token and use the token to access EdgeX resources can be found here: Security Components
Other installation and deployment options
EdgeX Foundry is also available as a snap package, for more details on the snap, including how to install it, please refer to EdgeX snap
- The current targeted version of the Go language runtime for release artifacts is v1.12.x
- The minimum supported version of the Go language runtime is v1.11.5
To install the ObjectBox dynamic library (.so, .dylib, .dll), run this in your terminal (Windows users, please use something like Git Bash):
bash <(curl -s https://raw.githubusercontent.com/objectbox/objectbox-c/master/download.sh)
Alternatively, the ObjectBox C repository comes with additional options and details on this procedure.
go get github.com/rjeczalik/pkgconfig/cmd/pkg-config
Several EdgeX Foundry services depend on ZeroMQ for communications by default.
The easiest way to get and install ZeroMQ on Linux is to use this setup script.
For macOS, use brew:
brew install zeromq
For directions installing ZeroMQ on Windows, please see the Windows documentation.
The necessary file will need to be added to the
PKG_CONFIG_PATH environment variable.
On Linux, add this line to your local profile:
For macOS, install the package with brew:
brew install pkg-config
Installation and Execution
EdgeX is organized as Go Modules; there is no requirement to set the GOPATH or
GO111MODULE envrionment variables nor is there a requirement to root all the components under ~/go
(or $GOPATH) and use the
go get command. In other words,
git clone email@example.com/objectbox/edgex-objectbox.git cd edgex-go make build
If you do want to root everthing under $GOPATH, you're free to use that pattern as well
GO111MODULE=on && export GO111MODULE go get github.com/objectbox/edgex-objectbox cd $GOPATH/src/github.com/objectbox/edgex-objectbox make build
To start EdgeX
cd bin ./edgex-launch.sh
Note You must have a database (Mongo or Redis) running before the services will operate
correctly. If you don't want to install a database locally, you can host one via Docker. You may
also need to change the
configuration.toml files for one or more of the services.
Build your own Docker Containers
In addition to running the services directly, Docker and Docker Compose can be used.
See the install instructions to learn how to obtain and install Docker.
Installation and Execution
Follow the "Installation and Execution" steps above for obtaining and building the code, then
make docker run_docker