Docs

Doc / build-linux



Build OmniEdge for Linux

OmniEdge v2.x is built with Rust. This guide covers building both the CLI and Desktop applications on Linux.

Supported Distributions

  • Ubuntu 22.04, 24.04
  • Debian 11, 12
  • Fedora 38, 39, 40
  • Arch Linux / Manjaro
  • openSUSE Tumbleweed

Prerequisites

Install Rust Toolchain

# Install Rust (1.70+ required)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Verify
rustc --version  # Should be 1.70+

System Dependencies

Ubuntu / Debian

sudo apt update
sudo apt install -y \
    build-essential \
    pkg-config \
    libssl-dev \
    libgtk-3-dev \
    libwebkit2gtk-4.1-dev \
    libayatana-appindicator3-dev \
    librsvg2-dev

Fedora

sudo dnf install -y \
    gcc gcc-c++ \
    openssl-devel \
    gtk3-devel \
    webkit2gtk4.1-devel \
    libayatana-appindicator-gtk3-devel \
    librsvg2-devel

Arch Linux / Manjaro

sudo pacman -S --needed \
    base-devel \
    openssl \
    gtk3 \
    webkit2gtk-4.1 \
    libayatana-appindicator \
    librsvg

openSUSE

sudo zypper install -y \
    gcc gcc-c++ \
    libopenssl-devel \
    gtk3-devel \
    webkit2gtk3-devel \
    libayatana-appindicator3-devel \
    librsvg-devel

Build CLI

Clone and Build

git clone https://github.com/omniedgeio/omniedge.git
cd omniedge

# Build CLI in release mode
cargo build --release -p omni-cli

# Binary location
ls -la target/release/omniedge

Install CLI

# Install to /usr/local/bin
sudo cp target/release/omniedge /usr/local/bin/

# Verify
omniedge --version

Build Helper Service

The helper service runs with elevated privileges to manage the TUN interface:

cargo build --release -p omni-helper

# Install helper
sudo cp target/release/omni-helper /usr/local/bin/

Build Desktop Application

Additional Prerequisites

# Install Node.js 18+ (via nvm recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20

# Verify
node --version  # Should be 18+
npm --version

Build Desktop

cd apps/desktop

# Install npm dependencies
npm install

# Build Tauri app (creates .deb, .rpm, .AppImage)
npm run tauri build

Build Output

Installers are created in apps/desktop/src-tauri/target/release/bundle/:

FormatLocation
DEBbundle/deb/omniedge-desktop_*.deb
RPMbundle/rpm/omniedge-desktop-*.rpm
AppImagebundle/appimage/omniedge-desktop_*.AppImage

Install Desktop

# Debian/Ubuntu
sudo dpkg -i apps/desktop/src-tauri/target/release/bundle/deb/omniedge-desktop_*.deb

# Fedora/RHEL
sudo rpm -i apps/desktop/src-tauri/target/release/bundle/rpm/omniedge-desktop-*.rpm

# AppImage (no install needed)
chmod +x apps/desktop/src-tauri/target/release/bundle/appimage/omniedge-desktop_*.AppImage
./apps/desktop/src-tauri/target/release/bundle/appimage/omniedge-desktop_*.AppImage

Development Mode

CLI Development

# Run CLI in debug mode
cargo run -p omni-cli -- --help

# Run with arguments
cargo run -p omni-cli -- status

Desktop Development

cd apps/desktop

# Start development server with hot reload
npm run tauri dev

Testing

# Run all tests
cargo test

# Run specific crate tests
cargo test -p omni-cli
cargo test -p omni-tun

Build Options

Debug Build

# Faster compilation, larger binary, debug symbols
cargo build -p omni-cli

Release Build with LTO

# Smaller binary, longer compile time
CARGO_PROFILE_RELEASE_LTO=true cargo build --release -p omni-cli

Static Build (musl)

# Add musl target
rustup target add x86_64-unknown-linux-musl

# Build static binary
cargo build --release -p omni-cli --target x86_64-unknown-linux-musl

Troubleshooting

Missing webkit2gtk

If you see errors about webkit2gtk-4.1, install the correct package:

# Ubuntu 22.04+
sudo apt install libwebkit2gtk-4.1-dev

# Older systems may need 4.0
sudo apt install libwebkit2gtk-4.0-dev

Permission Denied for TUN

The helper service requires root privileges. Run with sudo:

sudo omniedge start

If you have more questions, feel free to discuss.

On This Page

OmniEdge

© 2026 OmniEdge Inc. All rights reserved

Built by a global remote team.

TwitterGithubDiscord