Skip to content

A simple but powerful reverse proxy with authentication and middleware capabilities. NOT PRODUCTION READY !

License

Notifications You must be signed in to change notification settings

forsam-education/cerberus

Repository files navigation

Cerberus



Cerberus is a simple yet powerful, modern and easily configurable reverse proxy solution.

Lint & Build GoDoc Go Report Card Version License: MIT FOSSA Status

Disclaimer

This project is in a very early work in progress state, do not use in production.

Contribute

If you want to contribute to this project , you can read the code of conduct and conventions, also check the current issues, and open pull requests.

You can also simply ask for features by creating issues.

Services Dependencies

Cerberus depends on some services to store both it's temporary and persistent state.

The persistent state is stored in a MySQL 8 database, therefor you must have one available and set it properly in the configuration file.

For the temporary state storage (and sharing it between the different instances of Cerberus running in your stack), it uses a Redis server in it's fifth version.

Quality assurance

To fix the basics of code format, you can run go fmt ./....

For a bit more advanced code style checks, you can run golint $(go list ./... | grep -v /vendor/). You'll have to run go get -u golang.org/x/lint/golint before.

Dependencies upgrades

The dependencies are automatically upgraded every Monday by Dependabot.

Services caching flow

This chart represents the flow to retrieve and cache a service when it is queried on the reverse proxy.

Cache Flow

Docker

We made a Docker image for the software, you can find it on DockerHub. It is a two-stages build process, and the final build is based on scratch so it is as small as possible.

You can also find an example Docker Compose configuration file at deployments/docker-compose.yml and run it docker-compose -f ./deployments/docker-compose.yml up.

License

FOSSA Status