{"id":19190777,"url":"https://github.com/krestomatio/pppxy","last_synced_at":"2025-10-08T00:18:57.059Z","repository":{"id":252967118,"uuid":"842032232","full_name":"krestomatio/pppxy","owner":"krestomatio","description":"PPP (PROXY Protocol Proxy) is a lightweight proxy application designed to transparently add the PROXY protocol header to TCP connections","archived":false,"fork":false,"pushed_at":"2024-08-14T14:26:59.000Z","size":11,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T02:44:51.840Z","etag":null,"topics":["proxy","proxy-protocol"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krestomatio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2024-08-13T14:31:42.000Z","updated_at":"2024-09-16T23:05:43.000Z","dependencies_parsed_at":"2024-08-14T16:00:37.684Z","dependency_job_id":"fb147d3b-c7d0-4ede-98f9-60c2aef8da50","html_url":"https://github.com/krestomatio/pppxy","commit_stats":null,"previous_names":["krestomatio/ppp","krestomatio/pppxy"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/krestomatio/pppxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krestomatio%2Fpppxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krestomatio%2Fpppxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krestomatio%2Fpppxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krestomatio%2Fpppxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krestomatio","download_url":"https://codeload.github.com/krestomatio/pppxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krestomatio%2Fpppxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278867788,"owners_count":26059848,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["proxy","proxy-protocol"],"created_at":"2024-11-09T11:35:45.060Z","updated_at":"2025-10-08T00:18:57.044Z","avatar_url":"https://github.com/krestomatio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PPPxy\n\n**PPPxy (PROXY Protocol Proxy)** is a lightweight proxy application designed to transparently add the [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) header to TCP connections. The app supports handling multiple proxy servers, each with its own configuration.\n\n## Features\n\n- Supports Proxy Protocol versions 1 and 2.\n- Configurable via a YAML file.\n\n## Installation\n\n### Binary\n\nTo install PPPxy, clone the repository and build the binary:\n\n```bash\ngit clone \u003crepository-url\u003e\ncd pppxy\ngo build -o pppxy cmd/pppxy/main.go\n```\n\n### Container\nTo run as a container:\n```bash\n# create config.yaml\n# CAP_NET_BIND_SERVICE is for binding to privileged ports\n# or docker\npodman run --rm -d \\\n  --cap-add=CAP_NET_BIND_SERVICE \\\n  --net=host \\\n  --user 1001 \\\n  --volume \"${PWD}/config.yaml:/etc/pppxy/config.yaml:ro\" \\\n  --name pppxy quay.io/krestomatio/pppxy\n```\n\n### Systemd\nTo install and run as a systemd service:\n```bash\nmkdir -p /etc/pppxy\n# modify the configuration file as needed\ncat \u003c\u003c EOF \u003e /etc/pppxy/config.yaml\npppxy_group:\n  - listen_addr: \":11443\"\n    backend_addr: \"192.168.1.2:22443\"\n    proxy_protocol_version: 1\n  - listen_addr: \":33443\"\n    backend_addr: \"192.168.1.3:44443\"\n    proxy_protocol_version: 2\nEOF\nchown 1001:1001 /etc/pppxy/config.yaml\nchcon -t container_file_t /etc/pppxy/config.yaml\npodman create --rm --restart on-failure \\\n  --stop-timeout 30 \\\n  --cap-add=CAP_NET_BIND_SERVICE \\\n  --net=host \\\n  --user 1001 \\\n  --volume /etc/pppxy/config.yaml:/etc/pppxy/config.yaml:ro \\\n  --name pppxy quay.io/krestomatio/pppxy:0.0.1\npodman generate systemd --new \\\n  --restart-sec 15 \\\n  --start-timeout 180 \\\n  --stop-timeout 30 \\\n  --name pppxy \u003e /etc/systemd/system/pppxy.service\nsystemctl daemon-reload\nsystemctl enable --now pppxy.service\n```\n\n## Usage\n\nRun the `pppxy` application with the desired configuration file:\n\n```bash\n./pppxy --help\nUsage of ./pppxy:\n  -config string\n        Path to configuration file (default \"/etc/pppxy/config.yaml\")\n  -log-level string\n        Log level (debug, info, warn, error) (default \"info\")\n```\n\n## Configuration\n\nThe application is configured via a YAML file. Below is an example configuration:\n\n```yaml\npppxy_group:\n  - listen_addr: \":11443\"\n    backend_addr: \"192.168.1.2:22443\"\n    proxy_protocol_version: 1\n  - listen_addr: \":33443\"\n    backend_addr: \"192.168.1.3:44443\"\n    proxy_protocol_version: 2\n```\n\n### Configuration Options\n\n- **`listen_addr`**: The address and port where the proxy listens for incoming connections.\n- **`backend_addr`**: The backend server address and port where the connection will be forwarded.\n- **`proxy_protocol_version`**: The Proxy Protocol version to use (1 or 2).\n\n## Log Levels\n\n- **debug**: Detailed logs for debugging.\n- **info**: General operational logs.\n- **warn**: Logs that indicate potential issues.\n- **error**: Logs that indicate failures.\n\n## Krestomatio\n\nThis project is part of open source contribution at Krestomatio, a service offering [managed Moodle™ e-learning platforms](https://krestomatio.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrestomatio%2Fpppxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrestomatio%2Fpppxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrestomatio%2Fpppxy/lists"}