Installation

GAGOS can be installed using Docker, Kubernetes, or built from source. Choose the method that best fits your environment.

Docker

The simplest way to run GAGOS is with Docker:

# Generate a secure password
export GAGOS_PASSWORD=$(openssl rand -base64 12)
echo "Password: $GAGOS_PASSWORD"

# Run GAGOS
docker run -d --name gagos -p 8080:8080 \
  -e GAGOS_PASSWORD="$GAGOS_PASSWORD" \
  -e GAGOS_RUNTIME=docker \
  --cap-add=NET_RAW \
  gagos:latest

# Access at http://localhost:8080

Docker Compose

# docker-compose.yml
version: '3.8'
services:
  gagos:
    image: gagos:latest
    ports:
      - "8080:8080"
    environment:
      - GAGOS_PASSWORD=${GAGOS_PASSWORD}
      - GAGOS_RUNTIME=docker
    cap_add:
      - NET_RAW
    restart: unless-stopped

Run with:

export GAGOS_PASSWORD=$(openssl rand -base64 12)
docker-compose up -d

Retrieve Password Later

docker exec gagos printenv GAGOS_PASSWORD

Kubernetes

Quick Deploy (All-in-One)

# Deploy GAGOS
kubectl apply -f https://raw.githubusercontent.com/gaga951/gagos/main/deploy/kubernetes/gagos-all-in-one.yaml

# Wait for pod to be ready
kubectl wait --for=condition=ready pod -l app=gagos -n gagos --timeout=60s

# Get password
kubectl get secret gagos-auth -n gagos -o jsonpath='{.data.password}' | base64 -d

# Port forward to access
kubectl port-forward -n gagos svc/gagos 8080:8080

Helm Installation

# Add Helm repo (if published)
helm repo add gagos https://gaga951.github.io/gagos/charts

# Install
helm install gagos gagos/gagos -n gagos --create-namespace

# Or from local chart
helm install gagos ./charts/gagos -n gagos --create-namespace

Custom Values

# values.yaml
replicaCount: 1
image:
  repository: gagos
  tag: latest

service:
  type: NodePort
  port: 8080
  nodePort: 30880

resources:
  limits:
    cpu: 500m
    memory: 512Mi
  requests:
    cpu: 100m
    memory: 128Mi

# Enable ingress
ingress:
  enabled: true
  host: gagos.example.com

Retrieve Password (Kubernetes)

kubectl get secret gagos-auth -n gagos -o jsonpath='{.data.password}' | base64 -d

Build from Source

Prerequisites

Clone and Build

# Clone repository
git clone https://github.com/gaga951/gagos.git
cd gagos

# Build binary
go build -o gagos ./cmd/gagos

# Or build Docker image
docker build -f deploy/docker/Dockerfile -t gagos:latest \
  --build-arg VERSION=$(git describe --tags --always) \
  --build-arg BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ) .

Run Binary

export GAGOS_PASSWORD="your-secure-password"
./gagos

Requirements

Capabilities

For network tools (ping, traceroute) to work, GAGOS needs the NET_RAW capability:

Kubernetes Access

For Kubernetes features to work when running in a cluster:

The all-in-one manifest includes a ClusterRole with full read/write access to common resources.

Verification

After installation, verify GAGOS is running:

# Check health endpoint
curl http://localhost:8080/api/health

# Expected response:
{"status":"ok"}

Then open http://localhost:8080 in your browser.

Next Steps