Este projeto é um script Node.js que atua como um atualizador dinâmico de DNS (DDNS), utilizando a API da Cloudflare. O script atualiza automaticamente registros DNS do tipo A
quando o IP público do servidor muda, garantindo que os domínios apontem para o IP correto.
- Node.js instalado na máquina.
- Conta configurada no Cloudflare com a API Key gerada.
- Domínios gerenciados pela Cloudflare.
- Variáveis de ambiente configuradas em um arquivo
.env
.
-
Clone o repositório:
git clone <URL_DO_REPOSITÓRIO> cd <NOME_DO_REPOSITÓRIO>
-
Instale as dependências:
npm install
-
Configure o arquivo
.env
: Crie um arquivo.env
na raiz do projeto com o seguinte conteúdo:CLOUDFLARE_API_KEY=SuaChaveDeAPICloudflare DOMAINS=dominio1.com,dominio2.com ARECORDS=www.dominio1.com,api.dominio2.com
- CLOUDFLARE_API_KEY: Chave de API gerada na sua conta Cloudflare.
- DOMAINS: Lista de domínios gerenciados pela Cloudflare, separados por vírgulas.
- ARECORDS: Lista de subdomínios cujos registros DNS serão atualizados, separados por vírgulas.
-
Execute o script:
node index.js
-
Obtenção do IP Público: O script usa o serviço
https://api.ipify.org
para obter o IP público atual. -
Integração com Cloudflare:
- Obtém o Zone ID de cada domínio fornecido.
- Identifica o ID dos registros DNS do tipo
A
a serem atualizados. - Atualiza os registros DNS com o novo IP público.
-
Execução Contínua:
- O script executa uma verificação inicial para atualizar os registros DNS, caso necessário.
- Após a primeira execução, verifica a cada 5 minutos se o IP público mudou.
O script gera logs para facilitar o acompanhamento das atividades:
- IP público obtido ou erro durante a obtenção.
- Atualizações realizadas nos registros DNS.
- Erros de comunicação com a API da Cloudflare.
Este projeto é disponibilizado sob a licença MIT. Consulte o arquivo LICENSE
para mais informações.
This project is a Node.js script that functions as a Dynamic DNS (DDNS) updater, using the Cloudflare API. It automatically updates A
records whenever the server's public IP changes, ensuring the domains always point to the correct IP.
- Node.js installed on the machine.
- Configured Cloudflare account with a generated API Key.
- Domains managed by Cloudflare.
- Environment variables set up in a
.env
file.
-
Clone the repository:
git clone <REPOSITORY_URL> cd <REPOSITORY_NAME>
-
Install dependencies:
npm install
-
Configure the
.env
file: Create a.env
file in the project root with the following content:CLOUDFLARE_API_KEY=YourCloudflareAPIKey DOMAINS=domain1.com,domain2.com ARECORDS=www.domain1.com,api.domain2.com
- CLOUDFLARE_API_KEY: API Key generated from your Cloudflare account.
- DOMAINS: List of domains managed by Cloudflare, separated by commas.
- ARECORDS: List of subdomains whose DNS records will be updated, separated by commas.
-
Run the script:
node index.js
-
Fetch Public IP: The script uses
https://api.ipify.org
to fetch the current public IP. -
Cloudflare Integration:
- Fetches the Zone ID for each specified domain.
- Identifies the ID of
A
DNS records to be updated. - Updates the DNS records with the new public IP.
-
Continuous Execution:
- The script performs an initial check to update DNS records if necessary.
- After the first run, it checks every 5 minutes for public IP changes.
The script generates logs to facilitate activity tracking:
- Public IP fetched or errors during fetching.
- Updates made to DNS records.
- Errors communicating with the Cloudflare API.
This project is licensed under the MIT License. See the LICENSE
file for details.
O PM2 é um gerenciador de processos para Node.js que facilita a execução contínua de aplicações, permitindo que elas permaneçam ativas mesmo após um reinício do servidor.
Abaixo estão as instruções para instalar e configurar o PM2 para manter o script de DDNS ativo:
-
Instale o PM2 globalmente:
npm install -g pm2
-
Verifique a instalação do PM2:
pm2 --version
Certifique-se de que o comando acima retorna a versão instalada do PM2.
-
Inicie o script usando o PM2:
pm2 start index.js --name ddns-updater
index.js
: O nome do arquivo principal do script.--name ddns-updater
: Um nome amigável para identificar o processo.
-
Confirme que o script está sendo executado:
pm2 list
Esse comando exibirá uma lista de processos gerenciados pelo PM2, incluindo o
ddns-updater
. -
Configure o PM2 para reiniciar automaticamente após um reboot do servidor:
pm2 startup
O comando acima gerará um comando adicional específico para o sistema operacional. Copie e execute o comando gerado.
-
Salve a configuração atual do PM2 para que os processos sejam restaurados após o reinício:
pm2 save
-
Verifique os logs do script:
pm2 logs ddns-updater
-
Reinicie o processo, se necessário:
pm2 restart ddns-updater
-
Pare o processo:
pm2 stop ddns-updater
-
Exclua o processo do PM2:
pm2 delete ddns-updater
- Auto-Restart: O PM2 reinicia automaticamente o script caso ele falhe.
- Logs Centralizados: Todos os logs gerados pelo script podem ser visualizados e gerenciados pelo PM2.
- Persistência: Os scripts gerenciados pelo PM2 continuam ativos mesmo após reinicializações do servidor.
Essa configuração garante que o script de DDNS esteja sempre em execução, mantendo os registros DNS atualizados continuamente e sem a necessidade de intervenção manual.