{"id":29728565,"url":"https://github.com/function61/function53","last_synced_at":"2025-07-25T02:33:47.043Z","repository":{"id":144235314,"uuid":"163434422","full_name":"function61/function53","owner":"function61","description":"A DNS server for your LAN that blocks ads/malware and encrypts your DNS traffic","archived":false,"fork":false,"pushed_at":"2020-12-22T13:35:22.000Z","size":159,"stargazers_count":10,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-17T03:15:00.878Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://function61.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/function61.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":"2018-12-28T17:29:25.000Z","updated_at":"2025-02-04T18:45:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"023fb638-ebdf-4d2a-b8a1-57b79b07704e","html_url":"https://github.com/function61/function53","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/function61/function53","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Ffunction53","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Ffunction53/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Ffunction53/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Ffunction53/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/function61","download_url":"https://codeload.github.com/function61/function53/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Ffunction53/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266944332,"owners_count":24010486,"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","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"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":[],"created_at":"2025-07-25T02:32:08.411Z","updated_at":"2025-07-25T02:33:47.035Z","avatar_url":"https://github.com/function61.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build status](https://github.com/function61/function53/workflows/Build/badge.svg)\n[![Download](https://img.shields.io/github/downloads/function61/function53/total.svg?style=for-the-badge)](https://github.com/function61/function53/releases)\n[![Download](https://img.shields.io/docker/pulls/fn61/function53.svg?style=for-the-badge)](https://hub.docker.com/r/fn61/function53/)\n\nWhat\n----\n\nA DNS server for your LAN that blocks ads/malware and encrypts your DNS traffic.\n\nDesigned to work on Raspberry Pi (much like Pi-hole), but works elsewhere as well.\n\n![](docs/metrics.png)\n\n\nWhy?\n----\n\nThe below features were important to me, so let's compare what's available:\n\n| Project        | Ad blocking | Encrypted DNS | Metrics | Query latencies | Clean install | Reasonable programming language |\n|----------------|-------------|---------------|---------|-----------------|---------------|---------------|\n| function53     | ✓           | ✓             | ✓       | ✓               | ✓             | ✓ (Go)        |\n| dnscrypt-proxy | ✓           | ✓             | [Not coming](https://github.com/jedisct1/dnscrypt-pro✓y/issues/337) | No | ✓ | ✓ (Go) |\n| coredns        | [Maybe coming](https://github.com/coredns/coredns/issues/2267) | ✓             | ✓       | ✓               | ✓             | ✓ (Go) |\n| pihole         | ✓           | [Manual config](https://docs.pi-hole.net/guides/dns-over-https/) | [Plugin](https://github.com/eko/pihole-exporter)  | No (average latency, but no distribution) | No | No (PHP) |\n| AdGuard        | ✓           | ✓             | [Not yet](https://github.com/AdguardTeam/AdGuardHome/issues/516) | No (average latency, but no distribution) | ✓ | ✓ (Go) |\n\nDefinitions:\n\n| Term            | Definition                    |\n|-----------------|-------------------------------|\n| Encrypted DNS   | DoH (DNS-over-HTTP) or DoT (DNS-over-TLS, i.e. TCP-flavoured DNS but over TLS) |\n| Metrics         | Prometheus-compatible metrics (some projects might have built-in-only metrics, but that's not enough) |\n| Query latencies | Metrics should include query latency distribution |\n| Clean install   | Minimal changes to the system, preferably single binary (Pi-hole needs so many dependencies, and even the Docker image for Pi-hole looks too complicated.) |\n| Reasonable programming language | Uses memory safe, typed programming language |\n\nI also had [reliability problems with dnscrypt-proxy](https://github.com/coredns/coredns/issues/2267#issuecomment-450131975).\n\n\nHow to install\n--------------\n\n### Docker\n\n```console\n$ docker run -d \\\n\t--name function53 \\\n\t--restart always \\\n\t--net host \\\n\tfn61/function53:TAG\n```\n\nNote:\n\n- You can find the tag from Docker Hub\n- It starts with reasonable default config. If you want to customize it, add `-v /home/pi/function53/config.json:/function53/config.json` to `$ docker run ..`\n\n\n### Manual install\n\nThis assumes you're using Raspberry Pi. The URL is different for amd64.\n\n```\n$ mkdir ~/function53 \u0026\u0026 cd ~/function53/\n$ VERSION_TO_DOWNLOAD=\"...\" # find this from Bintray. Looks like: 20180828_1449_b9d7759cf80f0b4a\n$ sudo curl --location --fail --output function53 \"https://dl.bintray.com/function61/dl/function53/$VERSION_TO_DOWNLOAD/function53_linux-arm\" \u0026\u0026 sudo chmod +x function53\n$ ./function53 write-default-config\n$ cat config.json\n\n... inspect the configuration to see if it suits you\n\n$ ./function53 write-systemd-unit-file\nWrote unit file to /etc/systemd/system/function53.service\nRun to enable on boot \u0026 to start now:\n        $ systemctl enable function53\n        $ systemctl start function53\n        $ systemctl status function53\n```\n\nNOTE: You may need `$ sudo` for some of those commands.\n\nAfter starting function53, check with `$ dig` or `$ nslookup` (nslookup works the same on\nWindows if you like it better) that the name resolution works:\n\n```\n$ nslookup joonas.fi \u003cip of your DNS server\u003e\n$ dig joonas.fi @\u003cip of your DNS server\u003e\n```\n\nTo test ad blocking, lookup `adtech.de`.\n\n\nLinks\n-----\n\n- https://github.com/jedisct1/dnscrypt-proxy/wiki/Public-blacklists\n- https://dnscrypt.info/public-servers/\n\n\nHow to build \u0026 develop\n----------------------\n\n[How to build \u0026 develop](https://github.com/function61/turbobob/blob/master/docs/external-how-to-build-and-dev.md)\n(with Turbo Bob, our build tool). It's easy and simple!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunction61%2Ffunction53","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunction61%2Ffunction53","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunction61%2Ffunction53/lists"}