{"id":28151553,"url":"https://github.com/v3xlabs/dmn","last_synced_at":"2025-05-15T04:13:01.399Z","repository":{"id":288180677,"uuid":"967093917","full_name":"v3xlabs/dmn","owner":"v3xlabs","description":"Lightweight Domain Management Daemon","archived":false,"fork":false,"pushed_at":"2025-04-25T02:21:06.000Z","size":416,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-25T03:30:52.752Z","etag":null,"topics":["cli","domainmod","domains","rust","whois"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v3xlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-15T23:26:49.000Z","updated_at":"2025-04-25T02:21:10.000Z","dependencies_parsed_at":"2025-04-16T01:30:06.344Z","dependency_job_id":null,"html_url":"https://github.com/v3xlabs/dmn","commit_stats":null,"previous_names":["v3xlabs/dmn"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v3xlabs%2Fdmn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v3xlabs%2Fdmn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v3xlabs%2Fdmn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v3xlabs%2Fdmn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v3xlabs","download_url":"https://codeload.github.com/v3xlabs/dmn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254270683,"owners_count":22042862,"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":["cli","domainmod","domains","rust","whois"],"created_at":"2025-05-15T04:12:38.112Z","updated_at":"2025-05-15T04:13:01.388Z","avatar_url":"https://github.com/v3xlabs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dmn\n\n[![Docker Image 16MB](https://img.shields.io/badge/Docker%20Image-%3C16MB-brightgreen)](https://ghcr.io/v3xlabs/dmn) ![Porkbun Support](https://img.shields.io/badge/Porkbun-Supported-EF7878?logo=porkbun) ![Cloudflare Support](https://img.shields.io/badge/Cloudflare-Supported-F38020?logo=cloudflare) ![Docs using OpenAPI](https://img.shields.io/badge/Docs-OpenAPI-brightgreen?logo=swagger)\n\nA lightweight domain management daemon\n\n## Installation\n\n### Binary \u0026 CLI\n\nYou can download the binary from the [releases page](https://github.com/v3xlabs/dmn/releases).\nThe binary can be used as a cli tool or as a service when invoked as `dmn server`.\n\n### Docker\n\nSimply copy over the `compose.yml` file to your server and run it.\n\n```yml\n# DMN - A lightweight domain management service\nname: dmn\nservices:\n    dmn:\n        image: ghcr.io/v3xlabs/dmn:0.0.8\n        environment:\n            DMN_API_SECRET: abcdefg123456789\n            PORKBUN_API_KEY: abcdefg123456789\n            CLOUDFLARE_API_KEY: abcdefg123456789\n            CLOUDFLARE_EMAIL: hello@example.com\n        volumes:\n            - ./sqlite.db:/data/sqlite.db\n        ports:\n            - \"3000:3000\"\n```\n\n## Usage\n\nThe daemon will automatically keep track of your domains notifying you of new additions, deletions, expiry reminders, and other notifications.\n\n-   `dmn ls` - List all domains\n-   `dmn fzf` - Fuzzy search for a domain\n-   `dmn porkbun`\n    -   `dmn porkbun index` - Index your porkbun domains\n-   `dmn cloudflare`\n    -   `dmn cloudflare index` - Index your cloudflare domains\n-   `dmn whois`\n    -   `dmn whois example.com` - Get the whois information example.com\n    - `dmn whois --json example.com` - Get in json format\n      - `dmn whois --json \u003e example.com \u003e ./whois-example-com.json` - Get in json format and save to file\n-   `dmn server` - Start the daemon in server mode\n\n## Provider Support\n\n| Provider   | Domains                 | DNS                                                              |\n| ---------- | ----------------------- | ---------------------------------------------------------------- |\n| Porkbun    | ✅ Implemented          | ❌ Not implemented yet                                           |\n| Cloudflare | ✅ Using Global API Key | ✅ Using Token API Key (DNS::Read, Zone::Read) or Global API Key |\n| ...        | ...                     | ...                                                              |\n\n## Configuration\n\nYou can configure the daemon by providing any of the configuration variables as either environment variables or by providing a `config.toml` file. You can find an [example config file](./app/config.toml) in the root of the repository.\n\n| Variable   | Required                 | Description                                             |\n| ---------- | ------------------------ | ------------------------------------------------------- |\n| API Secret | Required for server mode | random value                                            |\n| Calendar   | Optional                 | calendar generation (`.ics` format)                     |\n| RSS        | Optional                 | expiry \u0026 registration rss generation (`rss.xml` format) |\n| Porkbun    | Optional                 | domains \u0026 dns                                           |\n| Cloudflare | Optional                 | domains \u0026 dns                                           |\n\n### Calendar\n\nThe calendar feature allows you to generate a calendar of when your domains are expiring.\nYou can enable the calendar and configure it in the `config.toml` file.\n\n```toml\n[calendar]\nenabled = true\n\n```\n\n### RSS\n\nThe rss feature allows you to generate an rss feed of your newly registered or expiring domains.\nYou can enable the rss feature and configure it in the `config.toml` file.\n\n```toml\n[rss]\nenabled = true\nwarn_before = \"30 days\"\n```\n\nThe feeds will be available at `http://\u003chost\u003e:3000/api/expiration.xml` and `http://\u003chost\u003e:3000/api/registration.xml`.\n\n### Providers\n\n#### Cloudflare Token\n\nWhen creating a cloudflare token visit [the dashboard](https://dash.cloudflare.com/profile/api-tokens) and create a new token with the following permissions:\n\n-   Zone: Zone Read\n-   Zone: DNS Read\n\nFor most purposes you will want to select `Include All Zones`, however if you wish to limit the scope of the token you are more then welcome to.\n\nIf you wish you use `domains` however you will need to use your `Global API Key` which you can find in the dashboard.\nThis is due to cloudflare lacking a read-only domain API scope.\n\n#### Porkbun API Key\n\nTo get a porkbun api key visit [the dashboard](https://porkbun.com/account/api).\n\n## API Documentation\n\nYou can find the OpenAPI Documentation at `http://\u003chost\u003e:3000/docs`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv3xlabs%2Fdmn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv3xlabs%2Fdmn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv3xlabs%2Fdmn/lists"}