From 49f31a3840593d4267a47e4c60b529cd93313051 Mon Sep 17 00:00:00 2001 From: Torsten Wierschin Date: Thu, 5 Nov 2026 17:33:05 +0000 Subject: [PATCH] Add air-gap adaptation documentation for Qt6 framework - Document key changes from public to air-gapped environment - Include build instructions with proxy configuration - Add verification commands and security considerations - Reference related files and SBOM generation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M6PCAZ0X5197XH30FG4FXHRE --- .../qt6-framework/AIRGAP-ADAPTATION.md | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 external-dependencies/qt6-framework/AIRGAP-ADAPTATION.md diff --git a/external-dependencies/qt6-framework/AIRGAP-ADAPTATION.md b/external-dependencies/qt6-framework/AIRGAP-ADAPTATION.md new file mode 100644 index 000000000..c3011978e --- /dev/null +++ b/external-dependencies/qt6-framework/AIRGAP-ADAPTATION.md @@ -0,0 +1,87 @@ +# 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