planning 2024-12 → 2026-03

IA Project 2026

Workstation de Engenharia & Kubernetes Local

infrastructurekubernetesailocal-firsthomelabllm

Visão Geral

Construir uma workstation local de engenharia para servir como núcleo central de:

  • Desenvolvimento backend/frontend (Java 21, Spring Boot, Angular)
  • Execução de POCs (Proof of Concept)
  • Inferência de modelos de IA (LLMs até 20B params)
  • Kubernetes local production-like

A máquina será exposta à internet através do Cloudflare Tunnel, permitindo demonstrar aplicações no domínio infowhere.be.

🏠

Local-first

Desenvolvimento e execução prioritariamente local

☁️

Cloud como extensão

Usar cloud apenas quando necessário

Eficiência energética

Hardware otimizado para baixo consumo (UE)

🔧

IaC desde o início

Ansible + Terraform, zero comandos manuais

Hardware

Configuração otimizada para eficiência energética, silêncio e performance sustentada.

Componente Especificação Preço (€)
CPU AMD Ryzen 9 7900 (12c/24t, 65W) 287,00
GPU ASUS TUF RTX 4080 Super 16GB OC 1.528,85
RAM Kingston Fury Beast 64GB DDR5 6000MT/s ~200*
Storage Samsung 990 Pro NVMe 2TB 229,95
Motherboard ASUS TUF Gaming B650-Plus WiFi 160,42
PSU Corsair RM850e (2025) ATX 3.1 112,57
Case Fractal Design Define 7 Compact Solid 114,90
Cooler Noctua NH-D15 ~100,00
TOTAL ~2.734
⚠️
O preço da RAM no carrinho Amazon (€949) está inflacionado. Preço normal: €180-250. Verificar alternativas.
Ryzen 9 7900 (não X)
  • 65W TDP vs 170W do 7900X
  • Mesmo desempenho base
  • GPU integrada (backup/montagem sem GPU)
RTX 4080 Super 16GB
  • 16GB VRAM para LLMs quantizados
  • Inference até ~20B params (Q4/Q5)
  • CUDA ecosystem completo
64GB DDR5 6000MT/s
  • K8s + Docker + múltiplos serviços
  • Headroom para IA (offload para RAM)

Plano de Compras

Cronograma de aquisição distribuído em ~15 meses.

Dez/2024
Case (Fractal Define 7) €115
Jan/2025
PSU (Corsair RM850e) €113
Fev/2025
Storage (Samsung 990 Pro 2TB) €230
Mar/2025
Motherboard (ASUS TUF B650-Plus) €160
Abr/2025
RAM (64GB DDR5) €200
Mai/2025
Cooler (Noctua NH-D15) €100
Jun/2025
CPU (Ryzen 9 7900) €287
Jul-Set/2025
Montagem Inicial (sem GPU) -
Out-Dez/2025
Poupança para GPU €350/mês
Jan-Mar/2026
GPU (RTX 4080 Super) €1.529

Sistema Operativo

Escolha: Fedora Server 41

Critério Fedora Server 41 Ubuntu 24.04 Debian 12
Kernel 6.11+ ✅ 6.8 6.1
Suporte Ryzen 7000 Excelente ✅ Bom Razoável
NVIDIA Drivers RPM Fusion ✅ Proprietário Manual
Snap ❌ Não tem ⚠️ Forçado ❌ Não tem
Ansible Nativo ✅ Nativo Nativo
ℹ️
Decisão: Fedora Server 41 por kernel recente (melhor suporte hardware), sem bloat, e excelente integração com automation tools.

Automação

infra/
├── ansible/
│   ├── inventory/hosts.yml
│   ├── playbooks/
│   │   ├── 00-bootstrap.yml
│   │   ├── 01-base-system.yml
│   │   ├── 02-docker.yml
│   │   ├── 03-nvidia.yml
│   │   ├── 04-k3s.yml
│   │   ├── 05-cloudflared.yml
│   │   ├── 06-ollama.yml
│   │   └── 07-monitoring.yml
│   └── roles/
├── terraform/
│   ├── cloudflare/
│   └── neon/
├── scripts/
│   └── bootstrap.sh
└── helm/charts/
scripts/bootstrap.sh
bash
#!/bin/bash
set -euo pipefail

