# Instalacao

Este guia cobre todos os metodos de instalacao do STA Connector.

## Requisitos de Sistema

### Requisitos Minimos

| Componente | Requisito |
|------------|-----------|
| CPU | 2 nucleos |
| Memoria | 2 GB RAM |
| Armazenamento | 10 GB |
| SO | Linux, macOS ou Windows com WSL2 |

### Recomendado para Producao

| Componente | Requisito |
|------------|-----------|
| CPU | 4+ nucleos |
| Memoria | 8 GB RAM |
| Armazenamento | 50 GB SSD |
| SO | Linux (Ubuntu 22.04+ ou RHEL 8+) |

## Instalacao Docker (Recomendada)

### Pre-requisitos

- Docker Engine 24.0+
- Docker Compose 2.0+

### Passo 1: Obtenha o Codigo

```bash
git clone https://github.com/MonetarieBR/sta
cd sta
```

### Passo 2: Configure o Ambiente

Crie um arquivo `.env` com suas configuracoes:

```bash
# .env
SECRET_KEY_BASE=$(mix phx.gen.secret)
PHX_HOST=seu-dominio.com
DATABASE_URL=ecto://postgres:sua-senha@db/sta_connector
```

### Passo 3: Compile e Inicie

```bash
# Compile as imagens
docker-compose build

# Inicie os servicos
docker-compose up -d

# Verifique o status
docker-compose ps

# Visualize os logs
docker-compose logs -f backend
```

### Passo 4: Inicialize o Banco de Dados

```bash
docker-compose exec backend bin/sta_connector eval "StaConnector.Release.migrate()"
```

## Instalacao Nativa

### Pre-requisitos

Instale as dependencias necessarias:

#### Ubuntu/Debian

```bash
# Adicione o repositorio Erlang Solutions
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt-get update

# Instale Erlang e Elixir
sudo apt-get install -y esl-erlang elixir

# Instale PostgreSQL
sudo apt-get install -y postgresql postgresql-contrib

# Instale Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
```

#### macOS

```bash
# Usando Homebrew
brew install elixir postgresql node

# Inicie o PostgreSQL
brew services start postgresql
```

#### RHEL/CentOS

```bash
# Adicione o repositorio EPEL
sudo dnf install -y epel-release

# Instale Erlang do Erlang Solutions
sudo dnf install -y erlang elixir

# Instale PostgreSQL
sudo dnf install -y postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql

# Instale Node.js
sudo dnf module install -y nodejs:20
```

### Passo 1: Clone o Repositorio

```bash
git clone https://github.com/MonetarieBR/sta
cd sta
```

### Passo 2: Configure o Backend

```bash
cd backend

# Instale Hex e Rebar
mix local.hex --force
mix local.rebar --force

# Instale as dependencias
mix deps.get

# Compile
mix compile
```

### Passo 3: Configure o Banco de Dados

```bash
# Crie o usuario e banco de dados PostgreSQL
sudo -u postgres psql << EOF
CREATE USER sta_connector WITH PASSWORD 'sua-senha-segura';
CREATE DATABASE sta_connector_dev OWNER sta_connector;
CREATE DATABASE sta_connector_test OWNER sta_connector;
GRANT ALL PRIVILEGES ON DATABASE sta_connector_dev TO sta_connector;
GRANT ALL PRIVILEGES ON DATABASE sta_connector_test TO sta_connector;
EOF
```

Atualize `config/dev.exs` com suas credenciais de banco de dados:

```elixir
config :sta_connector, StaConnector.Repo,
  username: "sta_connector",
  password: "sua-senha-segura",
  hostname: "localhost",
  database: "sta_connector_dev"
```

Execute as migrations:

```bash
mix ecto.create
mix ecto.migrate
```

### Passo 4: Configure o Frontend

```bash
cd ../frontend

# Instale as dependencias
npm install

# Compile para producao (opcional)
npm run build
```

### Passo 5: Execute os Servicos

#### Modo Desenvolvimento

```bash
# Terminal 1 - Backend
cd backend
mix phx.server

# Terminal 2 - Frontend
cd frontend
npm run dev
```

#### Modo Producao

```bash
# Compile a release
cd backend
MIX_ENV=prod mix release

# Execute
_build/prod/rel/sta_connector/bin/sta_connector start
```

## Deploy Kubernetes

Para deploys Kubernetes, fornecemos charts Helm:

```bash
# Adicione o repositorio Helm
helm repo add sta-connector https://monetarie.github.io/sta-connector/charts
helm repo update

# Instale
helm install sta-connector sta-connector/sta-connector \
  --namespace sta-connector \
  --create-namespace \
  --set postgresql.enabled=true \
  --set ingress.enabled=true \
  --set ingress.host=sta.seu-dominio.com
```

Consulte a [documentacao do chart Helm](https://github.com/MonetarieBR/sta/tree/main/charts) para todas as opcoes de configuracao.

## Verificacao

Apos a instalacao, verifique se todos os componentes estao funcionando:

```bash
# Health check do backend
curl http://localhost:4000/api/health

# Resposta esperada:
# {"status":"healthy","version":"1.0.0"}

# Frontend (deve retornar HTML)
curl http://localhost:3000

# Conectividade do banco de dados
cd backend && mix ecto.migrations
```

## Atualizacao

### Atualizacao Docker

```bash
# Baixe as imagens mais recentes
docker-compose pull

# Reinicie os servicos
docker-compose up -d

# Execute as migrations
docker-compose exec backend bin/sta_connector eval "StaConnector.Release.migrate()"
```

### Atualizacao Nativa

```bash
# Baixe o codigo mais recente
git pull origin main

# Atualize o backend
cd backend
mix deps.get
mix compile
MIX_ENV=prod mix ecto.migrate

# Atualize o frontend
cd ../frontend
npm install
npm run build
```

## Proximos Passos

- [Guia de Configuracao](/pt/guide/configuration) - Configure endpoints e credenciais STA
- [Visao Geral da Arquitetura](/pt/architecture/) - Entenda o design do sistema
