Нативный setup для Ubuntu 24.04 без Docker. Он устанавливает HAProxy из репозитория Ubuntu и поднимает только два публичных TCP-порта:
443: TLS termination и передача chat-трафика вg.whatsapp.net:5222с корректным PROXY header587: прозрачная передача media-трафика вwhatsapp.net:443
Схема совместима с рекомендацией официального проекта WhatsApp Proxy для неблагоприятных сетевых условий. VoIP официальным proxy не поддерживается.
- Production-профили
config.<ssh-alias>.yamlи локальныйAGENTS.mdисключаются из Git и standalone ZIP - Release builder исключает локальные окружения и runtime artifacts
unzip whatsapp-haproxy-setup-standalone-1.0.3.zip
cd whatsapp-haproxy-setup
cp config.example.yaml config.yaml
nano config.yaml
chmod +x setuphaproxy.sh cleanhaproxy.sh steps/*.sh tools/*.py
sudo ./setuphaproxy.sh allВ config.yaml обязательно замените server.public_ip. Пустой
access.allowed_cidrs означает публичный беспарольный WhatsApp proxy. Это не
HTTP- и не SOCKS-прокси: направления backend зафиксированы в HAProxy.
Скрипт поддерживает отдельные шаги:
sudo ./setuphaproxy.sh 0 # диагностика, backup и остановка
sudo ./setuphaproxy.sh 1 # установка HAProxy и зависимостей
sudo ./setuphaproxy.sh 2 # сертификат и конфигурация
sudo ./setuphaproxy.sh 3 # systemd start и VM-side health-checkМожно хранить YAML вне распакованного каталога:
sudo ./setuphaproxy.sh all --config /secure/path/whatsapp-proxy.yamlSetup не меняет cloud security group и не подключает DDoS-защиту. Для
публичного сервиса разрешите ingress TCP только на 443 и 587. SSH должен
быть ограничен отдельно. VM нужен исходящий TCP к g.whatsapp.net:5222 и
whatsapp.net:443; если firewall не поддерживает DNS-правила, используйте
подходящие общие egress-правила.
UFW по умолчанию не меняется. server.manage_ufw: true добавляет два allow
правила, но не заменяет cloud firewall.
Публичного HAProxy stats-порта нет. Диагностика использует локальный сокет
/run/haproxy/admin.sock.
На VM:
sudo python3 tools/healthcheck.py --scope vm --config config.yamlС клиентской машины:
python -m venv venv
venv/bin/pip install PyYAML
venv/bin/python tools/healthcheck.py --scope e2e --config config.yaml \
--json-out whatsapp-haproxy-e2e.jsonWindows PowerShell использует venv\Scripts\python.exe. E2E выполняет TLS
handshake с самоподписанным frontend 443 и проверенный сквозной TLS handshake
до *.whatsapp.net через 587. Он не эмулирует закрытый протокол WhatsApp и не
доказывает доставку сообщения в приложении.
Неблокирующая smoke-проверка per-IP лимита:
python tools/healthcheck.py --scope limits --config config.yamlВ приложении укажите публичный IP или DNS-имя VM, порт чата 443 и порт медиа
587. Сертификат на 443 создаётся локально при установке и не требует
публичного CA.
Без --yes cleaner всегда работает в dry-run:
./cleanhaproxy.sh
sudo ./cleanhaproxy.sh --yes
sudo ./cleanhaproxy.sh --yes --purge-package --purge-setupДополнительные флаги:
sudo ./cleanhaproxy.sh --yes --keep-backups
sudo ./cleanhaproxy.sh --yes --purge-ufwCleaner останавливает HAProxy и удаляет /etc/haproxy, выделенные логи,
runtime state и backup этого setup. --purge-package удаляет пакет
HAProxy, но намеренно не запускает глобальный apt autoremove. Cloud firewall
и общий systemd journal не меняются. Cleaner не затрагивает 3proxy.
- Официальный проект: https://github.com/WhatsApp/proxy
- Официальная HAProxy-схема: https://github.com/WhatsApp/proxy/blob/main/proxy/src/proxy_config.cfg