# Installation

### Overview

This document describes the full installation process of an EPIZO node, including system preparation, execution, and internal setup behavior.

The installation process is designed to:

* Be fully automated
* Require minimal user interaction
* Produce a ready-to-run offline node

***

### Installation Modes

#### 1. Full System Installation (Recommended)

* Installs all dependencies
* Configures services
* Prepares storage
* Launches node

#### 2. Development Installation

* Runs only the admin panel
* No orchestration or service setup

***

## 🖥️ System Preparation

### Supported Operating Systems

* Ubuntu (recommended)
* Debian
* Other Debian-based distributions (experimental)

***

### Required Permissions

* Root or sudo privileges
* Temporary internet access

***

## ⚙️ Environment Setup (Ubuntu)

This section prepares a **clean Ubuntu system** for EPIZO deployment.

***

### 1. Update System

```bash
sudo apt update && sudo apt upgrade -y
```

***

### 2. Install Base Utilities

```bash
sudo apt install -y curl wget git build-essential
```

***

### 3. Install Desktop Environment (Optional)

If you are running a **server or minimal Ubuntu**, you may install GNOME for a graphical interface.

#### Install GNOME

```bash
sudo apt install -y ubuntu-desktop
```

#### Reboot

```bash
sudo reboot
```

👉 After reboot, you will have:

* Full desktop UI
* Browser access for Command Center

***

### 4. Install Docker (Recommended)

EPIZO relies on containerized services. Docker is required for full functionality.

#### Remove old versions (if any)

```bash
sudo apt remove -y docker docker-engine docker.io containerd runc
```

***

#### Install dependencies

```bash
sudo apt install -y ca-certificates curl gnupg lsb-release
```

***

#### Add Docker GPG key

```bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

***

#### Add Docker repository

```bash
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

***

#### Install Docker Engine

```bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

***

#### Enable Docker

```bash
sudo systemctl enable docker
sudo systemctl start docker
```

***

#### (Optional) Run Docker without sudo

```bash
sudo usermod -aG docker $USER
```

Then log out and log back in.

***

#### Verify Docker

```bash
docker --version
docker run hello-world
```

***

### 5. (Optional) Install Node.js (Dev Mode Only)

Required only if running the admin panel manually:

```bash
sudo apt install -y nodejs npm
```

***

## 🚀 Installation Command

Run the EPIZO installer:

```bash
sudo apt-get update && \
sudo apt-get install -y curl && \
curl -fsSL https://raw.githubusercontent.com/Project-Epizo/project_epizo_main/main/install/install_epizo.sh \
  -o install_epizo.sh && \
sudo bash install_epizo.sh
```

***

## ⚙️ Installation Pipeline (Internal Behavior)

The install script performs:

***

### 1. Environment Setup

* Updates package index
* Installs required packages
* Verifies system compatibility

***

### 2. Dependency Installation

* Node.js runtime
* Docker (if not already installed)
* System utilities

***

### 3. Directory Initialization

```bash
/opt/epizo/
├── services/
├── storage/
├── config/
```

***

### 4. Service Deployment

* AI runtime (Ollama or compatible)
* Knowledge service (Kiwix)
* Map service
* Supporting services

***

### 5. Command Center Deployment

* Installs admin interface
* Binds to port `8080`

***

### 6. Service Bootstrapping

* Starts all services
* Registers providers
* Verifies health

***

## 📡 Installation Output

After completion:

* Node is running
* Services are active
* UI is accessible

***

## ✅ Verifying Installation

Check service:

```bash
curl http://localhost:8080
```

Expected:

* HTTP response (UI or JSON)

***

## 🔁 Reinstallation / Recovery

To reinstall:

1. Stop services
2. Remove installation directory:

   ```bash
   sudo rm -rf /opt/epizo
   ```
3. Re-run install script

***

## ⚠️ Notes

* Installation is idempotent (safe to retry)
* Requires internet only during install
* Designed for reproducibility
* Docker is strongly recommended for stability

***

## 🧠 Deployment Guidance

* Headless systems → skip GNOME
* Server deployments → use Docker + SSH
* Desktop usage → install GNOME for ease

***

## 🎯 Result

After installation:

* EPIZO runs as a **self-contained offline node**
* All services are locally available
* System is ready for content installation and use


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.projectepizo.com/installing/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
