A fork of elmerfds/docker-bind,
which is a fork of sameersbn/bind.
This fork simply updates the ubuntu, webmin, and bind versions used for the container.
It also adds cron
so that you can configure automatic zone resigning.
NOTE This fork has NOT been tested extensively, or really even much at all. I'm using it, but that's pretty much it.
I make no claims that it is compatible with the elmerfds
fork, or that it is stable in any capacity.
Backup your configuration before switching to this image.
Use at your own peril.
Tag | Description | Build Status |
---|---|---|
latest | main/stable |
Program | Version |
---|---|
bind9 | 9.18.24 |
Webmin | 2.111 |
You can build the dockerfile locally to select different versions if you'd like:
$ docker build --build-arg BIND_VERSION=<some other version> --build-arg WEBMIN_VERSION=<yet another version> .
You should back up your data
dir before making this switch in case something goes wrong
After backing up your config, simply switch the image
key in compose.yml
to use rickyelopez/webmin-bind
,
and bring up the service as you normally do (e.g. with docker compose up -d
).
After starting up, webmin automatically detects a new version of the base OS,
and presents a button on the dashboard to update its internal configuration.
From the minimal testing I have done, switching to this image from elmerfds/bind
only required modifying named.conf
to remove some
configuration parameters which had been deprecated in the newer version of bind
used in this container. If you end up in this position,
the log (which you can access using docker compose logs bind --tail=20 -f
, for example) will tell you which parts of your named.conf
need to be corrected.
Alternatively, you could start the container and check the configuration from within it using the following commands:
# start a container and get a shell in it
$ docker compose run --rm -it webmin_bind /bin/bash
# check the `named` config
$ named-checkconf /etc/bind/named.conf
which should tell you exactly what you need to change. For example:
$ docker compose run --rm webmin_bind /bin/bash
$ root@webmin-bind:/# named-checkconf /etc/bind/named.conf
> /etc/bind/named.conf:12: unknown option 'dnssec-enable'
A fork of sameersbn/bind repo, what's different?
- Multiarch Support:
- amd64
- armv7, arm64 i.e. supports RPi 3/4
Running on Ubuntu HirsuteBind: 9.16.8Webmin: Always pulls latest (during image build)- Added Timezone (TZ) support
Image auto-builds on schedule (every Sat 00:00 BST)Ubuntu updates will be applied during each scheduled build- Reverse Proxy friendly (utkuozdemir/docker-bind)
- Fixes to utkuozdemir/docker-bind's 'Reverse Proxy friendly' update.
- Cleanup of config & miniserv.conf when variables are used & then removed
- Removing duplicate entries to config & miniserv.conf
Docker container image for BIND DNS server bundled with the Webmin interface.
BIND is open source software that implements the Domain Name System (DNS) protocols for the Internet. It is a reference implementation of those protocols, but it is also production-grade software, suitable for use in high-volume and high-reliability applications.
Automated builds of the image are available on Dockerhub and is the recommended method of installation.
docker pull rickyelopez/webmin-bind
Alternatively you can build the image yourself.
docker build -t rickyelopez/webmin-bind github.com/rickyelopez/docker-webmin-bind
Docker Run:
docker run --name bind -d --restart=unless-stopped \
-p 53:53/tcp -p 53:53/udp -p 10000:10000/tcp \
-v /path/to/persistent/data/dir:/data \
rickyelopez/webmin-bind
OR
Docker Compose
bind:
container_name: bind
hostname: bind
network_mode: bridge
image: rickyelopez/webmin-bind
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- 10000:10000/tcp
volumes:
- /path/to/persistent/data/dir:/data
environment:
- WEBMIN_ENABLED=true
- WEBMIN_INIT_SSL_ENABLED=false
- WEBMIN_INIT_REFERERS=dns.domain.com
- WEBMIN_INIT_REDIRECT_PORT=10000
- ROOT_PASSWORD=password
- TZ=Europe/London
When the container is started the Webmin service is also started and is accessible from the web browser at https://serverIP:10000. Login to Webmin with the username root
and password password
. Specify --env ROOT_PASSWORD=secretpassword
on the docker run
command to set a password of your choosing. The launch of Webmin can be disabled if not required.
Container images are configured using parameters passed at runtime (such as those above).
Parameter | Function |
---|---|
-p 53:53/tcp -p 53:53/udp |
DNS TCP/UDP port |
-p 10000/tcp |
Webmin port |
-e WEBMIN_ENABLED=true |
Enable/Disable Webmin (true/false) |
-e ROOT_PASSWORD=password |
Set an initial password for Webmin root. Has no effect after a password has been set on first startup. Has no effect when the launch of Webmin is disabled. |
-e WEBMIN_INIT_SSL_ENABLED=false |
Enable/Disable Webmin SSL (true/false). If Webmin should be served via SSL or not. Defaults to true . |
-e WEBMIN_INIT_REFERERS |
Enable/Disable Webmin SSL (true/false). Sets the allowed referrers to Webmin. Set this to your domain name of the reverse proxy. Example: mywebmin.example.com . Defaults to empty (no referrer) |
-e WEBMIN_INIT_REDIRECT_PORT |
The port Webmin is served from. Set this to your reverse proxy port, such as 443 . Defaults to 10000 . |
-e WEBMIN_INIT_REDIRECT_SSL |
Enable/Disable Webmin SSL redirection after login (true/false). Set this to true if behind a SSL terminator. Defaults to false |
-e BIND_EXTRA_FLAGS |
Default set to -g |
-v /data |
Mount data directory for persistent config |
-e TZ=Europe/London |
Specify a timezone to use e.g. Europe/London |