{"id":21888698,"url":"https://github.com/swisscom/cf-gobetween","last_synced_at":"2025-10-29T03:38:55.984Z","repository":{"id":73689628,"uuid":"168132085","full_name":"swisscom/cf-gobetween","owner":"swisscom","description":"gobetween - ready for Cloud Foundry","archived":false,"fork":false,"pushed_at":"2024-10-16T15:15:40.000Z","size":14100,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-04T22:02:05.426Z","etag":null,"topics":["cloud-foundry","go"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/swisscom.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2019-01-29T09:59:25.000Z","updated_at":"2024-10-16T15:15:43.000Z","dependencies_parsed_at":"2023-02-24T01:16:06.440Z","dependency_job_id":null,"html_url":"https://github.com/swisscom/cf-gobetween","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swisscom%2Fcf-gobetween","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swisscom%2Fcf-gobetween/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swisscom%2Fcf-gobetween/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swisscom%2Fcf-gobetween/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swisscom","download_url":"https://codeload.github.com/swisscom/cf-gobetween/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244895561,"owners_count":20527907,"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":["cloud-foundry","go"],"created_at":"2024-11-28T11:16:44.684Z","updated_at":"2025-10-29T03:38:50.945Z","avatar_url":"https://github.com/swisscom.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/yyyar/gobetween/master/logo.png\" alt=\"gobetween\" width=\"256px\" /\u003e\n\n**gobetween** -  modern \u0026 minimalistic load balancer and reverse-proxy for the :cloud: Cloud era.\n\n**Current status**: *Under active development*. Currently in use in several highy loaded production environments.\n\n## Features\n\n* [Fast L4 Load Balancing](https://github.com/yyyar/gobetween/wiki)\n  * **TCP** - with optional [The PROXY Protocol](https://github.com/yyyar/gobetween/wiki/Proxy-Protocol) support\n  * **TLS** - [TLS Termination](https://github.com/yyyar/gobetween/wiki/Protocols#tls) + [ACME](https://github.com/yyyar/gobetween/wiki/Protocols#tls) \u0026 [TLS Proxy](https://github.com/yyyar/gobetween/wiki/Tls-Proxying)\n  * **UDP** - with optional virtual sessions\n\n\n* [Clear \u0026 Flexible Configuration](https://github.com/yyyar/gobetween/wiki/Configuration) with [TOML](config/gobetween.toml) or [JSON](config/gobetween.json)\n  * **File** - read configuration from the file\n  * **URL** - query URL by HTTP and get configuration from the response body \n  * **Consul** - query Consul key-value storage API for configuration\n\n* [Management REST API](https://github.com/yyyar/gobetween/wiki/REST-API)\n  * **System Information** - general server info\n  * **Configuration** - dump current config \n  * **Servers** - list, create \u0026 delete\n  * **Stats \u0026 Metrics** - for servers and backends including rx/tx, status, active connections \u0026 etc.\n \n* [Discovery](https://github.com/yyyar/gobetween/wiki/Discovery)\n  * **Static** - hardcode backends list in config file\n  * **Docker** - query backends from Docker / Swarm API filtered by label\n  * **Exec** - execte arbitrary program and get backends from it's stdout\n  * **JSON** - query arbitrary http url and pick backends from response json (of any structure)\n  * **Plaintext** - query arbitrary http and parse backends from response text with customized regexp\n  * **SRV** - query DNS server and get backends from SRV records\n  * **Consul** - query Consul Services API for backends \n  * **LXD** - query backends from LXD\n\n* [Healthchecks](https://github.com/yyyar/gobetween/wiki/Healthchecks)\n  * **Ping** - simple TCP ping healtcheck\n  * **Exec** - execute arbitrary program passing host \u0026 port as options, and read healtcheck status from the stdout\n  * **Probe** - send specific bytes to backend (udp, tcp or tls) and expect correct answer (bytes or regexp)\n\n* [Balancing Strategies](https://github.com/yyyar/gobetween/wiki/Balancing) (with [SNI](https://github.com/yyyar/gobetween/wiki/Server-Name-Indication) support)\n  * **Weight** - select backend from pool based relative weights of backends\n  * **Roundrobin** - simple elect backend from pool in circular order\n  * **Iphash** - route client to the same backend based on client ip hash\n  * **Iphash1** - same as iphash but backend removal consistent (clients remain connecting to the same backend, even if some other backends down)\n  * **Leastconn** - select backend with least active connections\n  * **Leastbandwidth** -  backends with least bandwidth\n\n* Integrates seamlessly with Docker and with any custom system (thanks to Exec discovery and healtchecks)\n\n* Single binary distribution\n\n\n## Architecture\n\u003cimg src=\"http://i.piccy.info/i9/8b92154435be32f21eaa3ff7b3dc6d1c/1466244332/74457/1043487/gog.png\" alt=\"gobetween\" /\u003e\n\n## Usage\nChange `manifest.yml` and `config/gobetween.toml` according to your needs and get started instantly.\nAll configuration options and descriptions are available in the [official docs](http://gobetween.io/documentation.html).   \nHappy `cf push` -ing!\n\n## Performance\nIt's Fast! See [Performance Testing](https://github.com/yyyar/gobetween/wiki/Performance-tests)\n\n## The Name\nIt's play on words: gobetween (\"go between\"). \n\nAlso, it's written in Go, and it's a proxy so it's something that stays between 2 parties :smile:\n\n## License\nMIT. See LICENSE file for more details.\n\n## Authors \u0026 Maintainers\n- [Yaroslav Pogrebnyak](http://pogrebnyak.info)\n- [Nick Doikov](https://github.com/nickdoikov)\n- [Ievgen Ponomarenko](https://github.com/kikom)\n- [Illarion Kovalchuk](https://github.com/illarion)\n\n## Logo\nLogo by [Max Demchenko](https://www.linkedin.com/in/max-demchenko-116170112)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswisscom%2Fcf-gobetween","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswisscom%2Fcf-gobetween","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswisscom%2Fcf-gobetween/lists"}