echo "=== InfoWhere Workstation Bootstrap ==="

# Atualizar sistema
sudo dnf update -y

# Instalar dependências
sudo dnf install -y git ansible python3-pip

# Clonar repositório
git clone git@github.com:infowhere/infra.git ~/infra

# Executar Ansible
cd ~/infra/ansible
ansible-playbook -i inventory/hosts.yml playbooks/00-bootstrap.yml

Arquitetura

                         Internet
                             │
                             ▼
                    ┌─────────────────┐
                    │   CLOUDFLARE    │
                    │  DNS + Tunnel   │
                    │  WAF + R2       │
                    └────────┬────────┘
                             │ Tunnel (outbound)
                             ▼
┌─────────────────────────────────────────────────────────────┐
│                   WORKSTATION LOCAL                         │
│  ┌────────────────────────────────────────────────────┐    │
│  │                    K3S CLUSTER                     │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐          │    │
│  │  │  INFRA   │ │ POC-APP1 │ │ POC-APP2 │  ...     │    │
│  │  │ Postgres │ │ Backend  │ │ Backend  │          │    │
│  │  │ Redis    │ │ Frontend │ │ Frontend │          │    │
│  │  │ RabbitMQ │ └──────────┘ └──────────┘          │    │
│  │  └──────────┘                                     │    │
│  └────────────────────────────────────────────────────┘    │
│  ┌────────────────────────────────────────────────────┐    │
│  │  OLLAMA + NVIDIA RTX 4080 Super 16GB               │    │
│  │  LLMs até 20B params quantizados                   │    │
│  └────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘
                             │
              ┌──────────────┴──────────────┐
              │      CLOUD SERVICES         │
              │  Neon (PG) │ R2 │ GitHub    │
              └─────────────────────────────┘

Subdomínios

Subdomínio Destino Descrição
infowhere.be Cloudflare Pages Site institucional
poc1.infowhere.be Tunnel → K3s POC #1
poc2.infowhere.be Tunnel → K3s POC #2
api.infowhere.be Tunnel → K3s API Gateway
grafana.infowhere.be Tunnel → K3s Monitoring
ollama.infowhere.be Tunnel → Ollama LLM API (protegido)

Cloudflare

terraform/cloudflare/tunnel.tf
hcl
resource "cloudflare_tunnel" "infowhere" {
  account_id = var.cloudflare_account_id
  name       = "infowhere-local"
  secret     = var.tunnel_secret
}

resource "cloudflare_tunnel_config" "infowhere" {
  account_id = var.cloudflare_account_id
  tunnel_id  = cloudflare_tunnel.infowhere.id

  config {
    ingress_rule {
      hostname = "poc1.infowhere.be"
      service  = "http://localhost:8080"
    }
    ingress_rule {
      hostname = "grafana.infowhere.be"
      service  = "http://localhost:3000"
    }
    ingress_rule {
      service = "http_status:404"
    }
  }
}

Kubernetes

ansible/roles/k3s/tasks/main.yml
yaml
- name: Install k3s
  shell: |
    curl -sfL https://get.k3s.io | sh -s - \
      --disable traefik \
      --write-kubeconfig-mode 644
  args:
    creates: /usr/local/bin/k3s

- name: Create namespaces
  command: "k3s kubectl create namespace {{ item }}"
  loop:
    - infra
    - monitoring
    - poc-app1
    - poc-app2
  ignore_errors: yes

Modelos LLM Compatíveis

Modelos open-source que podem ser executados localmente na RTX 4080 Super (16GB VRAM) usando Ollama ou vLLM.

Com 16GB de VRAM, é possível executar modelos até ~20B parâmetros com quantização Q4/Q5. Modelos maiores podem ser executados com offload para RAM do sistema (64GB disponível).

Estimativa de Performance (RTX 4080 Super)

7B (Q4)
50-70 tok/s
~0.1s first token
13B (Q4)
35-50 tok/s
~0.2s first token
27B (Q4)
20-30 tok/s
~0.4s first token

Guia de VRAM por Tamanho de Modelo

