{"id":49369873,"url":"https://github.com/woahbase/alpine-pdnsd","last_synced_at":"2026-04-27T22:02:25.998Z","repository":{"id":201884845,"uuid":"122246590","full_name":"woahbase/alpine-pdnsd","owner":"woahbase","description":"Local Nameserver with persistent caching/recursion on Alpine Linux + S6","archived":false,"fork":false,"pushed_at":"2019-02-03T09:20:41.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-10-20T04:14:08.696Z","etag":null,"topics":["alpine","dns","docker","nameserver","pdnsd"],"latest_commit_sha":null,"homepage":"https://woahbase.online/#/images/alpine-pdnsd","language":"Makefile","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/woahbase.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}},"created_at":"2018-02-20T19:39:30.000Z","updated_at":"2023-10-20T06:42:45.619Z","dependencies_parsed_at":"2023-10-20T07:46:36.576Z","dependency_job_id":null,"html_url":"https://github.com/woahbase/alpine-pdnsd","commit_stats":null,"previous_names":["woahbase/alpine-pdnsd"],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/woahbase/alpine-pdnsd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woahbase%2Falpine-pdnsd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woahbase%2Falpine-pdnsd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woahbase%2Falpine-pdnsd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woahbase%2Falpine-pdnsd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/woahbase","download_url":"https://codeload.github.com/woahbase/alpine-pdnsd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/woahbase%2Falpine-pdnsd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32356602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["alpine","dns","docker","nameserver","pdnsd"],"created_at":"2026-04-27T22:02:19.322Z","updated_at":"2026-04-27T22:02:25.992Z","avatar_url":"https://github.com/woahbase.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build status][251]][232] [![commit][255]][231] [![version:x86_64][256]][235] [![size:x86_64][257]][235] [![version:armhf][258]][236] [![size:armhf][259]][236]\n\n## [Alpine-PDNSd][234]\n#### Container for Alpine Linux + Proxy DNS Daemon (caching recursive DNS Server)\n---\n\nThis [image][233] containerizes the [PDNSd][135] DNS server with\npersistent caching-to-disk and recursion/forwarding, mainly used\nto resolve domain names (both local devices and outsiders) and\nblocking ads inside the local network.\n\nBased on [Alpine Linux][131] from my [alpine-s6][132] image with\nthe [s6][133] init system [overlayed][134] in it.\n\nThe image is tagged respectively for the following architectures,\n* **armhf**\n* **x86_64** (retagged as the `latest` )\n\n**armhf** builds have embedded binfmt_misc support and contain the\n[qemu-user-static][105] binary that allows for running it also inside\nan x64 environment that has it.\n\n---\n#### Get the Image\n---\n\nPull the image for your architecture it's already available from\nDocker Hub.\n\n```\n# make pull\ndocker pull woahbase/alpine-pdnsd:x86_64\n```\n\n---\n#### Run\n---\n\nBefore you run..\n\n* Default configuration is at `/etc/pdnsd.conf`, the default is\n  provided in `root/defaults`, put your custom config file at\n  `/data/pdnsd.conf` at it will be copied over at start.\n\n* Local names are served from `/data/hosts/hosts.local`, if not\n  found, `/etc/hosts` is copied.\n\n* A default blocklist from the following sources are provided as\n  default at `/etc/hosts.blocked`. On start, this is copied over\n  to `/data/hosts/hosts.blocked`, if not existing already. Replace\n  this file to use your own blocking list. Current build\n  combines the following lists ..\n\n  * [AdAway's Sources](https://github.com/AdAway/AdAway/wiki/hostssources)\n  * [Someonewhocares](http://someonewhocares.org/hosts/zero/hosts)\n  * [StevenBlack's List](https://github.com/StevenBlack/hosts)\n  * [hpHosts](https://hosts-file.net/)\n\n* To unblock a specific domain from the blocklist, put it inside\n  `/data/hosts/hosts.whitelisted` ( Needs restart ).\n  To manually unblock using `sed`..\n\n```\nsed -i \\\n  -e 's/\\([ . ]\\)rt.com/\\1notrt.com/g' \\\n  /data/hosts/*\n```\n\n* On many systemd derivations e.g. ArchLinux, 53/udp may be\n  already taken by systemd-resolved. In that case, it will need to\n  be stopped first before dns server is started. Run,\n\n```\nsudo systemctl stop systed-resolved\n```\n\nIf you want to run images for other architectures, you will need\nto have binfmt support configured for your machine. [**multiarch**][104],\nhas made it easy for us containing that into a docker container.\n\n```\n# make regbinfmt\ndocker run --rm --privileged multiarch/qemu-user-static:register --reset\n```\n\nWithout the above, you can still run the image that is made for your\narchitecture, e.g for an x86_64 machine..\n\nRunning `make` starts the service.\n\n```\n# make\ndocker run --rm -it \\\n  --name docker_pdnsd --hostname pdnsd \\\n  -e PGID=1000 -e PUID=1000 \\\n  -c 256 -m 400m -p 53:53/tcp -p 53:53/udp \\\n  -v data:/data \\\n  -v /etc/hosts:/etc/hosts:ro \\\n  -v /etc/localtime:/etc/localtime:ro \\\n  woahbase/alpine-pdnsd:x86_64\n```\n\nStop the container with a timeout, (defaults to 2 seconds)\n\n```\n# make stop\ndocker stop -t 2 docker_pdnsd\n```\n\nRemoves the container, (always better to stop it first and `-f`\nonly when needed most)\n\n```\n# make rm\ndocker rm -f docker_pdnsd\n```\n\nRestart the container with\n\n```\n# make restart\ndocker restart docker_pdnsd\n```\n\n---\n#### Shell access\n---\n\nGet a shell inside a already running container,\n\n```\n# make shell\ndocker exec -it docker_pdnsd /bin/bash\n```\n\nset user or login as root,\n\n```\n# make rshell\ndocker exec -u root -it docker_pdnsd /bin/bash\n```\n\nTo check logs of a running container in real time\n\n```\n# make logs\ndocker logs -f docker_pdnsd\n```\n\n---\n### Development\n---\n\nIf you have the repository access, you can clone and\nbuild the image yourself for your own system, and can push after.\n\n---\n#### Setup\n---\n\nBefore you clone the [repo][231], you must have [Git][101], [GNU make][102],\nand [Docker][103] setup on the machine.\n\n```\ngit clone https://github.com/woahbase/alpine-pdnsd\ncd alpine-pdnsd\n```\nYou can always skip installing **make** but you will have to\ntype the whole docker commands then instead of using the sweet\nmake targets.\n\n---\n#### Build\n---\n\nYou need to have binfmt_misc configured in your system to be able\nto build images for other architectures.\n\nOtherwise to locally build the image for your system.\n[`ARCH` defaults to `x86_64`, need to be explicit when building\nfor other architectures.]\n\n```\n# make ARCH=x86_64 build\n# sets up binfmt if not x86_64\ndocker build --rm --compress --force-rm \\\n  --no-cache=true --pull \\\n  -f ./Dockerfile_x86_64 \\\n  --build-arg ARCH=x86_64 \\\n  --build-arg DOCKERSRC=alpine-s6 \\\n  --build-arg PGID=1000 \\\n  --build-arg PUID=1000 \\\n  --build-arg USERNAME=woahbase \\\n  -t woahbase/alpine-pdnsd:x86_64 \\\n  .\n```\n\nTo check if its working..\n\n```\n# make ARCH=x86_64 test\ndocker run --rm -it \\\n  --name docker_pdnsd --hostname pdnsd \\\n  -e PGID=1000 -e PUID=1000 \\\n  --entrypoint pdnsd\n  woahbase/alpine-pdnsd:x86_64 \\\n  '--version'\n```\n\nAnd finally, if you have push access,\n\n```\n# make ARCH=x86_64 push\ndocker push woahbase/alpine-pdnsd:x86_64\n```\n\n---\n### Maintenance\n---\n\nSources at [Github][106]. Built at [Travis-CI.org][107] (armhf / x64 builds). Images at [Docker hub][108]. Metadata at [Microbadger][109].\n\nMaintained by [WOAHBase][204].\n\n[101]: https://git-scm.com\n[102]: https://www.gnu.org/software/make/\n[103]: https://www.docker.com\n[104]: https://hub.docker.com/r/multiarch/qemu-user-static/\n[105]: https://github.com/multiarch/qemu-user-static/releases/\n[106]: https://github.com/\n[107]: https://travis-ci.org/\n[108]: https://hub.docker.com/\n[109]: https://microbadger.com/\n\n[131]: https://alpinelinux.org/\n[132]: https://hub.docker.com/r/woahbase/alpine-glibc\n[133]: https://skarnet.org/software/s6/\n[134]: https://github.com/just-containers/s6-overlay\n[135]: http://members.home.nl/p.a.rombouts/pdnsd/\n\n[201]: https://github.com/woahbase\n[202]: https://travis-ci.org/woahbase/\n[203]: https://hub.docker.com/u/woahbase\n[204]: https://woahbase.online/\n\n[231]: https://github.com/woahbase/alpine-pdnsd\n[232]: https://travis-ci.org/woahbase/alpine-pdnsd\n[233]: https://hub.docker.com/r/woahbase/alpine-pdnsd\n[234]: https://woahbase.online/#/images/alpine-pdnsd\n[235]: https://microbadger.com/images/woahbase/alpine-pdnsd:x86_64\n[236]: https://microbadger.com/images/woahbase/alpine-pdnsd:armhf\n\n[251]: https://travis-ci.org/woahbase/alpine-pdnsd.svg?branch=master\n\n[255]: https://images.microbadger.com/badges/commit/woahbase/alpine-pdnsd.svg\n\n[256]: https://images.microbadger.com/badges/version/woahbase/alpine-pdnsd:x86_64.svg\n[257]: https://images.microbadger.com/badges/image/woahbase/alpine-pdnsd:x86_64.svg\n\n[258]: https://images.microbadger.com/badges/version/woahbase/alpine-pdnsd:armhf.svg\n[259]: https://images.microbadger.com/badges/image/woahbase/alpine-pdnsd:armhf.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoahbase%2Falpine-pdnsd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwoahbase%2Falpine-pdnsd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoahbase%2Falpine-pdnsd/lists"}