{"id":16161916,"url":"https://github.com/iamstoxe/gluecannon","last_synced_at":"2025-03-18T22:30:50.952Z","repository":{"id":242575097,"uuid":"809940915","full_name":"IAmStoxe/gluecannon","owner":"IAmStoxe","description":"Gluecannon is a script that orchestrates the deployment and configuration of multiple gluetun VPN containers and a single HAProxy container that acts as a proxy for the VPN containers. It allows you to easily manage and scale your VPN setup using Docker Compose.","archived":false,"fork":false,"pushed_at":"2024-06-06T15:32:44.000Z","size":10,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-10T03:09:31.196Z","etag":null,"topics":["docker","gluetun","networking","vpn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IAmStoxe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-06-03T18:36:58.000Z","updated_at":"2024-09-27T21:23:33.000Z","dependencies_parsed_at":"2024-06-03T21:37:38.333Z","dependency_job_id":"d2adb6e9-191c-4ea3-953a-7321dd490bae","html_url":"https://github.com/IAmStoxe/gluecannon","commit_stats":null,"previous_names":["iamstoxe/gluecannon"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IAmStoxe%2Fgluecannon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IAmStoxe%2Fgluecannon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IAmStoxe%2Fgluecannon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IAmStoxe%2Fgluecannon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IAmStoxe","download_url":"https://codeload.github.com/IAmStoxe/gluecannon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243950894,"owners_count":20373663,"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":["docker","gluetun","networking","vpn"],"created_at":"2024-10-10T02:28:18.035Z","updated_at":"2025-03-18T22:30:50.689Z","avatar_url":"https://github.com/IAmStoxe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gluecannon\n\nGluecannon is a script that orchestrates the deployment and configuration of multiple gluetun VPN containers and a single HAProxy container that acts as a proxy for the VPN containers. It allows you to easily manage and scale your VPN setup using Docker Compose.\n\n## Features\n\n- Load configuration from a YAML file.\n- Generate Docker Compose and HAProxy configuration files based on the loaded configuration.\n- Manage (start, stop) VPN containers and HAProxy using Docker Compose.\n- Run commands through the HAProxy.\n- Start an interactive shell through the HAProxy.\n\n## Usage\n\nThe script is invoked from the command line with an action argument. The available actions are:\n\n- `up`: Start or restart the VPN containers and HAProxy.\n- `down`: Stop the VPN containers and HAProxy.\n- `list`: List the running services.\n- `run`: Run a command through the HAProxy. This action requires an additional argument specifying the command to run.\n- `interactive`: Start an interactive shell through the HAProxy.\n\n```mermaid\ngraph LR\n    subgraph Docker Network\n        direction LR\n        subgraph VPN_Providers\n            direction LR\n            provider1_0[Provider1_Container0]\n            provider1_1[Provider1_Container1]\n            provider2_0[Provider2_Container0]\n        end\n        haproxy[HAProxy]\n    end\n    \n    haproxy --\u003e|Routes Traffic| provider1_0\n    haproxy --\u003e|Routes Traffic| provider1_1\n    haproxy --\u003e|Routes Traffic| provider2_0\n    \n    subgraph External Network\n        user[User]\n    end\n    \n    user --\u003e|Accesses via Proxy| haproxy\n\n```\n\nExample usage:\n\n```bash\npython gluecannon.py up\npython gluecannon.py run curl ifconfig.me\npython gluecannon.py down\n```\n\n## Configuration\n\nThe script reads its configuration from a YAML file (`config.yml` by default). The configuration file specifies the global settings (like the proxy port and Docker image to use), and the settings for each VPN provider (like the number of containers to start and the environment variables to set).\n\n## Dependencies\n\n- Python 3.6 or later\n- Docker\n- Docker Compose\n- Jinja2\n\n## Installation\n\n1. Clone the repository.\n2. Install the dependencies.\n3. Adjust the configuration file to your needs.\n4. Run the script with the desired action.\n\n## Contributing\n\nContributions are welcome. Please submit a pull request or create an issue to discuss the changes.\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamstoxe%2Fgluecannon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamstoxe%2Fgluecannon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamstoxe%2Fgluecannon/lists"}