Aplicação desktop construída com Wails que une backend em Go e frontend em React + Vite para gerenciar containers Docker e hosts remotos a partir de uma única interface.
A ferramenta permite autenticação de usuários, conexão segura a daemons Docker expostos com TLS, criação de sessões SSH e controle de containers, imagens e redes. Tudo é orquestrado por um backend em Go que usa SQLite para persistência e a SDK oficial do Docker para executar comandos.
- Autenticação e sessões: gerenciamento de login e persistência de sessão com o
auth.ManagerStruct. - Credenciais Docker TLS: cadastro e conexão de endpoints Docker (CA/Cert/Key), com criptografia de campos sensíveis antes de salvar no banco.
- Painel de containers: iniciar, parar, pausar, remover e visualizar estatísticas em tempo real (CPU, memória, rede) dos containers conectados.
- Imagens Docker: listar, filtrar e remover imagens rapidamente.
- Redes Docker: visualização e gerenciamento básico das redes disponíveis.
- Terminais SSH: criação de conexões SSH para servidores remotos e abertura de terminais interativos pela interface.
- Uploads e assets: suporte para carregar e salvar imagens base64 (por exemplo, avatares) pelo backend.
-
Backend (Go 1.24)
main.goinicia o app Wails, configura o ciclo de vida e registra todos os handlers (Docker, SSH, terminal, autenticação e usuários).app.gomantém utilidades genéricas do app, como carregamento/gravação de imagens base64.src/handlers/contém os controladores de domínio (Docker, Docker SDK, SSH, Terminal, Auth, User).src/models/define os modelos persistidos em SQLite (por exemplo,DockerCredentialsModel).src/dtos/agrupa DTOs usados pelo frontend, comoCreateDockerConnectionDtoeStatsPayloadDto.src/auth/mantém a gestão de sessões e verificações de autorização.src/functions/reúne helpers (validação de structs, tratamento de logs, cliente HTTP/TLS).src/types/types.godefine tipos utilitários, comoEncryptedStringpara armazenar dados sensíveis.
-
Frontend (React + Vite + Tailwind + Zustand)
- Estrutura em
frontend/srccom páginas de Containers, Imagens, Redes, Credenciais Docker, Login/Criação de conta e Terminal SSH. - Componentes protegidos por rota (
ProtectedRoute.tsx) e estado global leve com Zustand. - Biblioteca HeroUI para UI, Chart.js para gráficos e xterm.js para terminais interativos.
- Estrutura em
- Go 1.24 ou superior (ver
go.mod). - Node.js >= 18 e npm para o frontend (Vite).
- Docker instalado caso queira testar conexões locais.
- Wails CLI (
go install github.com/wailsapp/wails/v2/cmd/wails@latest).
- Instale dependências do frontend
cd frontend npm install - Inicie o modo de desenvolvimento (Wails recompila o backend e usa o dev server do Vite)
A janela desktop será aberta com hot reload.
wails dev
- Gere os assets do frontend:
cd frontend npm run build - Volte para a raiz e faça o build do app desktop:
O binário será gerado conforme
cd .. wails buildoutputfilenameemwails.json.
- Usa SQLite (via
github.com/glebarez/sqlite). - A inicialização é feita em
database.InitDb()no startup do app. - As credenciais Docker são armazenadas com campos criptografados (
EncryptedString), reduzindo exposição de URLs e chaves privadas.
Para expor um daemon Docker em tcp://<host>:2376 com certificados TLS válidos (CA/Cert/Key), siga o tutorial completo em Como criar credenciais para conexão com o daemon do docker. Ele cobre geração de certificados, configuração do daemon.json e validação com docker version.
O guia Como criar par de chaves para conexão ssh mostra como gerar uma chave SSH segura para uso na tela de criação de conexão e no terminal embutido.
- Formatação do frontend:
npm run format - Preview dos assets gerados:
npm run preview - Dev server isolado do frontend:
npm run dev(apenas interface, útil para ajustes de UI)
Distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.