Um console desktop pra gerenciar seus servidores MinIO sem dor de cabeça.
O console web oficial do MinIO é legal, mas rodar uma app nativa no desktop tem umas vantagens que fazem diferença no dia a dia:
- Zero browser, zero porta aberta — abre como qualquer outro programa
- Credenciais seguras no keychain do SO — nada de senha salva em texto puro
- Múltiplos servidores num lugar só — troca de perfil com um clique
- Tudo funciona offline — menos a parte que precisa falar com o servidor, óbvio 😄
A ideia é juntar o poder do mc CLI com uma interface gráfica que não trava, não precisa de conexão com a internet pra carregar, e entende quem usa isso todo dia.
| Feature | O que faz |
|---|---|
| Dashboard | Visão geral do servidor — status, capacidade, uptime, tudo em tempo real |
| Buckets | Cria, apaga, configura versioning e política de acesso (privado / download / público — bem simples) |
| Objects | Navega pelas pastas, faz upload, download, preview de arquivo, share link, tudo |
| Users & Groups | Gerencia IAM sem precisar decorar comando nenhum |
| Policies | Cria, edita e atribui policies visualmente |
| Monitoring | Métricas do servidor em tempo real |
| MC Terminal | Terminal integrado com autocomplete (Tab ou vírgula pra ver todos os comandos) |
| Multi-perfil | Conecta em vários MinIOs e alterna rapidinho |
| Tradução | Português, Inglês e Espanhol |
Pega o instalador pra sua plataforma na página de releases:
- Windows —
.msiou.exesetup - macOS —
.dmguniversal (roda em Intel e Apple Silicon, mesmo arquivo) - Linux —
.deb,.rpmou.AppImage
💡 O binário do
mcjá vem junto no instalador. Não precisa instalar nada além da app.
Você vai precisar de:
- Node.js 18+
- Rust 1.75+
- Pré-requisitos do Tauri pro seu sistema
- Um servidor MinIO (local ou remoto) com access/secret key
Depois é só:
git clone https://github.com/lbkeppler/minio-console.git
cd minio-console
npm install
# Baixa o mc pra sua plataforma (dev)
./scripts/download-mc.sh # Linux/macOS
# ou
.\scripts\download-mc.ps1 # Windows
# Roda em modo dev (hot-reload no front e no back)
npm run tauri devA janela abre sozinha. Na primeira vez, vai em Settings → Add Profile pra configurar seu servidor.
Escolhi as ferramentas pensando em performance, tamanho de instalador e segurança:
| Camada | Tecnologia |
|---|---|
| Framework | Tauri 2 — web view nativa + backend Rust |
| Frontend | React 18, TypeScript strict, Tailwind CSS 4, Radix UI |
| Estado | Zustand |
| Backend | Rust (aws-sdk-s3, reqwest, tokio) |
| Credenciais | keyring-rs — usa o keychain nativo do SO |
| Lint/Format | Biome (front), clippy + rustfmt (back) |
| Build | Vite (front), Cargo (back) |
minio-console/
├── src/ # Frontend React
│ ├── components/ui/ # Componentes compartilhados
│ ├── pages/ # Uma pasta por feature
│ ├── stores/ # Estados Zustand
│ ├── lib/ # Wrappers do Tauri invoke()
│ └── i18n/ # Traduções (en, es, pt-BR)
├── src-tauri/ # Backend Rust
│ └── src/
│ ├── commands/ # Handlers dos invokes
│ ├── s3/ # Cliente S3
│ ├── admin/ # API admin do MinIO
│ ├── mc/ # Runner do mc CLI
│ ├── config/ # Configuração da app
│ └── models/ # Tipos compartilhados
├── scripts/ # Scripts auxiliares (download do mc)
└── docs/ # Specs e design docs
npm run tauri dev # Desenvolvimento (front + back com hot-reload)
npm run tauri build # Build de produção pro seu SO
npm run dev # Só o front (Vite em :1420)
cargo test # Testes do backend
npx biome check # Lint + format do front
cargo clippy # Lint do RustTodo push de tag v* dispara o workflow de release — builda Windows, macOS Universal e Linux em paralelo no GitHub Actions e publica um release draft com todos os instaladores. Eu revisar e liberar.
Veja .github/workflows/release.yml.
- Commits: Conventional Commits (
feat:,fix:,docs:, etc.) - Idioma do código: inglês sempre. A UI é traduzida.
- IPC: front chama back via
invoke(). Tudo async, tudo retornaResult<T, String>. - Credenciais: nunca em plaintext — sempre via keychain do SO.
Achou um bug, tem uma ideia legal ou só quer bater um papo sobre o projeto? Abre uma issue ou manda um PR.
AGPL-3.0 — GNU Affero General Public License v3.0.
Se você usar esse código em um serviço acessível pela rede, o código-fonte (incluindo modificações) precisa ficar disponível pros usuários. Uso pessoal, comercial, fork e modificação são liberados, desde que respeitando os termos da licença.
Feito com ☕ e muita paciência usando Rust + React + Tauri