A gateway and service discovery system for “micro” services. A light weight Gateway that connects all of your data services, API’s and endpoints to a single easy-to-use URL.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
- Docker version 19+
Build first the image:
docker-compose build # --no-cache to force dependencies installation
To run the webserver (go to 127.0.0.1:8080):
docker-compose up # -d for detached
To run the webserver with pdb support:
docker-compose run --rm --service-ports buildly
Running the tests
To run the tests (without flake8) and have
ipdb open on error:
docker-compose run --entrypoint '/usr/bin/env' --rm buildly bash scripts/run-tests.sh --keepdb --bash_on_finish
To run the tests like if it was CI with flake8:
docker-compose run --entrypoint '/usr/bin/env' --rm buildly bash scripts/run-tests.sh --ci
pytest --help for more options.
Add additional notes about how to deploy this on a live system and preference for Humanitec and Walhall.
Configure the API authentication
All clients interact with our API using the OAuth2 protocol. In order to
configure it, go to
admin/oauth2_provider/application/ and add a new
Generating RSA keys
For using JWT as authentication method, we need to configure public and private RSA keys.
The following commands will generate a public and private key. The private key will stay in Buildly and the public one will be supplied to microservices in order to verify the authenticity of the message:
$ openssl genrsa -out private.pem 2048 $ openssl rsa -in private.pem -outform PEM -pubout -out public.pem
The following table lists the configurable parameters of buildly and their default values.
||A list of strings representing the domain names the app can serve||
||A list of origins that are authorized to make cross-site HTTP requests||
||The database backend to use. (
||The name of the database to use||``|
||The username to use when connecting to the database||``|
||The password to use when connecting to the database||``|
||The host to use when connecting to the database||``|
||The port to use when connecting to the database||``|
||The first organization created in the database||
||The name of the JWT issuer||``|
||The private RSA KEY||``|
||The public RSA KEY||``|
||The redirect URL for GitHub Social auth||None|
||The redirect URL for Google Social auth||None|
||Redirect the user once the auth process ended successfully||None|
||The redirect URL for Microsoft graph Social auth||None|
||The number of seconds an access token remains valid||None|
||Used to provide cryptographic signing, and should be set to a unique, unpredictable value||None|
||Used in combination with OAUTH_CLIENT_SECRET to create OAuth2 password grant||None|
||Used in combination with OAUTH_CLIENT_ID to create OAuth2 password grant||None|
||If true, checks whether the password meets a minimum length||None|
||The minimum length of passwords||
||If true, checks the similarity between the password and a set of attributes of the user||None|
||If true, checks whether the password occurs in a list of common passwords||None|
||If true, checks whether the password isn’t entirely numeric||None|
||Used to define the super user password when it's created for the first time||
Specify each parameter using
--env-file flags to set simple (non-array) environment variables to
docker run. For example,
$ docker run -e MYVAR1 --env MYVAR2=foo \ --env-file ./env.list \ ubuntu bash
- Travis CI - Recommended CI/CD
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
- Buildly - Initial work
See also the list of contributors who participated in this project.
This project is licensed under the GPL v3 License - see the LICENSE.md file for details