feat: Fleet Forge UEM - device management, agent, remote desktop (VNC), TLS reverse proxy

This commit is contained in:
Pepe44DEV
2026-09-06 22:09:28 +00:00
commit db16ad5cc1
154 changed files with 22920 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
FROM ubuntu:24.04
RUN apt-get update && \
apt-get install -y --no-install-recommends msitools wixl wixl-data && \
rm -rf /var/lib/apt/lists/*
+67
View File
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="Fleet Forge Agent"
Language="1033"
Version="__VERSION__"
Manufacturer="FleetForge"
UpgradeCode="A1B2C3D4-E5F6-7890-ABCD-EF1234567890">
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine"
Description="Fleet Forge Agent"
Comments="Fleet Forge endpoint management agent for Windows" />
<MajorUpgrade DowngradeErrorMessage="A newer version is already installed." />
<MediaTemplate EmbedCab="yes" />
<Feature Id="AgentFeature" Title="Fleet Forge Agent" Level="1">
<ComponentRef Id="AgentBinary" />
<ComponentRef Id="AgentConfig" />
</Feature>
<Icon Id="FleetForgeIcon" SourceFile="$(var.AgentBinaryPath)" />
<Property Id="ARPPRODUCTICON" Value="FleetForgeIcon" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="FleetForge">
<Component Id="AgentBinary" Guid="B1C2D3E4-F5A6-7890-BCDE-F12345678901" Win64="yes">
<File Id="AgentExe"
Source="$(var.AgentBinaryPath)"
KeyPath="yes"
Name="forge-agent.exe" />
<ServiceInstall Id="FleetForgeService"
Name="FleetForgeAgent"
DisplayName="Fleet Forge Agent"
Description="Fleet Forge endpoint management agent"
Start="auto"
Type="ownProcess"
ErrorControl="normal"
Interactive="no"
Account="NT AUTHORITY\SYSTEM"
Arguments="run --service" />
<ServiceControl Id="FleetForgeServiceControl"
Name="FleetForgeAgent"
Stop="both"
Remove="uninstall"
Wait="no" />
</Component>
</Directory>
</Directory>
<Directory Id="CommonAppDataFolder">
<Directory Id="FleetForgeDataFolder" Name="FleetForge">
<Component Id="AgentConfig" Guid="C2D3E4F5-A6B7-8901-CDEF-123456789012" Win64="yes">
<CreateFolder />
<File Id="ConfigJson"
Source="$(var.ConfigFilePath)"
KeyPath="yes"
Name="config.json" />
</Component>
</Directory>
</Directory>
</Directory>
</Product>
</Wix>
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DOCKER_IMAGE="fleetforge-wixl"
AGENT_BIN="${1:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
CONFIG_JSON="${2:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
VERSION="${3:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
OUTPUT="${4:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
if [ ! -f "$AGENT_BIN" ]; then
echo "Error: Agent binary not found: $AGENT_BIN" >&2
exit 1
fi
if [ ! -f "$CONFIG_JSON" ]; then
echo "Error: Config file not found: $CONFIG_JSON" >&2
exit 1
fi
if ! docker image inspect "$DOCKER_IMAGE" >/dev/null 2>&1; then
echo "Building wixl Docker image..."
docker build -t "$DOCKER_IMAGE" "$SCRIPT_DIR"
fi
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT
cp "$AGENT_BIN" "$TMPDIR/forge-agent.exe"
cp "$CONFIG_JSON" "$TMPDIR/config.json"
sed "s/__VERSION__/$VERSION/g" "$SCRIPT_DIR/agent.wxs" > "$TMPDIR/agent.wxs"
echo "Compiling MSI with wixl..."
docker run --rm \
-v "$TMPDIR:/work" \
"$DOCKER_IMAGE" \
wixl -o /work/output.msi \
-D "AgentBinaryPath=/work/forge-agent.exe" \
-D "ConfigFilePath=/work/config.json" \
/work/agent.wxs
cp "$TMPDIR/output.msi" "$OUTPUT"
echo "MSI generated: $OUTPUT ($(du -h "$OUTPUT" | cut -f1))"