Name | proxy2vpn JSON |
Version |
0.11.0
JSON |
| download |
home_page | None |
Summary | Proxy2VPN Python utilities |
upload_time | 2025-08-12 23:29:31 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | None |
keywords |
vpn
proxy
utilities
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Proxy2VPN
Python command-line interface for managing multiple VPN containers with Docker.
## Features
- Manage VPN credentials as reusable profiles
- Create and control VPN services using gluetun containers
- **Fleet management**: Bulk deployment across multiple cities and profiles
- Multi-service control with `--all` flags
- Query and validate provider server locations
- HTTP proxy authentication support
- Server health monitoring and automatic rotation
- Intelligent profile allocation with load balancing
## Requirements
- Docker and Docker Compose
- Python 3.8+
## Installation
Install `proxy2vpn` from [PyPI](https://pypi.org/project/proxy2vpn/) using `uvx`:
### uvx (run without installing)
```bash
uvx proxy2vpn --help
```
> [!NOTE]
> `uvx` is part of the `uv` toolchain. If `uv` isn't installed, get it with:
> ```bash
> curl -LsSf https://astral.sh/uv/install.sh | sh
> ```
## Quick Start
1. Initialize the compose file:
```bash
proxy2vpn system init
```
2. Create a profile file with your VPN credentials:
```bash
mkdir -p profiles
cat <<'EOF' > profiles/myprofile.env
OPENVPN_USER=your_username
OPENVPN_PASSWORD=your_password
HTTPPROXY=on
HTTPPROXY_USER=your_proxy_username
HTTPPROXY_PASSWORD=your_proxy_password
EOF
```
3. Register the profile:
```bash
proxy2vpn profile create myprofile profiles/myprofile.env
```
4. Create and start a VPN service:
```bash
proxy2vpn vpn create vpn1 myprofile --port 8888 --provider protonvpn --location "New York"
proxy2vpn profile apply myprofile vpn1 --port 8888
proxy2vpn vpn start vpn1
```
5. View status and test connectivity:
```bash
proxy2vpn vpn list
proxy2vpn vpn test vpn1
```
## Fleet Management
For enterprise-scale deployment across multiple cities and VPN accounts:
1. Create multiple profiles with different account credentials:
```bash
# Create profiles for different VPN accounts
proxy2vpn profile create account1 profiles/account1.env
proxy2vpn profile create account2 profiles/account2.env
```
2. Plan a fleet deployment across countries:
```bash
# Deploy across Germany and France with 2 slots on account1, 8 on account2
proxy2vpn fleet plan --countries "Germany,France,Netherlands" --profiles "account1:2,account2:8" --unique-ips
```
3. Deploy the planned fleet:
```bash
proxy2vpn fleet deploy --parallel
```
4. Monitor and manage the fleet:
```bash
# View fleet status with profile allocation
proxy2vpn fleet status --show-allocation
# Rotate failed servers automatically
proxy2vpn fleet rotate --dry-run
```
## Command overview
### System operations
- `proxy2vpn system init [--force]`
- `proxy2vpn system validate`
- `proxy2vpn system diagnose [--lines N] [--all] [--verbose] [--json]`
### Profiles
- `proxy2vpn profile create NAME ENV_FILE`
- `proxy2vpn profile list`
- `proxy2vpn profile delete NAME`
- `proxy2vpn profile apply PROFILE SERVICE [--port PORT]`
### VPN services
- `proxy2vpn vpn create NAME PROFILE [--port PORT] [--provider PROVIDER] [--location LOCATION]`
- `proxy2vpn vpn list [--diagnose] [--ips-only]`
- `proxy2vpn vpn start [NAME | --all]`
- `proxy2vpn vpn stop [NAME | --all]`
- `proxy2vpn vpn restart [NAME | --all]`
- `proxy2vpn vpn logs NAME [--lines N] [--follow]`
- `proxy2vpn vpn delete [NAME | --all]`
- `proxy2vpn vpn test NAME`
### Server database
- `proxy2vpn servers update`
- `proxy2vpn servers list-providers`
- `proxy2vpn servers list-countries PROVIDER`
- `proxy2vpn servers list-cities PROVIDER COUNTRY`
- `proxy2vpn servers validate-location PROVIDER LOCATION`
### Fleet management
- `proxy2vpn fleet plan --countries "Germany,France" --profiles "acc1:2,acc2:8" [--output PLAN_FILE] [--unique-ips]`
- `proxy2vpn fleet deploy [--plan-file PLAN_FILE] [--parallel] [--validate-first] [--dry-run]`
- `proxy2vpn fleet status [--format table|json|yaml] [--show-allocation] [--show-health]`
- `proxy2vpn fleet rotate [--country COUNTRY] [--criteria random|performance|load] [--dry-run]`
- `proxy2vpn fleet scale up|down [--countries COUNTRIES] [--factor N]`
## Development
### Setup
```bash
# Install with development dependencies
uv sync
# or
pip install -e ".[dev]"
```
### Testing
```bash
# Run tests (if available)
pytest
```
### Changelog Management
This project uses [Towncrier](https://towncrier.readthedocs.io/) for changelog management:
```bash
# Add a news fragment for your changes
echo "Your feature description" > news/<PR_NUMBER>.feature.md
# Preview the changelog
make changelog-draft
# Build the changelog (maintainers)
make changelog VERSION=x.y.z
```
## License
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "proxy2vpn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "vpn, proxy, utilities",
"author": null,
"author_email": "Serhii Khalymon <serhii.khalymon@pm.me>",
"download_url": "https://files.pythonhosted.org/packages/4a/6c/8e8cc2ecaa12af7e63a24ec2be1229d3bfacfe0fc1d7040814b713e776af/proxy2vpn-0.11.0.tar.gz",
"platform": null,
"description": "# Proxy2VPN\n\nPython command-line interface for managing multiple VPN containers with Docker.\n\n## Features\n- Manage VPN credentials as reusable profiles\n- Create and control VPN services using gluetun containers\n- **Fleet management**: Bulk deployment across multiple cities and profiles\n- Multi-service control with `--all` flags\n- Query and validate provider server locations\n- HTTP proxy authentication support\n- Server health monitoring and automatic rotation\n- Intelligent profile allocation with load balancing\n\n## Requirements\n- Docker and Docker Compose\n- Python 3.8+\n\n## Installation\n\nInstall `proxy2vpn` from [PyPI](https://pypi.org/project/proxy2vpn/) using `uvx`:\n\n### uvx (run without installing)\n```bash\nuvx proxy2vpn --help\n```\n\n> [!NOTE]\n> `uvx` is part of the `uv` toolchain. If `uv` isn't installed, get it with:\n> ```bash\n> curl -LsSf https://astral.sh/uv/install.sh | sh\n> ```\n\n## Quick Start\n1. Initialize the compose file:\n ```bash\n proxy2vpn system init\n ```\n\n2. Create a profile file with your VPN credentials:\n ```bash\n mkdir -p profiles\n cat <<'EOF' > profiles/myprofile.env\n OPENVPN_USER=your_username\n OPENVPN_PASSWORD=your_password\n HTTPPROXY=on\n HTTPPROXY_USER=your_proxy_username\n HTTPPROXY_PASSWORD=your_proxy_password\n EOF\n ```\n\n3. Register the profile:\n ```bash\n proxy2vpn profile create myprofile profiles/myprofile.env\n ```\n\n4. Create and start a VPN service:\n ```bash\n proxy2vpn vpn create vpn1 myprofile --port 8888 --provider protonvpn --location \"New York\"\n proxy2vpn profile apply myprofile vpn1 --port 8888\n proxy2vpn vpn start vpn1\n ```\n\n5. View status and test connectivity:\n ```bash\n proxy2vpn vpn list\n proxy2vpn vpn test vpn1\n ```\n\n## Fleet Management\n\nFor enterprise-scale deployment across multiple cities and VPN accounts:\n\n1. Create multiple profiles with different account credentials:\n ```bash\n # Create profiles for different VPN accounts\n proxy2vpn profile create account1 profiles/account1.env\n proxy2vpn profile create account2 profiles/account2.env \n ```\n\n2. Plan a fleet deployment across countries:\n ```bash\n # Deploy across Germany and France with 2 slots on account1, 8 on account2\n proxy2vpn fleet plan --countries \"Germany,France,Netherlands\" --profiles \"account1:2,account2:8\" --unique-ips\n ```\n\n3. Deploy the planned fleet:\n ```bash\n proxy2vpn fleet deploy --parallel\n ```\n\n4. Monitor and manage the fleet:\n ```bash\n # View fleet status with profile allocation\n proxy2vpn fleet status --show-allocation\n \n # Rotate failed servers automatically\n proxy2vpn fleet rotate --dry-run\n ```\n\n## Command overview\n\n### System operations\n- `proxy2vpn system init [--force]`\n- `proxy2vpn system validate`\n- `proxy2vpn system diagnose [--lines N] [--all] [--verbose] [--json]`\n\n### Profiles\n- `proxy2vpn profile create NAME ENV_FILE`\n- `proxy2vpn profile list`\n- `proxy2vpn profile delete NAME`\n- `proxy2vpn profile apply PROFILE SERVICE [--port PORT]`\n\n### VPN services\n- `proxy2vpn vpn create NAME PROFILE [--port PORT] [--provider PROVIDER] [--location LOCATION]`\n- `proxy2vpn vpn list [--diagnose] [--ips-only]`\n- `proxy2vpn vpn start [NAME | --all]`\n- `proxy2vpn vpn stop [NAME | --all]`\n- `proxy2vpn vpn restart [NAME | --all]`\n- `proxy2vpn vpn logs NAME [--lines N] [--follow]`\n- `proxy2vpn vpn delete [NAME | --all]`\n- `proxy2vpn vpn test NAME`\n\n### Server database\n- `proxy2vpn servers update`\n- `proxy2vpn servers list-providers`\n- `proxy2vpn servers list-countries PROVIDER`\n- `proxy2vpn servers list-cities PROVIDER COUNTRY`\n- `proxy2vpn servers validate-location PROVIDER LOCATION`\n\n### Fleet management\n- `proxy2vpn fleet plan --countries \"Germany,France\" --profiles \"acc1:2,acc2:8\" [--output PLAN_FILE] [--unique-ips]`\n- `proxy2vpn fleet deploy [--plan-file PLAN_FILE] [--parallel] [--validate-first] [--dry-run]`\n- `proxy2vpn fleet status [--format table|json|yaml] [--show-allocation] [--show-health]`\n- `proxy2vpn fleet rotate [--country COUNTRY] [--criteria random|performance|load] [--dry-run]`\n- `proxy2vpn fleet scale up|down [--countries COUNTRIES] [--factor N]`\n\n## Development\n\n### Setup\n```bash\n# Install with development dependencies\nuv sync\n# or\npip install -e \".[dev]\"\n```\n\n### Testing\n```bash\n# Run tests (if available)\npytest\n```\n\n### Changelog Management\nThis project uses [Towncrier](https://towncrier.readthedocs.io/) for changelog management:\n\n```bash\n# Add a news fragment for your changes\necho \"Your feature description\" > news/<PR_NUMBER>.feature.md\n\n# Preview the changelog\nmake changelog-draft\n\n# Build the changelog (maintainers)\nmake changelog VERSION=x.y.z\n```\n\n## License\nMIT\n",
"bugtrack_url": null,
"license": null,
"summary": "Proxy2VPN Python utilities",
"version": "0.11.0",
"project_urls": null,
"split_keywords": [
"vpn",
" proxy",
" utilities"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a19b7d942e27b0d1989af8e5e15463e1fee97d30ce8b365f30e95f9415d3c95f",
"md5": "b51ef9e9250e8052036a54901ba26731",
"sha256": "3a60af9a1936edc3f699b39ff55e30f9af78c6cff02e7afe8328ce3dbd1e4a86"
},
"downloads": -1,
"filename": "proxy2vpn-0.11.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b51ef9e9250e8052036a54901ba26731",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 49737,
"upload_time": "2025-08-12T23:29:30",
"upload_time_iso_8601": "2025-08-12T23:29:30.487041Z",
"url": "https://files.pythonhosted.org/packages/a1/9b/7d942e27b0d1989af8e5e15463e1fee97d30ce8b365f30e95f9415d3c95f/proxy2vpn-0.11.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4a6c8e8cc2ecaa12af7e63a24ec2be1229d3bfacfe0fc1d7040814b713e776af",
"md5": "e26796453476b2c582a323ec0c20edac",
"sha256": "ded6435ef2c334c6243241e2f2aba20915449743d03fbc9c5359b1bef7796100"
},
"downloads": -1,
"filename": "proxy2vpn-0.11.0.tar.gz",
"has_sig": false,
"md5_digest": "e26796453476b2c582a323ec0c20edac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 54109,
"upload_time": "2025-08-12T23:29:31",
"upload_time_iso_8601": "2025-08-12T23:29:31.615278Z",
"url": "https://files.pythonhosted.org/packages/4a/6c/8e8cc2ecaa12af7e63a24ec2be1229d3bfacfe0fc1d7040814b713e776af/proxy2vpn-0.11.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-12 23:29:31",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "proxy2vpn"
}