{"id":13563693,"url":"https://github.com/maxisoft/Freenom-dns-updater","last_synced_at":"2025-04-03T20:31:30.758Z","repository":{"id":40617403,"uuid":"51373993","full_name":"maxisoft/Freenom-dns-updater","owner":"maxisoft","description":"A tool to update freenom's dns records","archived":false,"fork":false,"pushed_at":"2021-09-05T01:28:10.000Z","size":176,"stargazers_count":168,"open_issues_count":19,"forks_count":48,"subscribers_count":20,"default_branch":"dev","last_synced_at":"2024-09-18T01:17:27.142Z","etag":null,"topics":["api","cli","command-line-tool","dns","dns-records","docker","freenom","freenom-dns-updater","ipv6","pypi","python","systemd"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxisoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-09T15:02:33.000Z","updated_at":"2024-08-24T02:35:26.000Z","dependencies_parsed_at":"2022-09-17T03:51:21.609Z","dependency_job_id":null,"html_url":"https://github.com/maxisoft/Freenom-dns-updater","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2FFreenom-dns-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2FFreenom-dns-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2FFreenom-dns-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2FFreenom-dns-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxisoft","download_url":"https://codeload.github.com/maxisoft/Freenom-dns-updater/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223030680,"owners_count":17076477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cli","command-line-tool","dns","dns-records","docker","freenom","freenom-dns-updater","ipv6","pypi","python","systemd"],"created_at":"2024-08-01T13:01:22.323Z","updated_at":"2024-11-04T16:31:09.834Z","avatar_url":"https://github.com/maxisoft.png","language":"Python","readme":"# Freenom dns updater\n[![GitHub license](https://img.shields.io/github/license/maxisoft/Freenom-dns-updater)](https://github.com/maxisoft/Freenom-dns-updater/blob/main/LICENSE.txt)\n![Unit Test dev and main branch](https://github.com/maxisoft/Freenom-dns-updater/workflows/Unit%20Test%20dev%20and%20main%20branch/badge.svg)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/Freenom-dns-updater)\n[![Total alerts](https://img.shields.io/lgtm/alerts/g/maxisoft/Freenom-dns-updater.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/maxisoft/Freenom-dns-updater/alerts/)\n[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/maxisoft/Freenom-dns-updater.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/maxisoft/Freenom-dns-updater/context:python)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=maxisoft_Freenom-dns-updater\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=maxisoft_Freenom-dns-updater)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=maxisoft_Freenom-dns-updater\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=maxisoft_Freenom-dns-updater)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=maxisoft_Freenom-dns-updater\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=maxisoft_Freenom-dns-updater)\n[![deepcode](https://www.deepcode.ai/api/gh/badge?key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwbGF0Zm9ybTEiOiJnaCIsIm93bmVyMSI6Im1heGlzb2Z0IiwicmVwbzEiOiJGcmVlbm9tLWRucy11cGRhdGVyIiwiaW5jbHVkZUxpbnQiOmZhbHNlLCJhdXRob3JJZCI6MjIxNjYsImlhdCI6MTU5ODc5ODUyNn0.S6xv8IeJvEm6gE7HYJe4wHdv2hIX0tYFvGAZIonb9ac)](https://www.deepcode.ai/app/gh/maxisoft/Freenom-dns-updater/_/dashboard?utm_content=gh%2Fmaxisoft%2FFreenom-dns-updater)\n\nA tool written in python to update [freenom](http://Freenom.com)'s dns records\n\n## Main Features\n* Manage (add/update/remove) a domain's dns record with cli\n* Automatic records updates according to ip (v4/v6) changes\n* Auto renew domains (thanks to [Cedric Farinazzo](https://github.com/cedricfarinazzo))\n\n## Upcoming features\n* Password encryption\n\n## Installation\n```bash\npip install freenom-dns-updater\n```\n## Usage\n\n### Basic usage\nLet's say you want to add or update your main A/AAAA domain records *exemple.tk* with your current ip (v4/v6).\nSimply type :\n```\nfdu record update $LOGIN $PASSWORD exemple.tk\n```\n\nNote that if you don't have a ipv6 access, the tool will detect that and will update only the A record (ipv4) of *example.tk*.\n\nIn order to add or update the subdomain *sub.example.tk*:\n```\nfdu record update $LOGIN $PASSWORD example.tk -n sub\n```\n\n\n### Advanced usage\nIf you want to update multiple (sub)domains you could call the tool for each domains.\nEven better, you can create a configuration file.  \nA configuration is a [YAML](https://en.wikipedia.org/wiki/YAML) file, which look like :\n```YAML\nlogin: yourlogin@somemail.domain\npassword: yourpassword\n\n# list here the records you want to add/update\nrecord:\n  # the following will update both the A and AAAA records with your current ips (v4 and v6).\n  # Note that if you don't have a ipv6 connection, the program'll detect it and will only update the A record (ipv4)\n  - domain: test.tk\n\n  # the following will update both your subdomain's A and AAAA records with your current ips (v4 and v6)\n  - domain: test.tk\n    name: mysubdomain\n\n  # here's more advanced exemples\n\n  # the following will update the AAAA record with a specified ipv6\n  - domain: test2.tk\n    name: # you can omit this line\n    type: AAAA\n    target: \"fd2b:1c1b:3641:1cd8::\" # note that you have to quote ipv6 addresses\n    ttl: 24440\n\n  # the following will update your subdomain's A record with your current ip (v4)\n  - domain: test2.tk\n    name: mysubdomain\n    type: A\n    target: auto # you can omit this line\n\n\n  # you can omit the record type and give only ipv4 or ipv6 addresses.\n  - domain: test2.tk\n    name: ipv6sub\n    target: \"fd2b:1c1b:3641:1cd8::\"\n\n  - domain: test2.tk\n    name: ipv4sub\n    target: \"64.64.64.64\"\n```\n\nIn order to use such configuration, you can use the following command :\n```bash\nfdu update /path/to/config\n```\n\nWhere */path/to/config* can be either:\n- A path to a file (default location is ```/etc/freenom.yml```)\n- A http url (a raw secret [gist](https://gist.githubusercontent.com/maxisoft/1b979b64e4cf5157d58d/raw/freenom.yml) for instance)\n\n## Schedule\nIn order to launch regularly an update, you can launch the tool with :\n```bash\nfdu process -c -i -r -t 3600 /path/to/config\n```\nWhere the params are :  \n\n| param           | description                                          |\n|-----------------|------------------------------------------------------|\n| -c              | cache the ip and update only if there is any changes |\n| -i              | ignore errors when updating                          |\n| -r              | renew the domains                          |\n| -t              | time (in second) to wait between two updates         |\n| /path/to/config | a path or a url to a configuration file              |\n\n\n\n### Using systemd\nFor ease of use a systemd unit file is available along the source code.\n- Save your configuration into ```/etc/freenom.yml```\n- Copy the ```systemd/system/freenom-dns-updater.service``` into a valid systemd unit folder (```/usr/lib/systemd/system/``` for instance).  \n- finally enable the service using\n```\nsystemctl enable freenom-dns-updater\nsystemctl start freenom-dns-updater\n```\n\n\n### Using other Os / services manager\nThere's two straightforward choices :  \n- Launch the previous ```fdu process``` command\n- Schedule the ```fdu update``` command using cron, windows' scheduled task, ...\n\n## Known issues\n- The website [my.freenom.com](my.freenom.com) is not really stable (503/504 errors very often) =\u003e there's 3 retry on every request made by the tool but even with this it's common to face a remote server error   \n\n## Docker image\n[![](https://images.microbadger.com/badges/image/maxisoft/freenom-dns-updater.svg)](https://microbadger.com/images/maxisoft/freenom-dns-updater \"\")\n\nIf you want to run this tool in an \"isolated\" environment there's a docker image available at\n[maxisoft/freenom-dns-updater](https://hub.docker.com/r/maxisoft/freenom-dns-updater/)\n\n### Ipv6\nNote that if you want to use the ipv6 functionality, you have to enable the [docker ipv6 stack](https://docs.docker.com/v1.5/articles/networking/#ipv6)\n\n### Examples\n- Update dns records using a gist config file :\n```bash\ndocker run -it --rm maxisoft/freenom-dns-updater fdu update https://gist.githubusercontent.com/maxisoft/1b979b64e4cf5157d58d/raw/freenom.yml\n```\n- Run the tool in a background docker with a local config file :  \n```bash\ndocker run -d --rm -v /path/to/config:/etc/freenom.yml maxisoft/freenom-dns-updater\n```","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxisoft%2FFreenom-dns-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxisoft%2FFreenom-dns-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxisoft%2FFreenom-dns-updater/lists"}