1-3B
1-2 GB 2-4 GB ✅ Facilmente
7-8B
4-5 GB 8-10 GB ✅ Confortável
13-14B
8-9 GB 14-16 GB ✅ OK
27-34B
14-16 GB Offload RAM ⚠️ Limite
70B+
Offload RAM Não suportado ❌ Precisa 2x GPU

Modelos Disponíveis

Llama 3.1 8B 8B ~5GB

Chat geral, raciocínio

ollama run llama3.1
Llama 3.2 3B 3B ~2GB

Chat leve, mobile

ollama run llama3.2
Mistral 7B 7B ~4GB

Chat geral, instruções

ollama run mistral
Mixtral 8x7B 47B (MoE) ~13GB

Alta qualidade, multilíngue

ollama run mixtral
Qwen2.5 7B 7B ~4GB

Multilíngue, código

ollama run qwen2.5:7b
Qwen2.5 14B 14B ~8GB

Raciocínio avançado

ollama run qwen2.5:14b
Qwen2.5-Coder 7B 7B ~4GB

Geração de código

ollama run qwen2.5-coder:7b
DeepSeek-R1 8B 8B ~5GB

Raciocínio, chain-of-thought

ollama run deepseek-r1:8b
DeepSeek-Coder-V2 16B 16B ~9GB

Código, 300+ linguagens

ollama run deepseek-coder-v2:16b
CodeLlama 13B 13B ~8GB

Código Python, completions

ollama run codellama:13b
Phi-4 14B 14B ~9GB

Raciocínio, matemática

ollama run phi4
Gemma 2 9B 9B ~6GB

Chat, eficiente

ollama run gemma2:9b
Gemma 2 27B 27B ~15GB

Alta qualidade

ollama run gemma2:27b
StarCoder2 15B 15B ~9GB

Código, 600+ linguagens

ollama run starcoder2:15b
Llama 3.2 Vision 11B 11B ~8GB

Visão + linguagem

ollama run llama3.2-vision
Instalação do Ollama
bash
# Instalar Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Baixar modelos recomendados
ollama pull llama3.1
ollama pull mistral
ollama pull qwen2.5-coder:7b
ollama pull deepseek-r1:8b

# Testar
ollama run llama3.1 "Olá, como posso ajudar?"

# API REST disponível em http://localhost:11434

Estratégia de Dados

Tipo de Dado Local/Cloud Provider Justificação
Cache (Redis) Local K3s Efémero
Filas (RabbitMQ) Local K3s Transitório
PostgreSQL dev Local K3s Dados teste
PostgreSQL POCs Cloud Neon Persistente
Files/Uploads Cloud Cloudflare R2 Object storage
Secrets Cloud 1Password Encrypted
Configs/IaC Cloud GitHub Versionado

Custos

Investimento

Hardware (total)~€2.734
Período de compra15 meses
Média mensal~€182/mês

Operacional

ItemCusto/mêsNotas
Energia€15-30~100-150W médio
Cloudflare€0Free tier
Neon PostgreSQL€0Free tier
Domínio~€1€12/ano
TOTAL€16-31

Comparação com Cloud

CenárioCusto/mêsCusto/ano
Este projeto (local)€16-31€192-372
DigitalOcean DOKS 8GB€63€756
DO DOKS + Managed DB€78€936
AWS EKS equivalente€150+€1.800+

Checklist

Pré-Montagem
Todos os componentes recebidos
Ferramentas preparadas
Manuais disponíveis
Montagem
CPU instalada
RAM nos slots corretos (A2, B2)
NVMe instalado
Cooler montado
Primeiro POST bem sucedido
Sistema
Fedora Server 41 instalado
bootstrap.sh executado
Ansible playbooks completos
NVIDIA drivers funcionando
k3s cluster operacional
Serviços IA
Ollama instalado
Llama 3.1 baixado
Mistral 7B baixado
DeepSeek-Coder baixado
API Ollama acessível
Rede
Cloudflare Tunnel ativo
DNS records configurados
SSL funcionando
Primeira POC deployed

Changelog

VersãoDataAlterações
1.02024-12-24Documento inicial
1.12024-12-24Adicionada seção de modelos LLM

InfoWhere SComm © 2024 - Brussels, Belgium