ProxifyPROV2.0
4G Mobile Proxy Infrastructure — turn USB LTE dongles into professional rotating HTTPS & SOCKS5 proxies.
Overview
ProxifyPRO is a self-hosted proxy management system that transforms 4G USB dongles into a fleet of managed, rotating mobile proxies. Each dongle is network-isolated in its own Linux namespace, independently monitored, and accessible via HTTP and SOCKS5 with per-user authentication.
🔌 Auto-Detection
Plug in a dongle and it's live in 30 seconds. Hot-plug support for adding dongles without restart.
🔄 IP Rotation
Manual, timed, or request-based rotation. PDP cycle (~5s) or full modem reboot.
🏊 Session Pool
Single port, multiple dongles. Sticky sessions keep the same IP for configurable duration.
📈 Analytics
Real-time charts: latency, signal quality, health timeline, memory. 24-hour history.
🩹 Health Monitor
60-second checks. Auto-recovery via PDP cycle or USB rebind. 2-hour watchdog restart.
📱 SMS & OTP
Inbox, send, bulk send with dongle rotation, campaigns, and OTP verification API.
🤖 Telegram Bot
Remote management: /status, /rotate, /health, /proxies. Automatic alerts on state changes.
🔗 REST API
40+ endpoints with Swagger docs. 4 auth methods. Rate limiting. Webhooks.
ProxifyPRO runs on Linux (Ubuntu 22.04+). Install now or check requirements first.
Requirements
| Component | Requirement |
|---|---|
| Operating System | Ubuntu 22.04+ / Debian 12+ (Linux recommended) |
| Node.js | v18 or higher |
| 3proxy | Any version (sudo apt install 3proxy) |
| Hardware | At least one USB 4G dongle (see supported devices) |
| Network | Root access for iptables and network namespaces |
Linux Installation
One-liner
# Download installer (requires license key)
curl -fsSL https://get.proxifypro.com/install.sh -o install.sh
# Run installer
sudo bash install.sh
# Activate license
sudo proxifypro activate YOUR_LICENSE_KEY
What it does
- Checks prerequisites (Node.js 18+, 3proxy, iptables)
- Copies files to
/opt/proxifypro - Installs npm dependencies (express, ws)
- Generates secure credentials (dashboard password, API key, rotation token, pool password)
- Creates
/etc/proxifypro/envconfiguration - Installs and enables systemd service
Start the service
sudo systemctl start proxifypro
sudo systemctl status proxifypro
sudo journalctl -u proxifypro -f # live logs
Updating
# Download latest version
curl -fsSL https://get.proxifypro.com/install.sh -o install.sh
sudo bash src/dongle/v2/install.sh --update
sudo systemctl restart proxifypro
Update mode preserves your configuration and auto-adds new environment variables.
Locations after install
| Path | Description |
|---|---|
/opt/proxifypro | Application files |
/etc/proxifypro/env | Configuration (credentials, ports, tokens) |
/etc/systemd/system/proxifypro.service | Systemd service unit |
macOS
ProxifyPRO requires Linux network namespaces which are not available on macOS natively. Run ProxifyPRO on a Linux server (Ubuntu 22.04+ recommended) and manage it remotely via the dashboard, API, or Telegram bot from your Mac.
Windows
ProxifyPRO requires Linux network namespaces which are not available on Windows natively. Run ProxifyPRO on a Linux server (Ubuntu 22.04+ recommended) and manage it remotely via the dashboard, API, or Telegram bot from your Windows machine.
Using Your Proxies
Each dongle gets its own proxy with unique credentials.
Get your credentials
curl -H "X-API-Key: YOUR_KEY" http://YOUR_IP:3000/api/proxies
HTTP proxy
curl -x http://ppro_20108385:PASSWORD@YOUR_IP:30001 https://api.ipify.org
→ 181.239.164.120 (mobile IP from dongle)
SOCKS5 proxy
curl --socks5 ppro_20108385:PASSWORD@YOUR_IP:31001 https://api.ipify.org
Port allocation
| Dongle # | HTTP Port | SOCKS5 Port |
|---|---|---|
| 1 | 30001 | 31001 |
| 2 | 30002 | 31002 |
| 3 | 30003 | 31003 |
| N | 30000+N | 31000+N |
Session Pool
A single port that distributes traffic across all healthy dongles. Perfect for automated scraping.
Round-robin (rotating IP)
curl -x http://user:POOL_PASS@YOUR_IP:40001 https://api.ipify.org
→ 181.239.164.120 (dongle 1)
curl -x http://user:POOL_PASS@YOUR_IP:40001 https://api.ipify.org
→ 186.143.202.104 (dongle 2, different IP)
Sticky sessions (same IP for N minutes)
Add a session ID to the username. Same session ID = same dongle for the configured duration (default 10 min).
curl -x http://user-sess_abc123:POOL_PASS@YOUR_IP:40001 https://api.ipify.org
→ 181.239.164.120
curl -x http://user-sess_abc123:POOL_PASS@YOUR_IP:40001 https://api.ipify.org
→ 181.239.164.120 (same IP — sticky!)
After the sticky duration expires, the session automatically rotates to the next dongle. The pool excludes unhealthy dongles automatically.
IP Rotation
Manual rotation
# Rotate specific dongle
curl -X POST -H "X-API-Key: KEY" http://YOUR_IP:3000/api/dongles/ppro-XXXXX/rotate
# Rotate ALL dongles
curl -X POST -H "X-API-Key: KEY" http://YOUR_IP:3000/api/rotate-all
# End-user rotation (no API key needed)
curl "http://YOUR_IP:3000/api/change_ip?ns=ppro-XXXXX&rtoken=YOUR_TOKEN"
Auto-rotation
curl -X POST -H "X-API-Key: KEY" -H "Content-Type: application/json" \
-d '{"config":{"mode":"time","interval_minutes":30}}' \
http://YOUR_IP:3000/api/dongles/ppro-XXXXX/configure
| Mode | Description |
|---|---|
manual | Rotate only via API, dashboard, or Telegram |
time | Auto-rotate every N minutes |
requests | Auto-rotate after N requests |
time_or_requests | Rotate on whichever triggers first |
Software Integration
Multilogin / GoLogin / AdsPower
Configure each browser profile with proxy type HTTP or SOCKS5, your server IP, port 30001 (or 40001 for pool), and credentials from /api/proxies. Use session pool with profile ID as session for sticky IPs per profile.
Python
import requests
proxy = "http://ppro_20108385:PASS@YOUR_IP:30001"
r = requests.get("https://api.ipify.org", proxies={"http": proxy, "https": proxy})
print(r.text) # mobile IP
Puppeteer
const browser = await puppeteer.launch({
args: ['--proxy-server=http://YOUR_IP:30001']
});
const page = await browser.newPage();
await page.authenticate({ username: 'ppro_20108385', password: 'PASS' });
Scrapy
HTTP_PROXY = 'http://ppro_20108385:PASS@YOUR_IP:30001'
Dashboard
Access at http://YOUR_IP:3000. Login with your dashboard password.
| Section | Description |
|---|---|
| Overview | Fleet status: dongles, health, IPs, signal, uptime |
| Proxies | Credentials table with copy buttons and .txt export |
| Rotation | Per-dongle rotation mode, interval, manual trigger |
| Health | Modem, signal, internet, proxy status per dongle |
| Analytics | Charts: latency, health timeline, signal, memory |
| SMS | Inbox, single send, bulk send with dongle rotation |
| Settings | System info, version, public IP |
| Logs | Real-time system log viewer |
SMS & OTP
Send SMS
curl -X POST -H "X-API-Key: KEY" -H "Content-Type: application/json" \
-d '{"to":"+5491112345678","message":"Hello!"}' \
http://YOUR_IP:3000/api/sms/ppro-XXXXX/send
OTP verification
# 1. Send OTP
curl -X POST -H "X-API-Key: KEY" -H "Content-Type: application/json" \
-d '{"nsName":"ppro-XXXXX","phone":"+5491112345678","prefix":"MyApp"}' \
http://YOUR_IP:3000/api/otp/send
→ { "reference": "otp_abc123", "expiresAt": ... }
# 2. Verify
curl -X POST -H "X-API-Key: KEY" -H "Content-Type: application/json" \
-d '{"reference":"otp_abc123","code":"123456"}' \
http://YOUR_IP:3000/api/otp/verify
→ { "valid": true, "phone": "+5491112345678" }
Bulk send supports anti-spam intervals (10-60s) and automatic dongle rotation.
Telegram Bot
Remote management via @proxifypro_bot.
Setup
- Create a bot with @BotFather
- Set
PROXIFYPRO_TELEGRAM_TOKENin env - Restart service, send
/startto your bot
| Command | Description |
|---|---|
/status | All dongles with state and IP |
/proxies | Proxy credentials |
/rotate | Rotate all dongles |
/health | Detailed health per dongle |
/sms | Recent SMS messages |
/system | Version, uptime, memory |
Automatic alerts for state changes, watchdog restarts, and recovery events.
Analytics
Real-time metrics every 5 minutes with 24-hour history. Charts: network latency, health timeline heatmap, signal quality (RSRP), system memory.
curl -H "X-API-Key: KEY" http://YOUR_IP:3000/api/analytics/summary
→ { "uptimePct": 98, "avgLatency": 1200, "avgMemory": 85 }
Webhooks
Receive HMAC-signed HTTP POST notifications on events: state changes, watchdog restarts, rotations, recovery.
PROXIFYPRO_WEBHOOK_URLS=https://your-server.com/webhook
PROXIFYPRO_WEBHOOK_SECRET=your_secret
Hardware Compatibility
Officially supported
| Device | Mode | Status |
|---|---|---|
| Huawei E3372h (HiLink) | USB Ethernet + HTTP API | ✅ Fully tested |
| Huawei E3372s (HiLink) | USB Ethernet + HTTP API | ✅ Compatible |
USB hub recommendations
Use a powered USB 3.0 hub (each dongle draws ~0.5A). Recommended: 7-port or 10-port powered hub.
Configuration
All settings in /etc/proxifypro/env:
| Variable | Default | Description |
|---|---|---|
PROXIFYPRO_ADMIN_PASSWORD | generated | Dashboard login password |
PROXIFYPRO_API_KEY | generated | REST API key |
PROXIFYPRO_ROTATION_TOKEN | generated | End-user rotation token |
PROXIFYPRO_DASHBOARD_PORT | 3000 | Dashboard port |
PROXIFYPRO_POOL_PORT | 40001 | Session pool port |
PROXIFYPRO_POOL_STICKY_MS | 600000 | Sticky session duration (10 min) |
PROXIFYPRO_HEALTH_INTERVAL | 60000 | Health check interval (ms) |
PROXIFYPRO_WATCHDOG_HOURS | 2 | Watchdog restart threshold |
PROXIFYPRO_TELEGRAM_TOKEN | empty | Telegram bot token |
PROXIFYPRO_LICENSE_KEY | empty | License key (empty = dev mode) |
API Overview
34+ REST endpoints with 4 authentication methods (Bearer, X-API-Key, Cookie, query param).
# Bearer token
curl -H "Authorization: Bearer YOUR_KEY" http://YOUR_IP:3000/api/dongles
# X-API-Key header
curl -H "X-API-Key: YOUR_KEY" http://YOUR_IP:3000/api/dongles
| Category | Endpoints | Key operations |
|---|---|---|
| Dongles | 5 | List, get, rotate, configure, restart |
| Proxies | 2 | JSON list, text export |
| Rotation | 3 | Rotate one, all, rotation token |
| Health | 2 | Status, manual check |
| SMS | 7 | Inbox, send, bulk, search, campaigns |
| OTP | 2 | Send code, verify code |
| Shared Proxies | 5 | CRUD with bandwidth/whitelist/expiry |
| Session Pool | 2 | Stats, active sessions |
| Analytics | 2 | Time-series, summary |
| System | 5 | Info, license, logs, webhooks, contact |
Interactive API Documentation
Explore all endpoints, test requests, and see response schemas.
OPEN SWAGGER DOCS →License
| Plan | Max Dongles | Price |
|---|---|---|
| Starter | 5 | $60/mo |
| PRO | 20 | $250/mo |
| Enterprise | 60 | $600/mo |
No license key = unlimited dev mode. Payment via Bitcoin and USDT at pay.proxifypro.com.
Logging
ProxifyPRO includes a professional structured logging system with file persistence, runtime level control, and full API access.
Log levels
| Level | Description |
|---|---|
ERROR | Critical failures: watchdog, recovery failures, service errors |
WARN | Warnings: consecutive health failures, degraded dongles, license issues |
INFO | Normal operations: state changes, rotations, startup (default level) |
DEBUG | Detailed diagnostics: backend updates, check results, session tracking |
TRACE | Verbose: every RPC call, every HTTP request, raw modem responses |
Log files
| File | Contents |
|---|---|
/var/log/proxifypro/proxifypro.log | All logs (structured JSON, one entry per line) |
/var/log/proxifypro/error.log | Errors and warnings only |
/var/log/proxifypro/events.log | Important events: state changes, recovery, watchdog, nuclear restarts |
Files auto-rotate at 5MB, keeping the last 5 rotations.
Query logs via API
# Get recent logs (filterable)
curl -H "X-API-Key: KEY" "http://YOUR_IP:3000/api/logs?limit=50&module=HEALTH"
# Get events (state changes, recovery, watchdog)
curl -H "X-API-Key: KEY" "http://YOUR_IP:3000/api/logs/events?limit=20"
# Filter by dongle
curl -H "X-API-Key: KEY" "http://YOUR_IP:3000/api/logs?ns=ppro-XXXXX&level=WARN"
# Full-text search
curl -H "X-API-Key: KEY" "http://YOUR_IP:3000/api/logs?search=watchdog"
Change log level at runtime
# Enable debug mode (no restart needed)
curl -X POST -H "X-API-Key: KEY" -H "Content-Type: application/json" \
-d '{"level":"DEBUG"}' http://YOUR_IP:3000/api/logs/level
# Return to normal
curl -X POST -H "X-API-Key: KEY" -H "Content-Type: application/json" \
-d '{"level":"INFO"}' http://YOUR_IP:3000/api/logs/level
Download log files
# List available log files
curl -H "X-API-Key: KEY" http://YOUR_IP:3000/api/logs/files
# Download a specific file
curl -H "X-API-Key: KEY" -o events.log http://YOUR_IP:3000/api/logs/download/events.log
Modules
Each subsystem logs under its own module name, making it easy to filter:
| Module | Subsystem |
|---|---|
HEALTH | Health checks, state transitions, watchdog triggers |
RECOVERY | PDP cycle, USB rebind, recovery attempts |
POOL | Session pool proxy, backend updates, routing |
TELEGRAM | Bot commands, alerts, message delivery |
WEBHOOK | Webhook dispatch, delivery status |
ANALYTICS | Data collection, time-series snapshots |
HOTPLUG | USB device detection, add/remove events |
LICENSE | License validation, heartbeats, plan limits |
ORCH | Orchestrator: startup, shutdown, dongle setup |
Troubleshooting
Dongle not detected
lsusb | grep -i huawei
ip -br link | grep -E "eth|enx"
If missing, restart the service — it auto-rebinds USB devices.
Proxy not connecting
- Check health:
curl -H "X-API-Key: KEY" http://localhost:3000/api/health - Verify iptables:
sudo iptables -t nat -L PREROUTING -n | grep proxifypro - Check firewall allows ports 30001-31010 and 40001
Service keeps restarting
sudo journalctl -u proxifypro --since "10 min ago" | grep ERROR
Common fix: sudo rm -f /tmp/3proxy-ppro-*.cfg then restart.
FAQ
How many dongles can I run?
Limited by license plan and USB ports. With a powered 10-port hub, up to 10 dongles. Enterprise supports 60.
Do I need a static IP?
No. ProxifyPRO auto-detects your public IP. For reliable external access, use a Cloudflare Tunnel.
Can I use this with anti-detect browsers?
Yes. Works with Multilogin, GoLogin, AdsPower, Dolphin Anty. Use session pool with profile IDs for sticky sessions.
What happens if a dongle loses signal?
Health monitor detects it within 60 seconds. Auto-recovery tries PDP cycle, then USB rebind. Watchdog does full restart after 2 hours. Alerts via Telegram and webhooks.
Can I sell proxies to customers?
Yes. Use shared proxies with per-customer credentials, bandwidth limits, and expiry dates. Or use the session pool as a single endpoint.
How fast is IP rotation?
PDP cycle: ~5-15 seconds. Full modem reboot: ~30-60 seconds.