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
User: admin
Password: admin
.
To run the webserver with pdb support:
docker-compose run --rm --service-ports buildly
To run the tests without flake8:
docker-compose run --entrypoint '/usr/bin/env' --rm buildly bash scripts/run-tests.sh --keepdb
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
See pytest --help
for more options.
The instructions in the next three subsections Configure the API authentication, Generating RSA keys, and Configuration will explain how to configure a Buildly Core instance to have it on a live system.
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 application there.
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
Specify each parameter using -e
, --env
, and --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 \
buildly/buildly:<version>
The following tables list the configurable parameters of buildly and their default values.
Parameter | Description | Default |
---|---|---|
ALLOWED_HOSTS |
A list of strings representing the domain names the app can serve | [] |
CORS_ORIGIN_ALLOW_ALL |
If True, CORS_ORIGIN_WHITELIST is not used and all origins are accepted | False |
CORS_ORIGIN_WHITELIST |
A list of origins that are authorized to make cross-site HTTP requests | [] |
DEFAULT_ORG |
The first organization created in the database | `` |
SECRET_KEY |
Used to provide cryptographic signing, and should be set to a unique, unpredictable value | None |
SUPER_USER_PASSWORD |
Used to define the super user password when it's created for the first time | admin in Debug mode or None |
Parameter | Description | Default |
---|---|---|
DATABASE_ENGINE |
The database backend to use. (postgresql , mysql , sqlite3 or oracle ) |
`` |
DATABASE_NAME |
The name of the database to use | `` |
DATABASE_USER |
The username to use when connecting to the database | `` |
DATABASE_PASSWORD |
The password to use when connecting to the database | `` |
DATABASE_HOST |
The host to use when connecting to the database | `` |
DATABASE_PORT |
The port to use when connecting to the database | `` |
Parameter | Description | Default |
---|---|---|
ACCESS_TOKEN_EXPIRE_SECONDS |
The number of seconds an access token remains valid | 3600 |
JWT_ISSUER |
The name of the JWT issuer | `` |
JWT_PRIVATE_KEY_RSA_BUILDLY |
The private RSA KEY | `` |
JWT_PUBLIC_KEY_RSA_BUILDLY |
The public RSA KEY | `` |
OAUTH_CLIENT_ID |
Used in combination with OAUTH_CLIENT_SECRET to create OAuth2 password grant | None |
OAUTH_CLIENT_SECRET |
Used in combination with OAUTH_CLIENT_ID to create OAuth2 password grant | None |
PASSWORD_MINIMUM_LENGTH |
The minimum length of passwords | 6 |
USE_PASSWORD_MINIMUM_LENGTH_VALIDATOR |
Checks whether the password meets a minimum length | True |
USE_PASSWORD_USER_ATTRIBUTE_SIMILARITY_VALIDATOR |
Checks the similarity between the password and a set of attributes of the user | True |
USE_PASSWORD_COMMON_VALIDATOR |
Checks whether the password occurs in a list of common passwords | True |
USE_PASSWORD_NUMERIC_VALIDATOR |
Checks whether the password isn’t entirely numeric | True |
SOCIAL_AUTH_GITHUB_REDIRECT_URL |
The redirect URL for GitHub Social auth | None |
SOCIAL_AUTH_GOOGLE_OAUTH2_REDIRECT_URL |
The redirect URL for Google Social auth | None |
SOCIAL_AUTH_LOGIN_REDIRECT_URL |
Redirect the user once the auth process ended successfully | None |
SOCIAL_AUTH_MICROSOFT_GRAPH_REDIRECT_URL |
The redirect URL for Microsoft graph Social auth | None |
Parameter | Description | Default |
---|---|---|
LDAP_ENABLE |
If true, enable LDAP authentication | False |
LDAP_HOST |
The host to use when connecting to the LDAP server | `` |
LDAP_USERNAME |
The username to use when connecting to the LDAP server | `` |
LDAP_PASSWORD |
The password to use when connecting to the LDAP server | `` |
LDAP_BASE_DN |
The base domain name for search | `` |
LDAP_USERNAME_FIELD_SEARCH |
The username field used by the LDAP server for search | `` |
Parameter | Description | Default |
---|---|---|
EMAIL_BACKEND |
If SMTP , enable connection to an SMTP Server |
`` |
EMAIL_HOST |
The host to use for sending email server | `` |
EMAIL_HOST_USER |
The username to use when connecting to the SMTP server | `` |
EMAIL_HOST_PASSWORD |
The password to use when connecting to the SMTP server | `` |
EMAIL_PORT |
The port to use when connecting to the SMTP Server | 587 |
EMAIL_USE_TLS |
Whether to use a TLS connection when talking to the SMTP server | True |
EMAIL_SUBJECT_PREFIX |
Subject-line prefix for email messages sent | `` |
DEFAULT_FROM_EMAIL |
The email address to be set in messages' FROM | `` |
DEFAULT_REPLYTO_EMAIL |
The email address to be set in messages' REPLY TO | `` |
- 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.
We use SemVer for versioning. For the versions available, see the tags on this repository.
- 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 file for details.