Skip to main content

Installation

Get EdgeFlow running on your device in minutes.

EdgeFlow can be installed in multiple ways depending on your needs. From a simple one-line installer to building from source, choose the method that works best for your environment.

0

Raspberry Pi Preparation

Flash Raspberry Pi OS to your SD card before installing EdgeFlow

🍓
New to Raspberry Pi?

If your Pi doesn't have an operating system yet, follow these steps to get it ready. Already running Raspberry Pi OS? Skip to Quick Install.

What You'll Need

đŸ–Ĩī¸

Raspberry Pi

Pi 3, 4, 5, or Zero 2 W

Pi 4 (2GB+) recommended
💾

microSD Card

16GB or larger

Class 10 / A2 recommended
đŸ’ģ

Computer

Windows, macOS, or Linux

To flash the SD card
📡

Network

Ethernet or Wi-Fi

For SSH & EdgeFlow access

Step 1: Download Raspberry Pi Imager

Raspberry Pi Imager is the official tool to flash operating systems onto SD cards. Download it for your computer:

Step 2: Flash Raspberry Pi OS

1
Open Raspberry Pi Imager

Launch the Imager app you just installed.

2
Choose Device

Select your Raspberry Pi model (Pi 4, Pi 5, etc.).

3
Choose OS

Select Raspberry Pi OS (64-bit). For headless EdgeFlow deployments, choose Raspberry Pi OS Lite (64-bit) — no desktop environment, lower resource usage.

4
Configure Settings (Important!)

Click the gear icon or "Edit Settings" before flashing. Set these options:

  • Hostname: Set to edgeflow (or your preferred name)
  • Enable SSH: Check "Use password authentication" or add your public key
  • Username & Password: Set a secure username and password
  • Wi-Fi: Enter your SSID and password (skip if using Ethernet)
  • Locale: Set your timezone and keyboard layout
5
Flash the SD Card

Insert your microSD card, select it as the storage target, and click Write. Wait for the process to complete.

Step 3: Boot & Connect

Connect via SSH
# Insert the SD card into your Pi and power it on
# Wait ~60 seconds for first boot, then connect:

ssh pi@edgeflow.local

# Or use the IP address:
ssh pi@192.168.1.xxx
Tip: If edgeflow.local doesn't resolve, find your Pi's IP address from your router's admin page or use nmap -sn 192.168.1.0/24 to scan your network.

Step 4: Wi-Fi Configuration (if needed)

If you didn't configure Wi-Fi during the Raspberry Pi Imager setup, or need to connect to a different network, use nmtui — the built-in NetworkManager text UI. Raspberry Pi OS Bookworm and later uses NetworkManager for all network configuration.

Option A: nmtui (Interactive UI — Recommended)

Launch nmtui
sudo nmtui
1
Select "Activate a connection" and press Enter
2
Use arrow keys to find your Wi-Fi network (SSIDs are listed under the Wi-Fi section)
3
Select your network and press Enter — enter the password when prompted
4
A * appears next to the network name when connected. Press Esc twice to exit
Tip: nmtui can also set static IP addresses. Select "Edit a connection", choose your Wi-Fi, then configure IPv4 manually.

Option B: nmcli (Command Line)

Connect via command line
# List available Wi-Fi networks
sudo nmcli dev wifi list

# Connect to a network
sudo nmcli dev wifi connect "YourNetworkSSID" password "YourPassword"

# Verify connection
nmcli dev status

# Check your IP address
ip addr show wlan0

Troubleshooting Wi-Fi

Common fixes
# Check if Wi-Fi interface is up
nmcli radio wifi

# If Wi-Fi is disabled, enable it
sudo nmcli radio wifi on

# Restart NetworkManager if issues persist
sudo systemctl restart NetworkManager

# View saved connections
nmcli connection show

# Forget a saved network
sudo nmcli connection delete "YourNetworkSSID"
Note: Raspberry Pi OS Bookworm (and later) no longer uses wpa_supplicant or /etc/wpa_supplicant/wpa_supplicant.conf. All network configuration is now handled through NetworkManager (nmtui / nmcli). Old tutorials referencing wpa_supplicant or dhcpcd will not work on modern Raspberry Pi OS.
✓
Pi Ready!

Your Raspberry Pi is now running and accessible via SSH. Continue to Quick Install below to install EdgeFlow.

1

Quick Install

The fastest way to get EdgeFlow running on your Raspberry Pi or Linux system

One-Line Install
curl -fsSL https://edgx.cloud/install.sh | sudo bash

