VLX FrameFlow is a modular suite of shell scripts designed to transform Debian-based Single Board Computers (SBCs) and VPS into:
- High-availability bonding routers (Client & Server)
- Multi-camera streaming encoders
- Real-time telemetry trackers
The suite operates via a main installation entry point, modular configuration scripts, and runtime service managers. Process control is handled via systemd.
The suite uses a multi-protocol bonding architecture: UDP traffic is routed exclusively via MLVPN, and TCP traffic is aggregated using MPTCP with Shadowsocks-libev and v2ray-plugin acting as a transparent proxy.
| Component | Description |
|---|---|
VLX_FrameFlow.sh |
Main interactive installer and manager supporting CLIENT and SERVER roles. |
config/ |
Configuration templates and maintenance scripts. |
modules/ |
Core logic (storage, system, network, package management). |
tests/ |
Unit and integration tests. |
config/FrameFlow_user.settings |
User-specific runtime configuration. |
- A fresh Debian-based OS (e.g., Raspberry Pi OS Lite 64-bit, Armbian, Ubuntu on VPS).
- Root privileges are required for the installation process.
Clone the repository and run the installer as root:
git clone https://github.com/viruslox/VLX_FrameFlow.git
cd VLX_FrameFlow
./VLX_FrameFlow.shThe main script provides an interactive menu. The primary choice allows selecting the installation role or updating the suite:
- CLIENT (SBC/Field Unit) - Automated, heavy installation.
- SERVER (VPS/Relay Node) - Interactive, conservative installation.
- Update Suite, user ownership and sudoers.
- Exit.
- Install OS on Storage: Clone running OS to high-speed storage.
- Configure System: Full setup (FFmpeg, MPTCP, GUI bloatware removal, user config).
- Reconfigure System network: Re-apply network features and firewall.
- Update network interfaces: Regenerate networkd and hostapd profiles.
- Create/Reconfigure FrameFlow user.
- Install and configure Client components: MLVPN and Shadowsocks.
- Complete Clean Up / Roll back: Reverts client configurations.
- Install and configure Server components: MLVPN and Shadowsocks setup with firewall prompts.
- Complete Clean Up / Roll back: Safely uninstalls server components and UFW rules.
All runtime scripts are intended to be executed by the dedicated service user (default: frameflow). They rely on systemd-run --user for lifecycle and process management.
These commands can be run via the main manager script to switch modes and control networking.
./VLX_FrameFlow.sh <command>Available commands:
server_start/server_status/server_stop: Manage server components.client_start/client_status/client_stop: Manage client components.client_restart: Restarts networking and bonding services.bonding_status: Displays MPTCP proxy and MLVPN tunnel status.accesspoint_start: Activates HostAP (hotspot) on the first Wi-Fi interface.accesspoint_stop: Stops HostAP and switches the first Wi-Fi interface back to managed client mode.network_restart: Restarts network dispatcher, flushes routes cache.
./VLX_cameraman.sh <VxAy> <start|stop|status>Manages video encoding pipelines:
- Captures video and audio dynamically via
v4l2-ctlandarecord(bypassing static settings files). - Streams via FFmpeg using SRT protocol (redirects UDP to
10.1.10.1via MLVPN on Client).
Parameters:
VxAy: Video index (x) and audio index (y). E.g.,V0A1, orV1A0for no audio.
./VLX_mediamtx.sh <start|stop|status>Manages the local MediaMTX server (SRT protocol only).
Functions:
- Acts as a relay/proxy for local streams.
- Restreams to remote endpoints via SRT.
- Dynamically injects FFmpeg commands into
frameflow.yml.
./VLX_gps_tracker.sh <start|stop|status>Manages GPS and telemetry services:
- Controls gpsd.
- Auto-detects USB / serial GPS hardware.
- Reads TPV data via
gpspipe. - Pushes JSON telemetry to the configured API endpoint.
This file contains all runtime environment variables. It is generated during the user setup process. Note: Settings-based hardware mapping for video/audio devices has been deprecated in favor of dynamic CLI arguments (VxAy).
| Variable | Description |
|---|---|
VLXsuite_DIR |
Installation directory (default: /opt/VLX_FrameFlow). |
MEDIAMTX_DIR |
MediaMTX binary directory. |
| Variable | Description |
|---|---|
MLVPN_VPS_IP |
The remote server IP for MLVPN and Shadowsocks bonding. |
AP_PASSWORD |
WPA2 passphrase for the generated Access Point. Automatically generated if left empty. |
| Variable | Description |
|---|---|
SRT_URL |
Base SRT URL. Supports publish: StreamID auth. |
Example:
srt://10.1.10.1:8890?streamid=publish:stream_name:user:pass
| Variable | Description |
|---|---|
GPSPORT |
gpsd local port (default: 1198). |
API_URL |
Remote HTTP/HTTPS telemetry endpoint. |
AUTH_TOKEN |
Bearer token for API authentication. |
A cron job (@reboot) executes:
config/FrameFlow_maintenance.sh- Journal Cleanup: Vacuums
systemdjournals older than 15 days or larger than 500 MB. - Package Backup: Dumps the installed package list to
/root/pkg.list. - Cache Cleaning: Clears APT cache to conserve disk space.
The repository includes a suite of unit and integration tests located in the tests/ directory.
To run the tests:
# Make the test scripts executable (if not already)
chmod +x tests/*.sh
# Run the full test suite
bash -c 'for test in tests/*.sh; do bash $test; done'Tests cover critical functionality such as network profile creation, user setup, argument validation, and rollback procedures.
GNU General Public License v3.0