# Installation Containerization is effectively required due to the intensive Linux networking alterations produced during active speed testing. ## Docker (Required Architecture) AirBL embeds `wg-quick` connections *internally* to run raw speedtest simulations without tainting your Docker host's traffic. To ensure UI accessibility during test cycles, Linux Policy Routing (`ip rule`) prevents the Web Dashboard socket from sinking into the VPN. ### The Stack ```yaml version: "3" services: airbl: build: . container_name: airbl privileged: false cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.conf.all.src_valid_mark=1 - net.ipv6.conf.all.disable_ipv6=0 - net.ipv4.ip_forward=1 ports: - "5665:5665" volumes: - ./conf:/app/conf:ro - airbl_data:/app/data # Map this to your Gluetun directory if utilizing the builder - ./gluetun:/app/gluetun:rw volumes: airbl_data: ``` Navigate to `http://:5665/` to view the UI. ### Init Process The AirBL Dockerfile wraps the application within `tini` locally. WireGuard triggers zombie processes extremely consistently when tearing down aborted sockets. `tini` reaps abandoned PIDs securely without locking the Python container script.