{"id":13586560,"url":"https://github.com/byjg/docker-easy-haproxy","last_synced_at":"2025-04-23T02:26:45.343Z","repository":{"id":42704892,"uuid":"149055653","full_name":"byjg/docker-easy-haproxy","owner":"byjg","description":"Discover services and create dynamically the haproxy.cfg based on the labels defined in docker containers or from a simple static Yaml ","archived":false,"fork":false,"pushed_at":"2025-04-16T18:58:32.000Z","size":1760,"stargazers_count":62,"open_issues_count":13,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-17T01:37:58.798Z","etag":null,"topics":["discovery-service","dynamic-configuration","haproxy","haproxy-configuration","haproxy-docker","ssl"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/byjg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"byjg"}},"created_at":"2018-09-17T02:04:26.000Z","updated_at":"2025-04-16T18:58:35.000Z","dependencies_parsed_at":"2023-11-22T02:27:55.661Z","dependency_job_id":"5eed8144-13b0-4417-af1f-f92032b45641","html_url":"https://github.com/byjg/docker-easy-haproxy","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byjg%2Fdocker-easy-haproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byjg%2Fdocker-easy-haproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byjg%2Fdocker-easy-haproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byjg%2Fdocker-easy-haproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/byjg","download_url":"https://codeload.github.com/byjg/docker-easy-haproxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250356519,"owners_count":21417102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discovery-service","dynamic-configuration","haproxy","haproxy-configuration","haproxy-docker","ssl"],"created_at":"2024-08-01T15:05:39.199Z","updated_at":"2025-04-23T02:26:45.330Z","avatar_url":"https://github.com/byjg.png","language":"Python","readme":"# EasyHAProxy\n\n[![Opensource ByJG](https://img.shields.io/badge/opensource-byjg-success.svg)](http://opensource.byjg.com)\n[![Build Status](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml)\n[![GitHub source](https://img.shields.io/badge/Github-source-informational?logo=github)](https://github.com/byjg/docker-easy-haproxy/)\n[![GitHub license](https://img.shields.io/github/license/byjg/docker-easy-haproxy.svg)](https://opensource.byjg.com/opensource/licensing.html)\n[![GitHub release](https://img.shields.io/github/release/byjg/docker-easy-haproxy.svg)](https://github.com/byjg/docker-easy-haproxy/releases/)\n[![Helm Version](https://img.shields.io/badge/dynamic/yaml?color=blue\u0026label=Helm\u0026query=%24.entries.easyhaproxy%5B0%5D.version\u0026url=http%3A%2F%2Fopensource.byjg.com%2Fhelm%2Findex.yaml)](https://opensource.byjg.com/helm)\n\n![EasyHAProxy](docs/easyhaproxy_logo.png)\n\n## Service discovery for HAProxy\n\nEasyHAProxy dynamically creates the `haproxy.cfg` based on the labels defined in docker containers.\n\nEasyHAProxy can detect and configure HAProxy automatically on the following platforms:\n\n- Docker\n- Docker Swarm\n- Kubernetes\n\n## Who is using?\n\nEasyHAProxy is part of some projects:\n- Dokku \n- MicroK8s\n- DigitalOcean Marketplace\n\nSee detailed instructions on how to install below.\n\n## EasyHAProxy Mission\n\nEasy to set up and low configuration to numerous features. \n\n## Features\n\nEasyHAProxy will discover the services based on the Docker Tags of the containers running on a Docker host or Docker Swarm cluster and dynamically set up the `haproxy.cfg`. Below, EasyHAProxy main features:\n\n- Support Automatic Certificate Management Environment (ACME) protocol compatible with Let's encrypt and others CA.\n- Set your custom SSL certificates\n- Balance traffic between multiple replicas\n- Set SSL with three different levels of validations and according to the most recent definitions.\n- Set up HAProxy to listen to TCP.\n- Add redirects.\n- Enable/disable Stats on port 1936 with a custom password.\n- Enable/disable custom errors.\n\nAlso, it is possible to set up HAProxy from a simple Yaml file instead of creating `haproxy.cfg` file.\n\n## How Does It Work?\n\nYou don't need to change your current infrastructure and don't need to learn the HAProxy configuration.\n\nThe steps are:\n\n- Run the EasyHAProxy container;\n- Add some labels to the containers you want to be parsed by EasyHAProxy (see detailed instructions below);\n- EasyHAProxy will automatically detect the containers, set up, and reload the HAProxy configurations for you without downtime.\n\n## Detailed Instructions\n\nFor detailed instructions on how to use EasyHAProxy, follow the instructions for the platform you want to use:\n\n[![Kubernetes](docs/easyhaproxy_kubernetes.png)](docs/kubernetes.md)\n[![Docker Swarm](docs/easyhaproxy_swarm.png)](docs/swarm.md)\n[![Docker](docs/easyhaproxy_docker.png)](docs/docker.md)\n[![Static](docs/easyhaproxy_static.png)](docs/static.md)\n\nOr you can install using tools:\n\n[![Helm](docs/easyhaproxy_helm.png)](docs/helm.md)\n[![MicroK8s](docs/easyhaproxy_microk8s.png)](docs/microk8s.md)\n[![Dokku](docs/easyhaproxy_dokku.png)](docs/dokku.md)\n[![DigitalOcean](docs/easyhaproxy_digitalocean.png)](docs/digitalocean.md)\n\n## Special Topics\n\nIf you already set up the EasyHAProxy, is time to go deeper:\n\n- [Custom SSL](docs/ssl.md)\n- [Automatic Certificate Issuing](docs/acme.md) (e.g. Letsencrypt)\n\n## See EasyHAProxy in action\n\nClick on the image to see the videos (use HD for better visualization)\n\n[![Docker In Action](docs/video-docker.png)](https://youtu.be/ar8raFK0R1k)\n[![Docker and Letsencrypt](docs/video-docker-ssl.png)](https://youtu.be/xwIdj9mc2mU)\n[![K8s In Action](docs/video-kubernetes.png)](https://youtu.be/uq7TuLIijks)\n[![K8s and Letsencrypt](docs/video-kubernetes-letsencrypt.png)](https://youtu.be/v9Q4M5Al7AQ)\n[![Static Configuration](docs/video-static.png)](https://youtu.be/B_bYZnRTGJM)\n[![TCP Mode](docs/video-tcp-mysql.png)](https://youtu.be/JHqcq9crbDI)\n\n[Here is the code](https://gist.github.com/byjg/e125e478a0562190176d69ea795fd3d4) applied in the examples above.\n\n----\n[Open source ByJG](http://opensource.byjg.com)","funding_links":["https://github.com/sponsors/byjg"],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyjg%2Fdocker-easy-haproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyjg%2Fdocker-easy-haproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyjg%2Fdocker-easy-haproxy/lists"}