autonomous dns
This commit is contained in:
parent
45c8f985c7
commit
72e5499ab9
4 changed files with 40 additions and 10 deletions
20
Dockerfile
20
Dockerfile
|
@ -1,4 +1,4 @@
|
|||
FROM alpine:3.13.2 AS build
|
||||
FROM alpine:3.13.3 AS build
|
||||
ENV EMAIL monit@sutty.nl
|
||||
|
||||
RUN apk add --no-cache tzdata
|
||||
|
@ -7,33 +7,33 @@ COPY ./monitrc /etc/monitrc
|
|||
RUN chmod 600 /etc/monitrc
|
||||
RUN sed -re "s/@@EMAIL@@/${EMAIL}/" -i /etc/monitrc
|
||||
|
||||
FROM alpine:3.13.2
|
||||
FROM alpine:3.13.3
|
||||
MAINTAINER "f <f@sutty.nl>"
|
||||
|
||||
# TODO: We don't want to receive lots of email, so we'll change this to
|
||||
# a pingy instance that will also work as a status site.
|
||||
ENV EMAIL monit@sutty.nl
|
||||
|
||||
# Sutty's repository
|
||||
RUN echo https://alpine.sutty.nl/alpine/v3.13/sutty >> /etc/apk/repositories
|
||||
RUN wget https://alpine.sutty.nl/alpine/sutty.pub -O /etc/apk/keys/alpine@sutty.nl-5ea884cd.rsa.pub
|
||||
|
||||
# Install monit and remove default config
|
||||
RUN apk upgrade --no-cache
|
||||
RUN apk add --no-cache tini monit
|
||||
RUN apk add --no-cache tini monit knsupdate
|
||||
COPY --from=build /usr/share/zoneinfo/UTC /etc/localtime
|
||||
|
||||
# Create directories
|
||||
RUN install -dm 2750 -o root -g root /etc/monit.d
|
||||
RUN install -dm 2750 -o root -g root /var/lib/monit
|
||||
|
||||
# Install config. monit.conf~ will be activated after allow_networks
|
||||
# runs.
|
||||
# Install config
|
||||
COPY --from=build /etc/monitrc /etc/monitrc
|
||||
COPY ./nsupdate.sh /usr/local/bin/nsupdate
|
||||
COPY ./whatsmyip6.sh /usr/local/bin/whatsmyip6
|
||||
|
||||
# Allow access to the web GUI
|
||||
EXPOSE 2812
|
||||
|
||||
# Sutty's repository
|
||||
RUN echo 'https://alpine.sutty.nl/alpine/v3.13/sutty' >> /etc/apk/repositories
|
||||
RUN wget https://alpine.sutty.nl/alpine/sutty.pub -O /etc/apk/keys/alpine@sutty.nl-5ea884cd.rsa.pub
|
||||
|
||||
# Use tini as init
|
||||
ENTRYPOINT ["/sbin/tini", "--"]
|
||||
|
||||
|
|
5
monitrc
5
monitrc
|
@ -13,4 +13,9 @@ set httpd port 2812
|
|||
allow localhost
|
||||
allow 172.0.0.0/8
|
||||
|
||||
check program nsupdate
|
||||
with path "/usr/local/bin/nsupdate"
|
||||
every 1 cycle
|
||||
if status = 0 then unmonitor
|
||||
|
||||
include /etc/monit.d/*.conf
|
||||
|
|
22
nsupdate.sh
Executable file
22
nsupdate.sh
Executable file
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Registers the local IPv6 address to the DNS
|
||||
|
||||
IP6="`whatsmyip6`"
|
||||
KNOT="${KNOT:-${IP6}}"
|
||||
|
||||
test -z "${IP6}" && exit 1
|
||||
test -z "${KNOT}" && exit 1
|
||||
test -z "${DOMAIN}" && exit 1
|
||||
|
||||
knsupdate <<DNS
|
||||
server ${KNOT}
|
||||
zone ${DOMAIN}.
|
||||
origin ${DOMAIN}.
|
||||
ttl 60
|
||||
add ${HOSTNAME} AAAA ${IP6}
|
||||
send
|
||||
quit
|
||||
DNS
|
||||
|
||||
exit $?
|
3
whatsmyip6.sh
Executable file
3
whatsmyip6.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
ip address show ${1:-eth0} | grep inet6 | grep global | tr -s " " | cut -d " " -f 3 | cut -d / -f 1
|
Loading…
Reference in a new issue