Este site roda na Cloudflare e a única coisa que eu pago é o domínio. Hospedagem, DNS, certificado HTTPS, CDN e deploy automático saem de graça, no plano free.

Abaixo está o passo a passo exatamente como foi feito aqui, e por que vale a pena ter um site seu.

Por que ter um site próprio

LinkedIn, X e Medium são ótimos pra alcance, mas o conteúdo fica na casa dos outros: o algoritmo muda, o formato muda, o post some no feed em dois dias. Um site com domínio próprio é o contrário:

  • É o seu histórico. O que você estudou, escreveu e construiu fica num lugar só, organizado do seu jeito e com link permanente.
  • É prova, não promessa. Currículo diz “sei Laravel”; um post explicando como o container do Laravel funciona mostra.
  • Te mantém relevante. Escrever obriga a entender de verdade. Cada post é uma nota de estudo que outra pessoa também pode usar, e que você pode linkar em entrevista, PR ou conversa.
  • O domínio é seu. Enquanto você renovar (são R$ 40 por ano), o endereço continua o mesmo, mesmo que amanhã você troque de hospedagem.

O que é pago e o que é grátis

Item Onde Custo
Domínio (.dev.br, .com.br…) Registro.br R$ 40/ano (menos de R$ 4/mês)
DNS Cloudflare Grátis
Hospedagem do site estático Cloudflare Pages Grátis
Certificado HTTPS Cloudflare Grátis, renovação automática
CDN e proteção contra DDoS Cloudflare Grátis
Deploy automático a cada push Cloudflare Pages + GitHub Grátis

No plano free do Pages, as requisições a arquivos estáticos são ilimitadas. Os limites que importam são 500 builds por mês, 1 build por vez, até 20.000 arquivos por site e 25 MiB por arquivo. Pra um site pessoal, isso nunca vira problema.

Passo a passo

1. Registre o domínio no Registro.br

Domínios .br são registrados no Registro.br. Pra quem é dev, o .dev.br é uma boa opção, e foi o que usei aqui (matheusandreatta.dev.br). Você precisa de CPF ou CNPJ e paga R$ 40 por ano, menos de R$ 4 por mês.

Na hora do cadastro, pode deixar o DNS padrão. Ele vai ser trocado no passo 3.

2. Adicione o domínio na Cloudflare

Crie uma conta na Cloudflare, clique em Add a domain, informe o domínio e escolha o plano Free. No fim, a Cloudflare mostra dois nameservers pra você usar. Aqui foram irma.ns.cloudflare.com e oswald.ns.cloudflare.com. Os seus vão ter outros nomes.

3. Aponte o DNS do Registro.br pra Cloudflare

No painel do Registro.br, abra o domínio, vá em DNS → Alterar servidores DNS e troque pelos dois nameservers que a Cloudflare te deu.

A propagação pode levar de minutos a algumas horas. Quando terminar, a Cloudflare mostra o domínio como Active e passa a responder pelo DNS.

4. Tenha o site num repositório Git

Qualquer gerador de site estático serve: Astro, Hugo, Next em modo export, ou HTML puro. Este site usa Astro + Tailwind. O npm run build gera tudo em dist/, só HTML, CSS e pouco JS, sem servidor.

Suba o projeto pro GitHub (ou GitLab).

5. Crie o projeto no Cloudflare Pages

No painel da Cloudflare, vá em Workers & Pages → Create → Pages → Connect to Git, autorize o GitHub e escolha o repositório. Na configuração do build:

  • Framework preset: Astro
  • Build command: npm run build
  • Build output directory: dist

Se o projeto exige uma versão específica do Node (este exige >=22.12), defina a variável de ambiente NODE_VERSION no projeto.

Depois do primeiro deploy, o site já fica no ar num endereço *.pages.dev.

Uma nota de como foi aqui: a primeira tentativa foi com Workers + Static Assets, usando um wrangler.jsonc e um comando de deploy próprio. Funciona, mas pra um site estático é configuração a mais. Troquei pro Pages clássico, que dispensa o Wrangler e faz o deploy sozinho a cada push.

E se o meu site for só HTML, CSS e JS?

Não precisa de Astro, Node nem build. Os passos 1, 2, 3, 6 e 7 continuam iguais; só muda a forma de subir os arquivos. São dois caminhos:

Opção A: com Git (recomendado). Coloque o index.html e o resto dos arquivos num repositório e conecte ao Pages como no passo 5, mas com:

  • Framework preset: None
  • Build command: deixe em branco
  • Build output directory: a pasta onde está o index.html (/ se for a raiz do repositório)

Você continua ganhando deploy automático a cada push e URL de preview por branch.

Opção B: sem Git, arrastando a pasta. Em Workers & Pages → Create application → Drag and drop your files, dê um nome ao projeto, arraste a pasta do site e clique em Deploy site. Pra atualizar, é só subir uma nova versão da pasta no mesmo projeto.

Dois cuidados com a opção B:

  • O upload pelo navegador aceita até 1.000 arquivos, com até 25 MiB cada.
  • Um projeto criado assim não pode virar um projeto com Git depois. Se um dia você quiser deploy automático, vai precisar criar outro projeto e reconectar o domínio.

Se você gosta de terminal, dá pra fazer a mesma coisa com npx wrangler pages deploy ./pasta-do-site.

6. Conecte o domínio ao projeto

No projeto do Pages, abra Custom domains → Set up a custom domain e adicione o domínio raiz (matheusandreatta.dev.br) e o www. Como o DNS já está na Cloudflare, ela cria os registros sozinha e emite o certificado HTTPS.

7. Ajustes que valem a pena

  • SSL/TLS → Edge Certificates → Always Use HTTPS: redireciona todo acesso HTTP pra HTTPS.
  • Proteja o domínio contra spoofing de e-mail. Se você não envia e-mail pelo domínio, publique um registro TXT v=spf1 -all. Ele diz pro mundo que nenhum servidor está autorizado a mandar e-mail em seu nome. Este site usa exatamente isso.
  • Opcional, também grátis: Web Analytics da Cloudflare, sem cookies, pra ver visitas, e Email Routing, pra criar um contato@seudominio que encaminha pro seu Gmail.

Como fica o dia a dia

O fluxo vira só Git:

  1. Escrevo o post em Markdown.
  2. Faço o push pra main.
  3. O Pages faz o build e publica em cerca de um minuto.

Branches que não são a main ganham uma URL de preview própria, então dá pra revisar uma mudança no ar antes de mergear.

Checklist

  • Domínio registrado no Registro.br
  • Domínio adicionado na Cloudflare (plano Free)
  • Nameservers do Registro.br apontando pra Cloudflare
  • Site num repositório Git (ou uma pasta de HTML pro upload direto)
  • Projeto no Cloudflare Pages conectado ao repositório
  • Domínio raiz e www configurados como custom domain
  • Always Use HTTPS ligado
  • SPF -all se você não envia e-mail pelo domínio