The installation script automatically handles everything:

🔍
Detects Platform

Identifies your OS and architecture (amd64, arm64, armv7)

đŸ“Ĩ
Downloads Binary

Gets the latest release from GitHub

👤
Creates User

Sets up a dedicated edgeflow system user

📁
Configures Directories

Creates /opt/edgeflow/data and /opt/edgeflow/logs

âš™ī¸
Installs Service

Sets up systemd with security hardening

â–ļī¸
Starts EdgeFlow

Enables and starts the service automatically

✓
Access EdgeFlow

After installation, open your browser and navigate to:

http://localhost:8080 or http://<your-device-ip>:8080 from another device
2

Docker Installation

Run EdgeFlow in a container for isolated, portable deployments

Quick Start with Docker Run

Basic Docker Run
docker run -d \
  --name edgeflow \
  -p 8080:8080 \
  -v edgeflow-data:/app/data \
  -v edgeflow-logs:/app/logs \
  edgeflow/edgeflow:latest

With GPIO Access (Raspberry Pi)

Docker with GPIO
docker run -d \
  --name edgeflow \
  -p 8080:8080 \
  -v edgeflow-data:/app/data \
  -v /sys:/sys \
  --privileged \
  --device /dev/gpiomem:/dev/gpiomem \
  --device /dev/i2c-1:/dev/i2c-1 \
  edgeflow/edgeflow:latest

Docker Compose (Recommended)

Create a docker-compose.yml file:

docker-compose.yml
version: '3.8'

