How to Deploy the IPED Application: Build, Configure, and Launch Modes Explained
Deploy the IPED application by building the Maven project with mvn clean install, then execute one of three launch modes: the full graphical UI via iped.app.bootstrap.Bootstrap, the lightweight search UI via iped.app.bootstrap.BootstrapUI, or the HTTP web API via iped.engine.webapi.Main. The resulting target/release directory creates a portable, self-contained deployment that requires no system-wide installation according to the sepinf-inc/IPED source code.
Prerequisites for Building IPED
Before you can deploy the IPED application, verify your environment meets these requirements:
- Java Development Kit 11 with JavaFX support (e.g., Liberica OpenJDK 11 Full)
- Apache Maven (3.6+ recommended)
- Git for cloning the repository
- Sufficient RAM: The bootstrap logic automatically calculates heap size based on physical memory, but at least 8 GB system RAM is recommended for production cases
Ensure JAVA_HOME points to your JDK 11 installation, as the Maven build compiles against Java 11 bytecode targets defined in the parent pom.xml.
Building IPED from Source
IPED uses Maven for dependency management and packaging. The build process assembles a portable release directory containing all necessary JARs, native libraries, and an optional bundled JRE.
Clone the repository and invoke the install goal:
git clone https://github.com/sepinf-inc/IPED.git
cd IPED
mvn clean install
Upon completion, Maven creates target/release/iped-<version>/ (for example, iped-4.4.0-SNAPSHOT). This directory contains:
iped.jar– Launcher for the full graphical interfacelib/– All dependency JARs including SleuthKit bindingsjre/– Optional bundled JRE 11.0.13 (Windows deployments)tools/,plugins/, and configuration directories
Deployment Modes and Execution
The IPED application supports three distinct runtime modes, each with dedicated entry points in the source tree.
Full Graphical UI via Bootstrap
The primary deployment mode launches a Swing-based forensic workbench. In iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java, the main(String[] args) method performs these steps:
- Detects the case root directory and
lib/folder relative toiped.jar - Constructs a custom classpath including
iped.jar, SleuthKit JAR, and plugin directories - Calculates heap size (
-Xmx) as 25% of physical RAM (or 50% for search-only mode) - Spawns a new Java process forwarding STDIO/STDERR to
iped.app.ui.AppMain
Execute the full UI from the release directory:
cd target/release/iped-4.4.0-SNAPSHOT
java -cp iped.jar:lib/* iped.app.bootstrap.Bootstrap /path/to/case
Omit the case argument to let the bootstrap auto-detect the working directory. Additional CLI options processed by CmdLineArgsImpl include -multicases <file> for batch processing and --nologfile to suppress case directory logging.
Search-Only UI via BootstrapUI
For lightweight case analysis without the full processing pipeline, deploy the search-only interface using iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java. This launcher:
- Uses
iped-search-app.jarinstead ofiped.jar - Allocates 50% of physical RAM to heap (higher than the default 25%)
- Delegates to
AppMainbut initializes fewer UI components
Launch command:
java -cp lib/iped-search-app.jar:lib/* iped.app.bootstrap.BootstrapUI /path/to/case
Web API Server via Main
Deploy IPED as a headless HTTP server by invoking iped-engine/src/main/java/iped/engine/webapi/Main.java. This entry point exposes REST endpoints for remote case querying, file retrieval, and bookmark management.
Start the web API with explicit port and configuration:
java -cp lib/iped-webapi.jar:lib/* iped.engine.webapi.Main \
-p 8080 \
-c /path/to/case/config
The Main class invokes Configuration.getInstance().loadConfigurables to initialize the same backend used by the desktop application, ensuring consistent behavior across deployment modes.
Windows Portable Deployment with Bundled JRE
IPED supports zero-installation deployment on Windows through a bundled JRE mechanism. When analysisConfig.getCopyJREToUserHome() returns true (controlled via configuration), the copyBundledJREToHome method in Bootstrap.java silently copies jre/ to ~/.iped/jre-11.0.13.
This allows execution on machines without a pre-installed Java runtime. Use Windows batch syntax for classpath separation:
cd C:\iped-4.4.0-SNAPSHOT
set JAVA_HOME=%USERPROFILE%\.iped\jre-11.0.13
java -cp iped.jar;lib\* iped.app.bootstrap.Bootstrap C:\cases\evidence
The portable structure means you can zip the entire target/release/iped-<version> folder, distribute it to forensic workstations, and launch immediately without registry modifications or system PATH updates.
Key Source Files and Classpath Construction
Understanding the deployment architecture requires examining these specific source files:
iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java– Constructs the dynamic classpath, handles JRE bundling logic, and manages process spawning with calculated heap argumentsiped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java– Lightweight variant for search-only deployments with adjusted memory ratiosiped-app/src/main/java/iped/app/ui/AppMain.java– Receives control from bootstrap classes to initialize logging, loadIPEDConfig.txt, and render the Swing interfaceiped-engine/src/main/java/iped/engine/webapi/Main.java– Jetty-based HTTP server initialization for REST API deployments
The bootstrap classes explicitly exclude the system classpath (-cp overrides defaults), ensuring consistent dependency resolution from the lib/ directory regardless of host environment variables.
Summary
- Build once: Run
mvn clean installto generate a portable release undertarget/release/iped-<version> - Three entry points: Use
Bootstrapfor full UI,BootstrapUIfor search-only, andiped.engine.webapi.Mainfor HTTP API - Classpath isolation: All modes rely on manual classpath construction in
Bootstrap.javarather than system Java settings - Windows flexibility: The bundled JRE mechanism copies Java 11.0.13 to the user home directory when enabled
- Memory management: Heap sizes auto-calculate based on physical RAM (25% default, 50% for search UI)
- Zero installation: The release directory is self-contained; deploy by copying files and executing the appropriate launcher
Frequently Asked Questions
What Java version is required to deploy IPED?
IPED requires Java 11 with JavaFX modules. The build system enforces this via the Maven compiler plugin in the parent pom.xml, and runtime checks in Bootstrap.java validate the JVM version before launching. Liberica OpenJDK 11 Full is recommended because it bundles JavaFX, though any JDK 11 with JavaFX suffices.
How do I run IPED on Windows without installing Java?
Enable the bundled JRE feature by setting copyJREToUserHome=true in your configuration, or manually copy the jre/ folder from the release directory to %USERPROFILE%\.iped\jre-11.0.13. The Bootstrap.java logic detects this path when JAVA_HOME is unset, allowing the application to run on clean Windows systems without a global Java installation.
What is the difference between Bootstrap and BootstrapUI?
Bootstrap (iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java) launches the complete forensic workbench with processing capabilities, plugins, and full UI components. BootstrapUI (iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java) initializes a reduced environment optimized for search and analysis only, using iped-search-app.jar instead of iped.jar and allocating 50% of system RAM rather than 25%.
Can I deploy IPED as a headless server?
Yes. Deploy the web API mode by executing java -cp lib/iped-webapi.jar:lib/* iped.engine.webapi.Main -p <port>. This starts an HTTP server without Swing components, suitable for containerized deployments or remote forensic infrastructure. The Main class loads the same configuration layer as the desktop application, ensuring compatible case handling across deployment modes.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →