DOCUMENTAÇÃO / V1
DashLab+
Guia para instalar, configurar, usar e manter seu dashboard pessoal dentro do homelab.
O primeiro usuário criado durante a configuração se torna administrador e pode criar usuários comuns. O acesso ao Lab e à API exige login; a sessão permanece ativa durante atualizações e o botão Sair encerra o acesso no dispositivo atual.
Visão geral
O DashLab+ centraliza atalhos, métricas e disponibilidade dos serviços da sua rede. Uma única imagem contém a landing, o Lab e a API Go.
dashlabplus.vercel.app apresenta o projeto, hospeda esta documentação e entrega o instalador. O dashboard completo roda no seu servidor, normalmente em http://IP-DO-HOST:3000, com Docker, API e banco de dados.
A API serve os arquivos web, persiste o estado no SQLite e integra Prometheus, clima e serviços internos. Todo o estado persistente fica no volume Docker dashlab_plus_data.
01
Requisitos
- Docker Engine 24 ou mais recente.
- Docker Compose v2.
- Um host Linux com acesso aos serviços monitorados.
- Prometheus é opcional, mas necessário para widgets de CPU, memória, discos e rede.
O navegador não precisa de Node.js no host de produção. As imagens oficiais suportam amd64 e arm64.
02
Instalação
O comando abaixo automatiza o Docker Compose: baixa a configuração, busca a imagem oficial e inicia o container.
1. Execute
curl -fsSL https://dashlabplus.vercel.app/install.sh | shO instalador verifica Docker e Compose, cria ~/.dashlab-plus, configura um atualizador interno e preserva sua configuração entre atualizações.
2. Configure, se necessário
As configurações são persistidas no banco. Para conectar o Prometheus e ajustar os filtros, abra Personalizar no Lab.
3. Confirme a saúde
curl http://IP-DO-HOST:3000/api/healthA resposta deve indicar status ok e armazenamento SQLite.
O README no GitHub contém comandos para Docker Compose e docker run. As três opções usam a mesma imagem do GHCR.
03
Configuração
A instalação normal não exige arquivo .env nem variáveis de ambiente. Usuários, preferências, integrações e dados do dashboard são salvos no banco SQLite do volume dashlab_plus_data.
| Configuração | Onde definir | Finalidade |
|---|---|---|
Usuário administrador | Primeiro acesso | Criado na tela inicial; pode criar outros usuários. |
Prometheus | Personalizar → Integrações | URL e filtros das métricas. |
Aplicações e widgets | Lab → Editar | Atalhos, status, layouts e aparência. |
DATABASE_PATH, WEB_ROOT e PORT são opções técnicas com valores padrão na imagem e não precisam ser configuradas no uso normal.
04
Prometheus
Configure a URL e os filtros em Lab → Personalizar → Integrações. A URL precisa ser resolvida de dentro do container dashlab-plus. Use um IP da LAN ou um nome DNS disponível na mesma rede Docker.
Sem PROMETHEUS_URL, o dashboard continua funcionando, mas os widgets de sistema, armazenamento e rede ficam indisponíveis.
05
Primeiro uso
- No primeiro acesso, crie o usuário administrador. Nos acessos seguintes, entre com seu usuário e senha; administradores podem criar usuários comuns pelo botão de usuários no Lab. Use o botão Sair na barra de ações para encerrar sua sessão neste dispositivo.
- Abra Personalizar para definir nome, cores, logo, favicon, wallpaper, escala e comportamento mobile.
- Use Adicionar para cadastrar aplicativos, widgets ou seções.
- Em aplicativos, informe o endereço principal e, opcionalmente, uma URL de status e um deep link mobile.
- Crie widgets de sistema, armazenamento, rede, relógio, status, PromQL ou divisória.
- No desktop, ative Editar organização, selecione um item e arraste ou redimensione pelas alças.
- No celular, escolha Grade, Menu lateral ou Barra inferior em Personalizar.
- Instale o PWA pelo menu do navegador para abrir o dashboard como aplicativo.
As alterações são salvas imediatamente no SQLite e ficam disponíveis em todos os seus dispositivos.
06
Como funciona o Lab
O Lab é o dashboard operacional do DashLab+. O primeiro usuário é administrador e pode criar usuários comuns, que acessam e editam o dashboard sem gerenciar contas ou atualizações.
Aplicações e seções
Cadastre cada serviço com nome, URL, descrição, ícone, URL de status e deep link mobile. Aplicações podem ser agrupadas em seções recolhíveis; o indicador de disponibilidade consulta a URL de status (ou a URL principal quando ela não existe).
Widgets e métricas
Widgets de sistema, armazenamento e rede usam métricas do Prometheus. Status resume as verificações das aplicações, PromQL executa uma consulta configurada por você e relógio mostra a hora local. O clima exibido no cabeçalho usa localização configurada ou geolocalização do navegador; não é um widget editável.
Organização e personalização
No desktop, ative Editar organização para selecionar, arrastar e redimensionar elementos. No celular, o Lab aplica o modo Grade, Menu lateral ou Barra inferior escolhido em Personalizar. Nome, cores, logo, favicon, wallpaper, escala e opacidade são salvos no dashboard.
API do Lab
O frontend React conversa somente com a API Go local. A API valida e persiste alterações, consulta integrações e serve os arquivos estáticos. Os principais recursos são:
GET /api/dashboard— estado do dashboard e layouts.PUT /api/branding— preferências visuais.POST/PATCH/DELETE /api/applications— atalhos e serviços.POST/PATCH/DELETE /api/widgets— widgets e configurações.GET /api/metrics/*— métricas do Prometheus.GET /api/applications/status— disponibilidade dos serviços.GET/POST /api/auth/*— primeiro acesso, login, logout e gerenciamento de usuários.POST /api/update— atualiza frontend e backend pelo updater interno (administrador).
07
Arquitetura
Navegador
│
▼
DashLab+ :3000
├── Landing + Lab
├── API /api
├── SQLite /data/dashlab-plus.db
├── Prometheus
├── Open-Meteo
└── serviços da LANUm único processo Go serve os arquivos React/Vite e a API consumida pelo dashboard. Ele guarda configuração e imagens no SQLite.
Por que uma API ainda existe?
O navegador não deve acessar diretamente o Prometheus e não consegue verificar todos os serviços internos por causa de CORS. A API também mantém o mesmo estado entre desktop e celular.
08
Persistência e backup
O volume dashlab_plus_data contém o banco e os arquivos auxiliares de WAL. Pare o container antes de copiar o volume:
docker stop dashlab-plus
docker run --rm -v dashlab_plus_data:/source -v "$PWD":/backup alpine \
tar -czf /backup/dashlab-plus-data.tar.gz -C /source .
docker start dashlab-plusPara restaurar, crie uma instalação limpa, pare o container e extraia o backup no mesmo volume. Mantenha uma cópia fora do host.
09
Atualização
curl -fsSL https://dashlabplus.vercel.app/install.sh | shO instalador configura o updater interno. O volume SQLite permanece intacto durante as atualizações.
Quando uma versão publicada for detectada, o DashLab+ mostra um aviso com as cores do tema atual. Clique em Atualizar para baixar a imagem nova e recriar o container; frontend e backend são atualizados juntos e sua sessão continua ativa.
O aviso de atualização aparece somente no Lab instalado no servidor. A landing page pública e a documentação não exibem esse aviso. A atualização mantém o volume dashlab_plus_data.
10
Segurança
A interface e a API exigem login. Mantenha a porta atrás de um proxy HTTPS e limite o acesso à LAN/VPN.
- Prefira Tailscale, WireGuard ou outra VPN para acesso remoto.
- Se usar proxy reverso público, exija autenticação em todas as rotas, inclusive /api.
- Configure os destinos do Prometheus e dos checks de status em Personalizar → Integrações.
- Não publique Prometheus ou SQLite.
- Mantenha as imagens Docker e o host atualizados.
- O atualizador interno usa o socket do Docker; mantenha a porta 3000 restrita à LAN/VPN ou ao proxy reverso.
- Use HTTPS quando houver tráfego fora da LAN.
11
Solução de problemas
Widgets exibem zero ou indisponível
Confira a URL e os filtros em Personalizar → Integrações e a conectividade a partir do container.
Um serviço aparece offline
A URL de status precisa ser acessível pela rede do container. Prefira um endpoint de saúde sem login interativo.
Alterações não permanecem
Verifique o volume e execute docker logs dashlab-plus. O container precisa escrever em /data.
PWA mantém conteúdo antigo
Recarregue ignorando o cache ou remova e instale novamente o PWA.
Suporte
Abra uma issue no GitHub com versão, logs relevantes e passos para reproduzir, removendo informações sensíveis.
