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.jsonce 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@seudominioque encaminha pro seu Gmail.
Como fica o dia a dia
O fluxo vira só Git:
- Escrevo o post em Markdown.
- Faço o push pra
main. - 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
wwwconfigurados como custom domain - Always Use HTTPS ligado
- SPF
-allse você não envia e-mail pelo domínio