An open API service indexing awesome lists of open source software.

https://github.com/danilosouza55/dns_cloudflare


https://github.com/danilosouza55/dns_cloudflare

Last synced: about 1 month ago
JSON representation

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.