# Air-Gapped Environment Adaptation This document summarizes the adaptations made to the Qt6 framework Dockerfile for air-gapped environments. ## Key Changes from Public to Air-Gapped Environment ### 1. Repository Configuration - **Before**: Default Ubuntu repositories - **After**: Internal Nexus repositories - APT: `http://remote-repo.sl.defence-elec.de:8081/repository/ubuntu` - PyPI: `http://remote-repo.sl.defence-elec.de:8081/repository/proxypipy/` ### 2. Proxy Configuration ```bash http_proxy="http://10.198.80.130:3128" no_proxy="localhost,127.0.0.1,defence-elec.de,.defence-elec.de,sl.defence-elec.de,10.198.80.0/23,192.168.133.0/24,141.200.0.0/16,10.184.0.0/15,10.199.101.35,10.199.101.36,10.199.101.158" ``` ### 3. Security Infrastructure - CA certificates installed from `http://10.198.80.75/rme/SL-Netz.crt` - APT signing keys from `http://10.198.80.75/rme/deb_and_rpm_signage_key.pub` ### 4. User Management - User `ctc` (uid 1445, gid 1445) with home `/shd/CTC/TOOLS` - User `rme` (uid 1001, gid 1001) with home `/home/rme` ### 5. Base Image - **Before**: `ubuntu:26.04` - **After**: `harbor.sl.defence-elec.de/proxydockerhub/library/ubuntu:26.04` ### 6. Python Environment - Uses Python virtual environment (`/opt/venv`) instead of system pip - Prevents conflicts with system packages - Ensures reproducible aqtinstall version ### 7. Runtime Mount Points - ArcGIS SDK: `/opt/ArcGIS/MapsSDK_Qt_300.0.0` (via `ARCGIS_SDK_ROOT`) - RTI Connext DDS: `/opt/RTI` (via `DDS_PATH`) ## Build Instructions ### Standard Build ```bash docker build -t legatus-qt6-framework:6.10.2 \ --build-arg RME_USERPASS=your_password \ external-dependencies/qt6-framework/ ``` ### Air-Gapped Build with Proxy ```bash docker build -t legatus-qt6-framework:6.10.2 \ --build-arg RME_USERPASS=your_password \ --build-arg http_proxy="http://10.198.80.130:3128" \ --build-arg https_proxy="http://10.198.80.130:3128" \ external-dependencies/qt6-framework/ ``` ### Runtime Usage ```bash docker run -it \ -v /path/to/ArcGIS:/opt/ArcGIS \ -v /path/to/rti:/opt/RTI \ legatus-qt6-framework:6.10.2 ``` ## Verification After building, verify the installation: ```bash docker run --rm legatus-qt6-framework:6.10.2 qmake6 --version docker run --rm legatus-qt6-framework:6.10.2 cmake --find-package \ -DNAME=Qt6 -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST ``` ## Security Considerations 1. **Password Management**: Use Docker secrets or environment variables for `RME_USERPASS` 2. **Certificate Validation**: Ensure CA certificates are valid and up-to-date 3. **Network Isolation**: Container runs as non-root user `ctc` 4. **SBOM Generation**: Run `generate-sbom.sh` after build for compliance ## Related Files - `Dockerfile` - Main Dockerfile with air-gapped configuration - `Jenkinsfile` - CI/CD pipeline with SBOM generation - `README.md` - Usage documentation - `../scripts/generate-sbom.sh` - SBOM generation script