Executando verificação de segurança...
29

🏠 Self‑hosting sem drama: simplificado e poderoso

Olá pessoal, tudo certo? Recentemente postei aqui sobre meu projeto pessoal, Kronos. Hoje, venho trazer uma forma simples e poderosa de self hosting, que uso hoje no site do Kronos.

Fase 1 - Cloudflare

Para o roteamento https iremos usar o Cloudflare Zero Trust. Vou passar algo bem simples aqui, mas recomendo ver aqui também: Create a tunnel (dashboard)

  1. Entrar no Zero Trust

    • Acesse dash.teams.cloudflare.comNetworks > TunnelsCreate a tunnel.
  2. Escolher o conector

    • Na tela “Create a tunnel”, selecione Cloudflared e clique Next
  3. Dar um nome

    • Ex.: kronos-home. Clique Save tunnel
  4. Copiar o comando mágico

    • A página “Connect your instance” mostra um único comando, já pronto para seu sistema:

      cloudflared service install <TOKEN>
      
    • Copie esse comando (o <TOKEN> é exclusivo do túnel).


🐳 Fase 2 — Docker Swarm!

Primeiramente, vamos entender algumas coisas do Swarm

ConceitoPra que serve
Swarm modeTransforma várias máquinas (ou só a sua) em um cluster.
Manager × WorkerManager decide; Workers executam. Em single‑node ambos papéis ficam na mesma máquina.
ServiceÉ o “deployment unit”. Define imagem, portas e quantas cópias (réplicas) rodar.
Overlay networkRede virtual criptografada que liga todos os containers do cluster.
Rolling updateSwarm troca containers antigos por novos sem downtime.

Comandos básicos:

docker swarm init               # vira manager
docker node ls                  # lista nós
docker service ls               # lista services
docker service scale web=3      # sobe réplicas

Fontes: documentação oficial do docker stack deploy e Swarm (Docker Documentation, Docker Documentation)


🚀 Fase 3 — Deploy

compose.yml (recorte)

version: "3.8"
services:
  web:
    image: kronos-site:${CACHEBUST}
    ports:
      - "2020:80"
    deploy:
      replicas: 2            # escalar é só mudar o número
      update_config:
        order: start-first   # rolling update suave
    networks: [proxy]

networks:
  proxy:
    external: true           # overlay compartilhado

Script de deploy

#!/usr/bin/env bash
set -e
export CACHEBUST=$(date +%s)

docker swarm init || true
docker compose build --build-arg CACHEBUST=$CACHEBUST
docker stack deploy -c compose.yml kronos --with-registry-auth
  • CACHEBUST força rebuild limpo.
  • docker stack deploy cria ou atualiza o Service, aplica health‑checks e faz rolling update.
  • Se precisar escalar: docker service scale kronos_app=5 — Swarm cria containers idênticos instantaneamente.
    • Pra saber o nome do service rode docker service ls

🎁 Com isso, ganhamos:

  • HTTPS & WAF gerenciados pela Cloudflare
  • Zero NAT: não toca no roteador
  • Deploy idempotente: repete o script sem medo
  • Escalabilidade: replicas: + overlay network

Futuro

Pra não ficar tanta coisa aqui, estou montando um post novo de como eu automatizei esse processo com:

  1. SSH só com chave e ufw fechado.
  2. git bare repo + post‑receive hook para pull automático.
  3. GitHub Webhook → push = deploy.

É isso, obrigado pessoal!

Carregando publicação patrocinada...
4

Pessoal, dokploy! Estou usando tem quase 1 ano e é maravilhoso, opensource, ja lida com toda a parte de proxy (configuração automatizada usando traefik), bancos comuns à um click, organização de projetos e namespaces (para sua VPS que roda diversos projetos), loja com diversos apps como n8n, nocodb, minio todos com docker-compose ja pre-configurados e seguindo boas praticas (senhas randomicas geradas automaticamente), integração com gitHub/Lab/Ea/Etc para fazer CICD similar ao Heroku e Vercel. E MUIIITO MAIS!

Sim pareceu ate propaganda, mas não, não é, não vou passar link de referência, nem vender curso, nem nada. Só estou recomendando a melhor ferramenta que descobri ano passado e que mudou completamente a minha forma de lidar com infraestrutura. E 100% gratuita (open source), sem pegadinha.

Ah uma última info, o Dokploy utiliza docker swarm por baixo. O ideal é fazer uma instalação limpa na sua VPS (reset completo na maquina e instale o dokploy, depois gerencie tudo por ele na porta 3000 podendo configurar um subdomínio pra ele o que recomendo).

2

Recentemente, fiz dois sistemas rodando no mesmo servidor, então utilizei proxy reverso e certbot para os certificados. Deu um trabalhão montar o docker-compose, essa solução é bem mais simples. Vou ver se consigo fazer no meu contexto. Valeu

1
2