Offline Installation¶
Deploy Flex Video in air-gapped environments using the self-extracting installer.
Overview¶
The offline installer packages all Docker images into a single executable script that:
- Extracts and loads Docker images
- Creates configuration files
- Sets up udev rules for camera hot-plug
- Configures and starts services
Requirements¶
- 64-bit Linux system (Raspberry Pi OS 64-bit, Debian, Ubuntu, etc.)
- ARM64 or x86_64 architecture
- Docker Engine 23.0 or newer with Docker Compose V2 (install guide)
- Root access (sudo)
- 2 GB free disk space for extraction
x86_64 Support (Experimental)
x86_64 installers are available for Intel (10th gen+) and AMD systems. This platform is currently experimental. Contact support@blackwire-ts.com for access and support.
Download¶
Download the installer from the Blackwire download portal:
- Visit flex.blackwire-ts.com in your web browser
- Authenticate with your credentials (MFA required)
- Click the download link in the upper right of the page
- Transfer the file to your target device via SSH, USB drive, or other method
Download via Web Browser
The download portal is protected by Cloudflare Access and requires multi-factor authentication. Downloads must be performed through a web browser—command-line tools like curl or wget will not work.
After downloading, make the installer executable:
Installation¶
Basic Install¶
# ARM64 (Raspberry Pi, NXP i.MX8, etc.)
sudo ./flex-video-installer-arm64.sh
# x86_64 (Intel/AMD)
sudo ./flex-video-installer-amd64.sh
This installs to /opt/flex by default.
Custom Directory¶
sudo ./flex-video-installer-arm64.sh -d /custom/path
# or
sudo ./flex-video-installer-amd64.sh -d /custom/path
Installation Steps¶
The installer performs these steps:
- Validates prerequisites - Checks Docker and disk space
- Extracts images - Unpacks Docker images from the archive
- Loads images - Imports images into Docker
- Creates configuration - Writes docker-compose.yml and .env
- Generates TLS certificate - Creates a self-signed certificate at
/opt/flex/certs/for HTTPS - Sets up udev rules - Configures camera hot-plug
- Creates /video directory - For local file playback
- Starts services - Brings up all containers
Post-Installation¶
Verify Installation¶
# Check services
docker compose -f /opt/flex/docker-compose.yml ps
# Test API
curl -k https://<encoder-ip>:3539/flex/health
Access Web Interface¶
Open https://
Self-Signed Certificate
The installer generates a self-signed TLS certificate. Your browser will show a certificate warning on first visit -- this is expected. Accept the warning to proceed.
Encoder IP
Replace <encoder-ip> with your encoder's IP address.
Installer Commands¶
The installer script doubles as a management tool. All commands require sudo.
Command Reference¶
| Command | Description |
|---|---|
--help or -h | Show help message with all options |
--start | Start Flex Video containers |
--stop | Stop Flex Video containers |
--logs | View container logs |
--uninstall or -u | Uninstall Flex Video (prompts to keep or remove data) |
--reset-password | Reset password (disables password authentication) |
Installation Options¶
These flags are used during installation:
| Option | Description |
|---|---|
-d DIR or --dir DIR | Install to a custom directory (default: /opt/flex) |
--swagger | Enable Swagger UI API documentation (port 38081) |
--no-swagger | Disable Swagger UI (default, skips prompt) |
--web-ui | Enable the web UI (skips prompt) |
--no-web-ui | Disable the web UI (for OpenWrt/LuCI systems, skips prompt) |
--skip-load | Extract files only without loading Docker images |
Examples¶
# Start services
sudo /opt/flex/flex-video-installer-*.sh --start
# Stop services
sudo /opt/flex/flex-video-installer-*.sh --stop
# View logs
sudo /opt/flex/flex-video-installer-*.sh --logs
# Check container status
cd /opt/flex && docker compose ps
Updating¶
Patch Updates (Safe)¶
Updates within the same major.minor version (e.g., 0.10.2 → 0.10.3) are safe to apply directly:
# Use the installer matching your architecture
sudo ./flex-video-installer-0.10.3-arm64.sh # ARM64
sudo ./flex-video-installer-0.10.3-amd64.sh # x86_64
The installer automatically:
- Detects the existing installation
- Stops running containers
- Loads new Docker images
- Cleans up old image versions
- Restarts containers (if they were running)
- Preserves configuration and data volumes
Minor/Major Updates (Recommended: Clean Install)¶
For updates across minor or major versions (e.g., 0.9.x → 0.10.x or 1.x.x), a clean install with volume preservation is recommended:
# 1. Uninstall but KEEP volumes when prompted
sudo /opt/flex/flex-video-installer-*.sh --uninstall
# Answer "N" to "Remove volume data?" prompt
# 2. Install new version
sudo ./flex-video-installer-NEW-VERSION-arm64.sh
This ensures:
- Clean slate for container configuration
- Data volumes (license, framegrabs, settings) are preserved
- No conflicts from old configuration files
Version Compatibility¶
| Update Type | Example | Method |
|---|---|---|
| Patch (0.9.0 → 0.9.1) | Bug fixes | Run installer directly |
| Minor (0.9.x → 0.10.x) | New features | Uninstall (keep volumes) + install |
| Major (0.x → 1.x) | Breaking changes | Uninstall (keep volumes) + install |
Check Current Version
View your installed version at Settings in the web UI or via the API:
Uninstallation¶
Full Uninstall¶
This removes:
- All Flex Video Docker images
- Installation directory
- udev rules
Preserve Data¶
The uninstaller asks whether to remove Docker volumes. Choose "No" to preserve:
- License data
- Framegrabs
- Settings
Configuration¶
Environment File¶
The installer creates /opt/flex/.env with auto-generated configuration and user-configurable settings:
# Hardware decoding (auto-configured by installer based on detected platform)
# Set to 'false' to enable hardware-accelerated decoding on supported platforms.
# Supported: Raspberry Pi, NXP i.MX8M Plus, Intel/AMD x86_64 (VAAPI)
FLEX_FORCE_SW_DECODERS=true
On supported platforms (Raspberry Pi, NXP i.MX8M Plus, Intel/AMD x86_64 with VAAPI), the installer automatically sets this to false and configures device passthrough. Avoid manually editing other auto-generated values.
Docker Compose¶
Edit /opt/flex/docker-compose.yml to customize:
- Port mappings
- Volume mounts
- Resource limits
- Hardware acceleration
Platform-Specific Notes¶
OpenWrt¶
On OpenWrt systems, the installer detects the platform and offers to skip the standalone Flex Manager web UI since the same interface is available through LuCI.
When prompted:
- No (default) — Skips the web UI container, saving resources. Use LuCI to manage Flex Video.
- Yes — Installs the web UI at
https://<encoder-ip>:8443alongside LuCI.
You can also set this via CLI flags:
# Skip the web UI (use LuCI)
sudo ./flex-video-installer-arm64.sh --no-web-ui
# Include the web UI
sudo ./flex-video-installer-arm64.sh --web-ui
The choice is saved and preserved across upgrades.
Raspberry Pi¶
Works out of the box. For camera support, ensure:
NVIDIA Jetson¶
The installer automatically detects Jetson hardware (Orin, Xavier) and enables hardware-accelerated video encoding and decoding via V4L2. No additional configuration is required -- no nvidia-container-toolkit needed for video codecs.
Troubleshooting¶
Extraction Failed¶
# Check disk space
df -h
# Extract without loading images to inspect contents
sudo ./flex-video-installer-*.sh --skip-load
Docker Not Found¶
Install Docker following the official guide for your operating system:
See Requirements for details.