- Uncloud é uma ferramenta open source que permite implantar e escalar aplicações web conteinerizadas em vários servidores sem Kubernetes
- Mantém um fluxo de trabalho baseado em Docker Compose, com suporte a implantação sem downtime, HTTPS automático e escalabilidade entre servidores
- Sem plano de controle central, cada máquina é conectada por uma rede P2P baseada em WireGuard, permitindo que o cluster continue operando mesmo se alguns servidores ficarem offline
- Inclui HTTPS automático por meio do proxy reverso Caddy, descoberta de serviços com DNS embutido e balanceamento de carga
- Também pode ser implantado da mesma forma em ambientes híbridos de nuvem e on-premises, garantindo controle sobre a infraestrutura e previsibilidade de custos
Fluxo de trabalho semelhante a um PaaS
- Oferece uma experiência de implantação simples como Heroku ou Fly.io, mantendo ao mesmo tempo controle total sobre os servidores e os dados
- Estrutura de custos previsível, sem cobrança por requisição
- Sem lock-in de fornecedor, com possibilidade de depuração usando ferramentas SSH padrão
- Com uma estrutura amigável ao Docker Compose, é possível executar build, push e deploy com um único comando
- Sem necessidade de registro de imagens, com suporte a deploy rolling sem downtime
- Possibilita escalonamento por replicação em várias máquinas
Projeto de baixa manutenção
- Sem necessidade de plano de controle ou gerenciamento de quórum, minimizando a complexidade administrativa
- Suporta comunicação segura entre máquinas sem abrir portas
- Traz embutidos descoberta automática de serviços e emissão automática de HTTPS com base no Let's Encrypt
Como funciona
- Em vez de um cluster complexo, é composto por uma rede simples de máquinas, oferecendo uma infraestrutura estável sem sobrecarga de manutenção
- Cada máquina participa de uma rede mesh WireGuard, realizando descoberta automática de peers e NAT traversal
- Os contêineres recebem IPs exclusivos e podem se comunicar diretamente entre servidores
- Com uma arquitetura totalmente distribuída, cada máquina sincroniza o estado do cluster sem um nó central de controle
- Mesmo que algumas máquinas fiquem offline, o cluster continua operando
- Controle de toda a infraestrutura com uma CLI semelhante ao Docker
- Com acesso SSH a uma única máquina, é possível fazer deploy, monitoramento e escalonamento
Principais recursos
- Implantação em qualquer lugar: compatível com qualquer máquina Linux, incluindo VMs em nuvem, servidores dedicados e ambientes on-premises
- HTTPS automático: o proxy reverso Caddy embutido emite certificados TLS e ativa HTTPS sem configuração
- Balanceamento de carga: distribui o tráfego entre réplicas de contêineres espalhadas por várias máquinas
- Descoberta de serviços: o DNS embutido rastreia automaticamente a localização dos serviços na rede
- Infrastructure as Code: permite definir toda a stack da aplicação com arquivos Docker Compose existentes
- Sem lock-in de fornecedor: permite misturar livremente nuvem e hardware próprio
1 comentários
Comentários no Hacker News
Olá, sou o criador. Obrigado por compartilhar.
Uncloud é um orquestrador de contêineres sem plano de controle. Em termos simples, é como um Docker Compose distribuído por várias máquinas, com malha WireGuard automática, descoberta de serviços e HTTPS via Caddy. Cada máquina sincroniza o estado do cluster em p2p usando o Corrosion da Fly.io, então não é necessário manter quórum.
Depois de operar Kubernetes tanto em startups quanto em empresas unicórnio, percebi que a maioria das equipes na verdade só precisa rodar bem contêineres em algumas máquinas, com rede, rollout e HTTPS. O overhead operacional do K8s é grande demais para isso.
Os principais recursos são:
Link do projeto: https://github.com/psviderski/uncloud
uc machine initexecutar internamentecurl | bashcom privilégios de root parece arriscado do ponto de vista de segurança. Eu até testaria, mas não rodaria isso em máquinas reais.Passei a maior parte da carreira com Kubernetes, então queria entender qual é a vantagem de uma arquitetura sem plano de controle. Para mim, o plano de controle é justamente a funcionalidade central do K8s.
Algumas centenas de nós e dezenas de milhares de contêineres não são um grande problema com clusters gerenciados e atualizações automáticas. Fico pensando se a dor de quem tenta auto-hospedar K8s é o que está por trás dessas alternativas.
Mesmo se a rede se dividir, cada partição pode continuar operando de forma independente. É uma simplicidade no estilo do antigo Chef ou Ansible, mas com as lições aprendidas com o K8s.
Projeto muito legal. Com certeza quero usar depois.
Se alguém quiser uma alternativa ainda mais simples, o Kamal também é uma boa opção. É uma ferramenta validada em produção, operada por uma empresa que saiu completamente de K8s e da nuvem.
Queria saber se existe algum recurso para fazer hardening de servidor automaticamente quando você define os servidores.
Sou usuário de Docker Swarm. O Uncloud é a primeira alternativa que realmente me parece interessante.
Tenho as seguintes dúvidas:
x-ports: app.example.com:8000/https.Ou dá para customizar a configuração do Caddy com
x-caddy: Caddyfile. Veja os detalhes na documentação oficial.No momento não existe isolamento de rede entre stacks. A discussão sobre isso está em andamento na GitHub Discussion #94.
Fiquei curioso sobre qual comportamento você esperaria.
As respostas para as perguntas 2 e 3 são “ainda não” e “atualmente sim”. Veja também a Discussion #94.
Como alguém que já usou Swarm, fiquei curioso: em que pontos o Swarm te pareceu insuficiente ou incômodo, e onde o Uncloud poderia melhorar isso?
Projeto muito bacana. Também vale olhar outras ferramentas com tema parecido:
Se conhecer mais, seria legal acrescentar.
Testei o Coolify recentemente e achei meio inacabado. No momento uso Dokku, mas gostaria que a UI de gerenciamento de banco de dados fosse melhor.
Estou satisfeito com k3s, mas gosto de ver novas tentativas nesse meio-termo entre Docker Compose e K8s completo. A integração com WireGuard é especialmente interessante.
Ferramenta realmente excelente. Obrigado pelo trabalho.
Fiquei curioso sobre como funciona a replicação de estado no backend. Vi menção a CRDT e protocolo gossip, mas a implementação concreta ainda me parece vaga.
Se não é K8s, por que não Nomad?
Ou seja, fora do uso auto-hospedado, o aproveitamento fica limitado e, na prática, não dá para transformá-lo livremente em serviço. Veja o texto completo da licença.
Como referência, compartilho dois componentes p2p interessantes: