{"id":17211998,"url":"https://github.com/refraction-ray/simple-ddns","last_synced_at":"2026-04-18T07:36:33.722Z","repository":{"id":53533584,"uuid":"180710062","full_name":"refraction-ray/simple-ddns","owner":"refraction-ray","description":"A lightweight flask app with ddns-like utilities","archived":false,"fork":false,"pushed_at":"2021-03-25T22:34:32.000Z","size":13,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-05T21:41:42.252Z","etag":null,"topics":["ddns","flask"],"latest_commit_sha":null,"homepage":null,"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/refraction-ray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-11T03:49:18.000Z","updated_at":"2019-06-27T15:05:10.000Z","dependencies_parsed_at":"2022-08-20T12:20:24.966Z","dependency_job_id":null,"html_url":"https://github.com/refraction-ray/simple-ddns","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/refraction-ray/simple-ddns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-ray%2Fsimple-ddns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-ray%2Fsimple-ddns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-ray%2Fsimple-ddns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-ray%2Fsimple-ddns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/refraction-ray","download_url":"https://codeload.github.com/refraction-ray/simple-ddns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-ray%2Fsimple-ddns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31961347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ddns","flask"],"created_at":"2024-10-15T02:59:01.013Z","updated_at":"2026-04-18T07:36:33.706Z","avatar_url":"https://github.com/refraction-ray.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Usage\n\n## Server side\n\nJust `./run.sh` or use gunicorn to run the flask app if you like.\n\n### Configurations\n\nOne can change the default configuration in `config.yaml` or write in `config_override.yaml` to overwrite the corresponding default options.\n\n* CACHE_TYPE: `simple`, `fs` and `redis` are supported, which utilize memory, file and redis db as cache backend respectively. If fs or redis cache is configured, further cache related options should be set, see `app/cache.py` for details.\n* CACHE_TIMEOUT: the storage time of ip address, 0 for no time out\n* AUTH_SALT: the password for ip registration.\n* TIME_ZONE: keep the server and client sync when talking about time, eg. 8 for Asia/Beijing\n* PROXY_SETTING: 0 for no proxy, 1 for nginx as the reverse proxy of the app, remember editing the config of nginx to add the line `proxy_set_header X-Real-IP $remote_addr;` in the corresponding server part.\n* CACHE_KEY: no real meaning, any string to avoid key collsion for general usage\n* LOG_ITEMS: determine how many items are recorded as history change\n\n## Client side\n\nFirstly, one should make sure python package click and requests as well as *nix CLI tool curl and jq are installed on your system.\n\nTo notify your ip with the server, try `python3 client/regip.py -h hostname -s serverip -p authcode`.\n\nYou can add this command to crontab to keep the server sync with the ip address of local machines.\n\nGetting the ip of given host is as simple as `curl -s serverip/api/query/hostname|jq --raw-out .ip`.\n\nIf you want to update your hosts according to the server records, try `sudo python3 client/updatehosts.py -s serverip`. And if you make both tasks - push ip to the server (regip.py) and pull ip from the server (updatehosts.py) both as crontab tasks, then you can always use hostname to achieve network relevant tasks just as ddns without worrying ip changing. \n\nOn the other hand, you can also add `serverip/api/source` as a cloud hosts to softwares supporting this feature, eg. SwitchHosts.\n\n*Note: serverip should include the protocol head, i.e `http://` or `https://`. For example, serverip can be in the form https://example.com or http://8.8.8.8*.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefraction-ray%2Fsimple-ddns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frefraction-ray%2Fsimple-ddns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefraction-ray%2Fsimple-ddns/lists"}