Pular para o conteúdo principal

Primeiros Passos

Este guia cobre instalação, build a partir do código fonte e execução do edgeProxy localmente.

Pré-requisitos

Obrigatórios

Opcionais

  • Docker & Docker Compose - Para deployment containerizado
GeoIP Incluído

O banco de dados MaxMind GeoLite2 está embeddado no binário - nenhum download externo necessário.

Instalação

A partir do Código Fonte

# Clone o repositório
git clone https://github.com/andrebassi/edgeproxy.git
cd edgeproxy

# Build do binário release
task build:release

# Verificar instalação
./target/release/edge-proxy --help

Usando Docker

# Build da imagem Docker
task docker:build

# Iniciar ambiente multi-região
task docker:up

Estrutura do Projeto

O edgeProxy usa Arquitetura Hexagonal (Ports & Adapters):

Estrutura do Projeto

Primeira Execução

1. Inicializar Banco de Roteamento

# Criar banco de dados com backends de exemplo
task db:init

Isso cria routing.db com o seguinte schema:

CREATE TABLE backends (
id TEXT PRIMARY KEY,
app TEXT,
region TEXT, -- "sa", "us", "eu"
wg_ip TEXT, -- IP do Backend (WireGuard)
port INTEGER,
healthy INTEGER, -- 0 ou 1
weight INTEGER, -- Peso relativo
soft_limit INTEGER, -- Conexões confortáveis
hard_limit INTEGER, -- Conexões máximas
deleted INTEGER DEFAULT 0
);

2. Iniciar edgeProxy

# Executar com configuração padrão (region=sa, port=8080)
task run:dev

# Ou com configurações customizadas
EDGEPROXY_REGION=us EDGEPROXY_LISTEN_ADDR=0.0.0.0:9000 task run:dev

3. Testar Conexão

# Conectar ao proxy
echo "Olá" | nc localhost 8080

# Saída esperada (se backend estiver rodando):
# Backend: sa-node-1 | Region: sa | Your IP: 127.0.0.1:xxxxx
# [sa-node-1] Echo: Olá

Executando Testes

Testes Unitários

# Executar todos os testes (485 testes)
task test:all

# Executar com cobertura
task test:coverage

Simulação Local Multi-Região

# Terminal 1: Iniciar mock backends
task local:env

# Terminal 2: Iniciar proxy
task run:sa

# Terminal 3: Executar testes
task local:test

Testes Docker

# Suite completa de testes Docker
task docker:build
task docker:up
task docker:test

# Limpeza
task docker:down

Tasks Disponíveis

Execute task --list para ver todas as tasks disponíveis. Principais categorias:

Build

TaskDescrição
task build:releaseBuild do binário release
task build:linuxCross-compile para Linux AMD64
task build:allBuild para todas as plataformas

Run

TaskDescrição
task run:devExecutar com config padrão
task run:saExecutar como POP SA
task run:usExecutar como POP US
task run:euExecutar como POP EU

Test

TaskDescrição
task test:allExecutar todos os testes unitários
task test:coverageExecutar com relatório de cobertura

Database

TaskDescrição
task db:initInicializar routing.db
task db:resetResetar para estado inicial

Docker

TaskDescrição
task docker:buildBuild das imagens Docker
task docker:upIniciar ambiente Docker
task docker:downParar ambiente Docker
task docker:testExecutar suite de testes Docker

Documentação

TaskDescrição
task docs:serveBuild e serve docs (EN + PT-BR)
task docs:devModo dev (apenas EN, hot reload)

Próximos Passos