# How to Deploy the IPED Application: Build, Configure, and Launch Modes Explained

> Deploy the IPED application easily with our guide. Learn to build, configure, and launch IPED using its UI or web API for a portable, self-contained application.

- Repository: [Serviço de Perícias em Informática/IPED](https://github.com/sepinf-inc/IPED)
- Tags: how-to-guide
- Published: 2026-03-11

---

**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`](https://github.com/sepinf-inc/IPED/blob/main/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:

```bash
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 interface
- `lib/` – All dependency JARs including SleuthKit bindings
- `jre/` – 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`](https://github.com/sepinf-inc/IPED/blob/main/iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java), the `main(String[] args)` method performs these steps:

1. Detects the case root directory and `lib/` folder relative to `iped.jar`
2. Constructs a custom classpath including `iped.jar`, SleuthKit JAR, and plugin directories
3. Calculates heap size (`-Xmx`) as 25% of physical RAM (or 50% for search-only mode)
4. Spawns a new Java process forwarding STDIO/STDERR to `iped.app.ui.AppMain`

Execute the full UI from the release directory:

```bash
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`](https://github.com/sepinf-inc/IPED/blob/main/iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java). This launcher:

- Uses `iped-search-app.jar` instead of `iped.jar`
- Allocates 50% of physical RAM to heap (higher than the default 25%)
- Delegates to `AppMain` but initializes fewer UI components

Launch command:

```bash
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`](https://github.com/sepinf-inc/IPED/blob/main/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:

```bash
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`](https://github.com/sepinf-inc/IPED/blob/main/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:

```batch
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`](https://github.com/sepinf-inc/IPED/blob/main/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 arguments
- [`iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java`](https://github.com/sepinf-inc/IPED/blob/main/iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java) – Lightweight variant for search-only deployments with adjusted memory ratios
- [`iped-app/src/main/java/iped/app/ui/AppMain.java`](https://github.com/sepinf-inc/IPED/blob/main/iped-app/src/main/java/iped/app/ui/AppMain.java) – Receives control from bootstrap classes to initialize logging, load [`IPEDConfig.txt`](https://github.com/sepinf-inc/IPED/blob/main/IPEDConfig.txt), and render the Swing interface
- [`iped-engine/src/main/java/iped/engine/webapi/Main.java`](https://github.com/sepinf-inc/IPED/blob/main/iped-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 install` to generate a portable release under `target/release/iped-<version>`
- **Three entry points**: Use `Bootstrap` for full UI, `BootstrapUI` for search-only, and `iped.engine.webapi.Main` for HTTP API
- **Classpath isolation**: All modes rely on manual classpath construction in [`Bootstrap.java`](https://github.com/sepinf-inc/IPED/blob/main/Bootstrap.java) rather 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`](https://github.com/sepinf-inc/IPED/blob/main/pom.xml), and runtime checks in [`Bootstrap.java`](https://github.com/sepinf-inc/IPED/blob/main/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`](https://github.com/sepinf-inc/IPED/blob/main/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`](https://github.com/sepinf-inc/IPED/blob/main/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`](https://github.com/sepinf-inc/IPED/blob/main/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.