{"id":17750504,"url":"https://github.com/franklbt/dnsquery","last_synced_at":"2025-04-01T16:30:30.456Z","repository":{"id":259273876,"uuid":"877263532","full_name":"franklbt/DnsQuery","owner":"franklbt","description":"🍓 A private DoH and DoT server made to be run side by side with Pi-Hole","archived":false,"fork":false,"pushed_at":"2024-10-25T11:38:30.000Z","size":71,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-26T10:36:32.954Z","etag":null,"topics":["csharp","dns","dns-server","doh","dotnet","high-performance","pihole","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"C#","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/franklbt.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-23T11:17:29.000Z","updated_at":"2024-10-25T11:38:33.000Z","dependencies_parsed_at":"2024-10-27T10:40:48.431Z","dependency_job_id":"c3ca9b87-017a-417c-970a-8fccb0c2bbe8","html_url":"https://github.com/franklbt/DnsQuery","commit_stats":null,"previous_names":["franklbt/dnsquery"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franklbt%2FDnsQuery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franklbt%2FDnsQuery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franklbt%2FDnsQuery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/franklbt%2FDnsQuery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/franklbt","download_url":"https://codeload.github.com/franklbt/DnsQuery/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246670353,"owners_count":20814970,"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":["csharp","dns","dns-server","doh","dotnet","high-performance","pihole","raspberry-pi"],"created_at":"2024-10-26T12:05:10.181Z","updated_at":"2025-04-01T16:30:30.175Z","avatar_url":"https://github.com/franklbt.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DnsQuery\n\nAn highly optimized .NET service adding DNS over HTTP (DoS) and DNS over TLS (DoH) capabilities to Pi-Hole.\n\nBy letting RPi be accessible from the web, it can become a dns available for all devices while on the go (laptop, android phone...).\n\nNeed 443 and 853 ports to be free on Raspberry Pi (RPi).\n\n## Dependencies\n\n- .NET 9 SDK: [Download](https://dotnet.microsoft.com/fr-fr/download/dotnet/9.0)\n- A RPi with Pi-Hole installed\n\n## Build\n\nLaunch the following command:\n```bash\ndotnet publish -c Release\n```\nto build the project. The output will be located inside `/bin/Release/net9.0/linux-arm64`.\n\n## Install on Raspberry PI\n\nBefore installing, the RPi must be accessible from the web, with a domain.\nYou can add a AAAA record from your dns provider pointing directly to the IPV6 address of the RPi.\nThen [generate a certificate](https://eff-certbot.readthedocs.io/en/latest/using.html#renewing-certificates) with lets encrypt from the RPi for this domain. Save the path and the password of the certificate.\n\nYou can copy `linux-arm64` folder on your RPi and then launch theses commands inside the copied folder:\n\n```bash\nsudo setcap 'cap_net_bind_service=+ep' ./DnsQuery\nchmod +x ./DnsQuery\n```\n\nAfter that, we need to edit `appsettings.json` file with the following values:\n\n```json\n{\n  ...\n  \"BaseDnsServer\": \"\u003cpihole_ip_address\u003e\",\n  \"CertificatePath\": \"\u003ccertificate_path\u003e\",\n  \"CertificatePassword\": \"\u003ccertificate_password\u003e\"\n}\n```\n\nAnd then launch `./DnsQuery` inside the folder.\n\nYou can test that everything work by running this request (ask for google.com DNS record): \n\n```\nhttps://\u003cyour_domain\u003e/dns-query?dns=Wi8BAAABAAAAAAAABmdvb2dsZQNjb20AAAEAAQ \n```\n\nYou can automate the execution of this service by automating the launch via `systemd` for example.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffranklbt%2Fdnsquery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffranklbt%2Fdnsquery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffranklbt%2Fdnsquery/lists"}