services:
  edgeflow:
    image: edgeflow/edgeflow:latest
    container_name: edgeflow
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - edgeflow-data:/app/data
      - edgeflow-logs:/app/logs
    environment:
      - EDGEFLOW_SERVER_HOST=0.0.0.0
      - EDGEFLOW_SERVER_PORT=8080
      - EDGEFLOW_LOGGING_LEVEL=info
      - TZ=UTC
    healthcheck:
      test: ["CMD", "wget", "--spider", "http://localhost:8080/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  edgeflow-data:
  edgeflow-logs:

Start

docker compose up -d

View Logs

docker compose logs -f

Stop

docker compose down

Update

docker compose pull && docker compose up -d
â–ļ Production Docker Compose with PostgreSQL
docker-compose.prod.yml
version: '3.8'

services:
  edgeflow:
    image: edgeflow/edgeflow:latest
    container_name: edgeflow
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - edgeflow-data:/app/data
      - edgeflow-logs:/app/logs
    environment:
      - EDGEFLOW_DATABASE_DRIVER=postgres
      - EDGEFLOW_DATABASE_HOST=postgres
      - EDGEFLOW_DATABASE_PORT=5432
      - EDGEFLOW_DATABASE_USER=edgeflow
      - EDGEFLOW_DATABASE_PASSWORD=secret
      - EDGEFLOW_DATABASE_NAME=edgeflow
      - EDGEFLOW_SECURITY_ENABLED=true
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:15-alpine
    container_name: edgeflow-db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=edgeflow
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=edgeflow
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U edgeflow"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  edgeflow-data:
  edgeflow-logs:
  postgres-data:
3

Manual Installation

Download and install pre-built binaries for your platform

System Requirements

Requirement Minimum Recommended
OS Linux (Debian, Ubuntu, Raspberry Pi OS) Raspberry Pi OS 64-bit
RAM 512 MB 2 GB+
Storage 50 MB 1 GB+
Architecture amd64, arm64, armv7

Step 1: Install EdgeFlow

All Platforms (ARM64, AMD64, ARM)
curl -fsSL https://edgx.cloud/install.sh | sudo bash

The install script auto-detects your platform and installs the correct binary.

Step 2: Create Directories & Config

Setup Directories
# Create installation directory
sudo mkdir -p /opt/edgeflow/{data,logs,configs}

# Create default config
sudo cat > /opt/edgeflow/configs/default.yaml << 'EOF'
server:
  host: 0.0.0.0
  port: 8080

database:
  driver: sqlite
  path: /opt/edgeflow/data/edgeflow.db

logging:
  level: info
  format: json

engine:
  max_concurrent_executions: 100
  execution_timeout: 5m

hardware:
  gpio_enabled: false
  i2c_enabled: false
  spi_enabled: false

scheduler:
  enabled: true
  timezone: "UTC"
EOF

Step 3: Create System Service

Create systemd Service
# Create service file
sudo cat > /etc/systemd/system/edgeflow.service << 'EOF'
[Unit]
Description=EdgeFlow - Edge & IoT Automation Platform
After=network.target

[Service]
Type=simple
User=edgeflow
Group=edgeflow
WorkingDirectory=/opt/edgeflow
ExecStart=/usr/local/bin/edgeflow
Restart=on-failure
RestartSec=10s

# Security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/edgeflow/data /opt/edgeflow/logs

[Install]
WantedBy=multi-user.target
EOF

# Create system user
sudo useradd -r -s /bin/false -d /opt/edgeflow edgeflow

# Set permissions
sudo chown -R edgeflow:edgeflow /opt/edgeflow

# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable edgeflow
sudo systemctl start edgeflow

Step 4: Verify Installation

Verify
# Check service status
sudo systemctl status edgeflow

# View logs
sudo journalctl -u edgeflow -f

# Test the API
curl http://localhost:8080/api/health
4

Build from Source

Build EdgeFlow from source for custom configurations or development

Prerequisites

🔷

Go 1.21+

Required for building the backend

brew install go
đŸŸĸ

Node.js 18+

Required for building the frontend

brew install node
⚡

Make

Build automation tool

Usually pre-installed
📂

Git

For cloning the repository

apt install git

Clone and Build

The source repository will be available on GitHub once the first public release is published. For now, use the install script above.

Build Profiles

EdgeFlow supports different build profiles optimized for various hardware:

Profile Binary RAM Target Modules
minimal ~10 MB ~50 MB Pi Zero, BeagleBone core
standard ~20 MB ~200 MB Pi 3/4, Orange Pi core, network, gpio, database
full ~35 MB ~400 MB Pi 4/5, Jetson Nano all modules (including AI)
Build with Profile
# Build minimal (for Pi Zero)
make build PROFILE=minimal

# Build standard (default)
make build PROFILE=standard

# Build full (for Pi 4/5 with AI support)
make build PROFILE=full

# Cross-compile for Raspberry Pi
make build-pi-standard

Service Management

Common commands for managing the EdgeFlow service:

â–ļī¸

Start

sudo systemctl start edgeflow
âšī¸

Stop

sudo systemctl stop edgeflow
🔄

Restart

sudo systemctl restart edgeflow
📊

Status

sudo systemctl status edgeflow
📋

Live Logs

sudo journalctl -u edgeflow -f
🔧

Enable Boot

sudo systemctl enable edgeflow

Configuration

EdgeFlow can be configured via YAML file or environment variables:

â–ļ View Full Configuration Reference
/opt/edgeflow/configs/default.yaml
# Server settings
server:
  host: "0.0.0.0"
  port: 8080
  read_timeout: 30s
  write_timeout: 30s

# Database settings
database:
  driver: sqlite           # sqlite, postgres, mysql
  path: "./data/edgeflow.db"

# Logging settings
logging:
  level: info              # debug, info, warn, error
  format: json             # json, console
  output: stdout

# Engine settings
engine:
  max_concurrent_executions: 100
  execution_timeout: 5m
  retry_attempts: 3

# Security settings (enable in production)
security:
  enabled: false
  jwt_secret: "change-me-in-production"
  jwt_expiry: 24h

# Hardware settings (Raspberry Pi)
hardware:
  gpio_enabled: false
  i2c_enabled: false
  spi_enabled: false

# Scheduler settings
scheduler:
  enabled: true
  timezone: "UTC"

# Metrics settings
metrics:
  enabled: false
  prometheus_port: 9090

Environment Variables

All settings can be overridden via environment variables (prefix: EDGEFLOW_):

Environment Variables
EDGEFLOW_SERVER_PORT=8080
EDGEFLOW_DATABASE_DRIVER=sqlite
EDGEFLOW_LOGGING_LEVEL=info
EDGEFLOW_SECURITY_ENABLED=true
EDGEFLOW_HARDWARE_GPIO_ENABLED=true
â–ļ Uninstall EdgeFlow
Warning: This will remove EdgeFlow and all its data. Make sure to backup your flows first!
Uninstall Commands
# Stop and disable service
sudo systemctl stop edgeflow
sudo systemctl disable edgeflow

# Remove service file
sudo rm /etc/systemd/system/edgeflow.service
sudo systemctl daemon-reload

# Remove binary
sudo rm /usr/local/bin/edgeflow

# Remove data (optional - will delete all flows!)
sudo rm -rf /opt/edgeflow

# Remove user
sudo userdel edgeflow