https://github.com/danilosouza55/dns_cloudflare
https://github.com/danilosouza55/dns_cloudflare
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/danilosouza55/dns_cloudflare
- Owner: danilosouza55
- License: mit
- Created: 2026-01-26T02:15:47.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-26T02:24:00.000Z (5 months ago)
- Last Synced: 2026-01-26T17:45:26.265Z (5 months ago)
- Language: JavaScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cloudflare DDNS
> Atualizador automático de registro DNS no Cloudflare para IP dinâmico.
## Visão Geral
Projeto simples que verifica periodicamente o IP público e atualiza um registro DNS no Cloudflare.
## Infraestrutura
- Containerizado com `Docker` e orquestrado via `docker-compose`.
- Serviço: `cloudflare-ddns` (definido em `docker-compose.yml`).
- A imagem é construída a partir do `Dockerfile` do repositório.
- Variáveis de ambiente carregadas a partir de `.env` (veja seção abaixo).
## Requisitos
- Node.js >= 18
- npm
- (Opcional) Docker e docker-compose para execução em contêiner
## Variáveis de Ambiente
No arquivo `.env` (não comitar este arquivo em repositórios públicos):
- `CLOUDFLARE_API_TOKEN` — Token da API Cloudflare com permissão para editar DNS (recomendado: escopo `Zone.DNS` apenas).
- `CLOUDFLARE_ZONE_ID` — ID da zone do domínio no Cloudflare.
- `CLOUDFLARE_RECORD_NAME` — Nome do registro a ser atualizado (ex.: `sub.domain.com`).
- `CHECK_INTERVAL` — Intervalo em minutos entre verificações (ex.: `5`).
Exemplo `.env`:
```
CLOUDFLARE_API_TOKEN=seu_token_aqui
CLOUDFLARE_ZONE_ID=seu_zone_id_aqui
CLOUDFLARE_RECORD_NAME=sub.exemplo.com
CHECK_INTERVAL=5
```
## Como usar (Local)
1. Instale dependências:
```bash
npm install
```
2. Configure o arquivo `.env` com as variáveis acima.
3. Execute:
```bash
npm start
```
Saída esperada: log de inicialização informando o registro e o intervalo. Se receber "ERRO: CLOUDFLARE_API_TOKEN e CLOUDFLARE_ZONE_ID são obrigatórios!", verifique o `.env`.
## Como usar (Docker)
1. Coloque o `.env` no diretório do projeto (o `docker-compose.yml` referencia `env_file: - .env`).
2. Build e subida do container em background:
```bash
docker-compose up --build -d
```
3. Acompanhar logs:
```bash
docker-compose logs -f cloudflare-ddns
```
Para reiniciar o serviço:
```bash
docker-compose restart cloudflare-ddns
```
## Troubleshooting
- Erro sobre variáveis faltando: confirme que `.env` existe e as variáveis `CLOUDFLARE_API_TOKEN` e `CLOUDFLARE_ZONE_ID` estão preenchidas.
- Permissão negada ao atualizar DNS: verifique o escopo do token no painel do Cloudflare (precisa de `Zone.DNS:Edit` para a zone correta).
- Verifique se o `CLOUDFLARE_RECORD_NAME` corresponde exatamente ao registro no painel (incluindo subdomínio).
- Logs do container: `docker-compose logs -f` ajudam a depurar falhas de rede ou erros da API.
## Segurança
- Nunca commit o arquivo `.env` com tokens reais.
- Use segredos do Docker ou gerenciadores de segredos em produção.
- Restrinja o token do Cloudflare ao mínimo de permissões necessárias e limite-o à zone específica.
## Desenvolvimento e Contribuição
- Sinta-se livre para abrir issues e pull requests.
- Mantenha compatibilidade com Node.js >= 18.
## Licença
Este projeto está licenciado sob a licença MIT — veja o arquivo `LICENSE` para detalhes.
Resumo: uso, cópia, modificação e distribuição são permitidos sob os termos da licença MIT.