Infraestrutura pessoal, modular e expansível, baseada em Docker Compose, com foco em automação, monitoramento, privacidade e produtividade.
Projeto para centralizar serviços essenciais (LLMs, monitoramento, rede, mídia, automação, etc.) de forma simples, segura e escalável.
A infraestrutura foi reorganizada em categorias funcionais para facilitar:
- 🚀 Expansão: Adicionar novos serviços sem bagunça
- 🎛️ Gerenciamento: Localizar e configurar serviços facilmente
- 🔍 Manutenção: Estrutura lógica e intuitiva
- 📈 Escalabilidade: Preparado para dezenas de serviços futuros
✅ Estrutura migrada de pastas simples para organização por categorias
✅ Backup automático criado durante a migração
✅ Scripts funcionando - detecção automática da nova estrutura
✅ Zero downtime - todos os serviços continuaram funcionando
| Serviço | Categoria | Porta(s) | Status |
|---|---|---|---|
| Homarr | Dashboard | 80 | ✅ Configurado |
| Grafana | Monitoramento | 3001 | ✅ Configurado |
| Prometheus | Monitoramento | 9100 | ✅ Configurado |
| cAdvisor | Monitoramento | 8080 | ✅ Configurado |
| Pi-hole | Rede/Segurança | 8090 | ✅ Configurado |
| LibreChat | LLMs/IA | 3080 | ✅ Configurado |
| Open-WebUI | LLMs/IA | 3000 | ✅ Configurado |
| LiteLLM | LLMs/IA | 4000 | ✅ Configurado |
| Ollama | LLMs/IA | 11434 | ✅ Configurado |
| PostgreSQL | Banco de Dados | 5432 | ✅ Configurado |
self-hosted/
├── 📊 dashboards/ # Dashboards e painéis centralizados
│ └── homarr/ # Dashboard principal unificado
├── 🤖 ai-llms/ # Inteligência Artificial e LLMs
│ ├── ollama/ # LLM local auto-hospedado
│ ├── libre-chat/ # Interface web completa para LLMs
│ ├── open-web-ui/ # UI alternativa para Ollama
│ └── lite-llm/ # Proxy unificado para múltiplos LLMs
├── 📊 observability/ # Observabilidade e monitoramento
│ ├── metrics/ # Métricas (Prometheus, Grafana, cAdvisor)
│ ├── logs/ # Logs centralizados (futuro)
│ ├── tracing/ # Tracing distribuído (futuro)
│ └── system-monitoring/ # Monitoramento de sistema (futuro)
├── 🔐 security/ # Segurança e proteção
│ ├── network-protection/ # Proteção de rede (Pi-hole)
│ ├── firewall/ # Firewall e proteção (futuro)
│ ├── auth/ # Autenticação (futuro)
│ └── vpn-tunnels/ # VPN e túneis seguros (Tailscale)
├── 💾 databases/ # Bancos de dados e armazenamento
│ ├── postgres/ # PostgreSQL principal
│ └── cache/ # Cache (Redis/Memcached - futuro)
├── 🔄 automation/ # Automação e workflows
│ ├── workflows/ # Automação de workflows (futuro)
│ ├── backup/ # Scripts de backup (futuro)
│ ├── scraping/ # Web scraping (futuro)
│ └── home-automation/ # Automação residencial (futuro)
├── � media/ # Mídia e entretenimento
│ ├── servers/ # Servidores de mídia (futuro)
│ ├── streaming/ # Streaming e canais (futuro)
│ ├── management/ # Gerenciamento de mídia (futuro)
│ ├── clients/ # Clientes multiplataforma (futuro)
│ └── podcasts/ # Servidor de podcasts (futuro)
├── 🌐 networking/ # Rede e conectividade
│ ├── proxy/ # Proxy reverso (futuro)
│ └── utilities/ # Utilitários de rede (futuro)
├── 📝 productivity/ # Produtividade e colaboração
│ ├── collaboration/ # Ferramentas colaborativas (futuro)
│ ├── documentation/ # Documentação (futuro)
│ ├── development/ # Desenvolvimento (futuro)
│ ├── finance/ # Finanças pessoais (futuro)
│ └── personal/ # Ferramentas pessoais (futuro)
└── 🛠️ scripts/ # Scripts de automação e gerenciamento
├── cli.sh # Gerenciamento dinâmico de todos os serviços
└── cp-env.sh # Copia arquivos .env.example| Serviço | Localização | Descrição | Porta | Status |
|---|---|---|---|---|
| Homarr | dashboards/homarr/ |
Dashboard centralizado | 80 | ✅ Configurado |
| Serviço | Localização | Descrição | Porta | Status |
|---|---|---|---|---|
| Ollama | ai-llms/ollama/ |
Execução local de LLMs | 11434 | ✅ Configurado |
| LibreChat | ai-llms/libre-chat/ |
Interface web completa para LLMs | 3080 | ✅ Configurado |
| Open-WebUI | ai-llms/open-web-ui/ |
UI alternativa para Ollama | 3000 | ✅ Configurado |
| LiteLLM | ai-llms/lite-llm/ |
Proxy unificado para múltiplos provedores | 4000 | ✅ Configurado |
| Serviço | Localização | Descrição | Porta | Status |
|---|---|---|---|---|
| Prometheus | observability/metrics/prometheus/ |
Coleta de métricas | 9100 | ✅ Configurado |
| Grafana | observability/metrics/grafana/ |
Dashboards e visualização | 3001 | ✅ Configurado |
| cAdvisor | observability/metrics/cAdvisor/ |
Monitoramento de containers | 8080 | ✅ Configurado |
| Node Exporter | observability/metrics/prometheus/ |
Métricas do sistema | 9101 | ✅ Configurado |
| AlertManager | observability/metrics/prometheus/ |
Gerenciamento de alertas | 9102 | ✅ Configurado |
| Serviço | Localização | Descrição | Porta | Status |
|---|---|---|---|---|
| Pi-hole | security/network-protection/pihole/ |
DNS + Ad-blocker | 8090 (web), 53 (DNS) | ✅ Configurado |
| Tailscale | security/vpn-tunnels/tailscale/ |
VPN mesh | - | 🚧 Futuro |
| Serviço | Localização | Descrição | Porta | Status |
|---|---|---|---|---|
| PostgreSQL | databases/postgres/ |
Banco de dados | 5432 | ✅ Configurado |
# Instalar Docker e Docker Compose
sudo pacman -Sy docker docker-compose
sudo usermod -aG docker $USER# Clonar/baixar o projeto
cd /home/oornnery/self-hosted
# Copiar arquivos de configuração
./scripts/cp-env.sh
# Revisar e ajustar configurações nos arquivos .env# Iniciar toda a stack
./scripts/cli.sh up
# OU iniciar serviços específicos
./scripts/cli.sh up ai-llms/ollama observability/metrics/grafanaCada serviço possui um arquivo .env.example que deve ser copiado para .env e customizado:
# Automaticamente copia todos os .env.example para .env
./scripts/cp-env.sh- Grafana:
GRAFANA_PASSWORDemobservability/metrics/grafana/.env - Pi-hole:
WEBPASSWORDemsecurity/network-protection/pihole/.env - LiteLLM:
LITELLM_MASTER_KEYemai-llms/lite-llm/.env - LibreChat: Múltiplas chaves em
ai-llms/libre-chat/.env
- OpenRouter:
OPENROUTER_API_KEYpara LiteLLM e LibreChat - Configure em
ai-llms/lite-llm/.enveai-llms/libre-chat/.env
- Usado pelo LiteLLM para persistência
- Configuração em
databases/postgres/.env
# ===== GERENCIAMENTO GERAL =====
# Iniciar todos os serviços
./scripts/cli.sh
# ou
./scripts/cli.sh up
# Parar todos os serviços (mantém volumes)
./scripts/cli.sh down
# Parar e remover tudo (incluindo volumes anônimos)
./scripts/cli.sh rm
# ===== SERVIÇOS ESPECÍFICOS =====
# Iniciar serviços individuais
./scripts/cli.sh start databases/postgres
./scripts/cli.sh up ai-llms/ollama
./scripts/cli.sh start dashboards/homarr security/network-protection/pihole
# Parar serviços específicos
./scripts/cli.sh stop databases/postgres
./scripts/cli.sh down ai-llms/ollama observability/metrics/grafana
# ===== MONITORAMENTO =====
# Listar todos os serviços disponíveis
./scripts/cli.sh list
# Ver status de todos os containers
./scripts/cli.sh status
# Ver ajuda completa
./scripts/cli.sh help
# ===== CONFIGURAÇÃO =====
# Copiar arquivos .env.example
./scripts/cp-env.shO script agora é totalmente dinâmico e simples:
- 🔍 Descoberta automática: Encontra todos os
docker-compose.ymlem qualquer estrutura de pastas - 📁 Suporte completo: Funciona com nova estrutura organizada por categorias
- 🎯 Sem configuração: Não precisa editar o script ao adicionar novos serviços
- 🚀 Flexível: Inicie todos os serviços ou apenas os que você especificar
- 🗂️ Organizado: Estrutura modular preparada para expansões futuras
# Exemplos com a nova estrutura
cd ai-llms/ollama
docker compose up -d # Iniciar Ollama
cd ../../observability/metrics/grafana
docker compose logs -f # Ver logs do Grafana
cd ../../../dashboards/homarr
docker compose down # Parar Homarr
cd ../../databases/postgres
docker compose up -d --build # Rebuild PostgreSQL- Homarr Dashboard: http://localhost:80
- Grafana: http://localhost:3001
- Pi-hole Admin: http://localhost:8090/admin
- LibreChat: http://localhost:3080
- Open-WebUI: http://localhost:3000
- LiteLLM: http://localhost:4000
- Ollama API: http://localhost:11434
- Prometheus: http://localhost:9100
- cAdvisor: http://localhost:8080
- PostgreSQL: localhost:5432
- Prometheus: Coleta métricas de todos os serviços
- Grafana: Dashboards pré-configurados
- cAdvisor: Métricas específicas de containers
- Node Exporter: Métricas do sistema host
- Rede interna
monitoringconecta todos os serviços - AlertManager configurado (atualmente sem notificações)
- Ollama: Container em modo read-only, sem privilégios
- Pi-hole: Capabilities mínimas
- Redes internas: Isolamento entre serviços
- Volumes nomeados: Persistência segura de dados
- Altere senhas padrão: Todos os arquivos
.env - Configure firewall: Restrinja acesso às portas
- Backup regular: Scripts automáticos recomendados
- SSL/TLS: Configure proxy reverso (Nginx/Traefik)
# Verificar logs
docker compose logs serviço_name
# Verificar status
docker compose ps
# Recriar containers
docker compose down && docker compose up -d# Verificar owner dos volumes
docker volume inspect volume_name
# Ajustar UID/GID no Ollama
# Verificar OLLAMA_UID e OLLAMA_GID no .env# Criar rede do monitoramento se não existir
docker network create monitoring
# Verificar redes
docker network ls# Verificar se o container está rodando
docker ps | grep postgres
# Testar conexão
docker exec -it postgres psql -U litellm_user -d litellm_db# Logs de todos os serviços
./scripts/cli.sh down && ./scripts/cli.sh up
# Logs específicos
cd observability/metrics/prometheus
docker compose logs -f prometheus
# Debug de um container
docker exec -it container_name /bin/bash- Netdata - Monitoramento em tempo real (complementa Grafana)
- Grafana Loki - Agregação de logs centralizada
- Dozzle - Visualizador de logs Docker simples
- Speedtest Tracker - Monitoramento de velocidade da internet
- SigNoz - Observabilidade open-source (alternativa ao Grafana/Prometheus)
- Glances - Monitoramento de sistema em tempo real
- Beszel - Observabilidade e tracing distribuído
- Alternativas: Parseable, LogForge
-
AdGuard Home - Alternativa ao Pi-hole
-
SafeLine - Web Application Firewall
-
Fail2ban - Proteção contra brute force
-
CrowdSec - Segurança colaborativa e proteção de serviços
-
Vaultwarden - Gerenciador de senhas (Bitwarden self-hosted)
-
2FAuth - Autenticação de dois fatores
-
Tailscale - VPN mesh (já planejado)
-
Proxy Reverso - Traefik/Nginx com SSL automático
-
zrok - Túnel seguro e compartilhamento de serviços
-
Alternativa: Bitwarden oficial
- Webhook.site - Teste e debug de webhooks
- DumbWhois - Consulta WHOIS simples via web
- Syncthing - Sincronização de arquivos P2P
- Rclone - Backup para cloud storage
- Ente - Backup seguro de fotos e arquivos
- Scripts de backup automatizado para volumes Docker
- Home Assistant - Automação doméstica completa
- n8n - Automação de workflows (complementa monitoramento)
- Coder - IDE na nuvem para desenvolvimento
- Supabase - Backend as a Service (alternativa ao PostgreSQL+APIs)
- Maxun - Automação de tarefas web
- Scraperr - Web scraping automatizado
- Penpot - Design colaborativo open-source
- Pad.ws - Editor colaborativo
- Snippets Library - Gerenciador de código
- Scriberr - Sistema de notas e documentação
- Firefly III - Gerenciamento financeiro pessoal
- ezBookkeeping - Alternativa mais simples
- ErsatzTV - Cria canais de TV personalizados a partir da sua biblioteca
- Tunarr - Programação de TV automatizada (sucessor do ErsatzTV)
- Riven - Gerenciador completo de mídia com automação
- Cal.com - Sistema de agendamento
- LocalSend - Compartilhamento de arquivos local
- Immich - Galeria de fotos (alternativa ao Google Photos)
- EteSync - Sincronização segura de dados pessoais
- qBittorrent - Cliente torrent web
- RSS Reader - Agregador de feeds RSS
- Jellyfin - Media server open-source
- Plex - Media server (alternativa)
- ErsatzTV - Cria canais de TV personalizados
- Tunarr - Programação de TV a partir da sua biblioteca
- Riven - Gerenciador de mídia automatizado
- WatchState - Sincronização de progresso entre players
- Fladder - Cliente Jellyfin multiplataforma
- PinePods - Servidor de podcasts self-hosted
- Neko - Browser compartilhado virtual
- Addy.io - Alias de email para privacidade
- wger - Gerenciador de treinos e dieta
- Strava Statistics - Análise de dados de corrida
- Fitbit Grafana - Dashboard fitness no Grafana
- Habit Tracking - Sistema de acompanhamento de hábitos
- Vaultwarden - Movido para Prioridade Alta
- 2FAuth - Movido para Prioridade Alta
- Termix - Terminal multiplataforma
- In-Memory Cache - Redis/Memcached para performance
- Dawarich - Rastreamento de localização pessoal
- SSL/TLS automático - Let's Encrypt com Traefik
- Backup automatizado - Scripts para volumes críticos
- Alertas inteligentes - Configuração do AlertManager
- Dashboard unificado - Melhorias no Homarr
- SSO (Single Sign-On) - Autenticação centralizada
- Reverse Proxy - Nginx/Traefik para todos os serviços
- Monitoring avançado - Integração Netdata + Grafana
- CI/CD Pipeline - Gitea + automação de deploy
| Critério | Peso | Descrição |
|---|---|---|
| Complementaridade | 🔥🔥🔥 | Melhora serviços existentes |
| Segurança | 🔥🔥🔥 | Aumenta proteção da stack |
| Automação | 🔥🔥 | Reduz trabalho manual |
| Produtividade | 🔥🔥 | Ferramentas do dia a dia |
| Recursos | 🔥 | Impacto na performance |
| Complexidade | 🔥 | Facilidade de implementação |
Para uma experiência completa de mídia self-hosted, a combinação recomendada é:
- 🎥 Jellyfin/Plex - Servidor de mídia principal
- 📺 ErsatzTV ou Tunarr - Criação de canais de TV personalizados
- 🤖 Riven - Automação completa de aquisição de mídia
- 📱 Fladder - Cliente Jellyfin multiplataforma
- 🔄 WatchState - Sincronização de progresso entre dispositivos
- 🎧 PinePods - Servidor de podcasts
- 🌐 Neko - Browser compartilhado para streaming online
- ⬇️ qBittorrent - Aquisição de conteúdo
- 🎪 Experiência de TV tradicional com canais programados
- 🤖 Automação completa de download e organização
- 📱 Acesso multiplataforma com sincronização
- 🎧 Podcasts integrados na mesma infraestrutura
- 👥 Compartilhamento social com browser virtual
- Fuso horário: Configurado para
America/Sao_Paulo - Recursos: Ollama limitado a 16GB RAM
- Modelos: Configurados para modelos até 7B localmente
- APIs: Suporte para OpenRouter, OpenAI, Anthropic, Google
- Estrutura: Migrada para organização modular (Aug 2025)
Em Agosto de 2025, a infraestrutura foi reorganizada para uma arquitetura modular:
- Antes: Pastas simples (
llms/,monitoring/,network/) - Agora: Categorias funcionais (
ai-llms/,observability/,security/) - Vantagem: Preparado para expansão com 50+ serviços futuros
- Backup: Mantido em
backup_YYYYMMDD_HHMMSS/para rollback se necessário
Desenvolvido e mantido para uso pessoal/educacional 🏠✨