This commit is contained in:
alcapone1933
2022-10-28 18:50:16 +02:00
parent 63d3256520
commit c41ac8d94b
7 changed files with 139 additions and 0 deletions

26
Dockerfile Normal file
View File

@@ -0,0 +1,26 @@
FROM alpine:latest
# ipv64.net
LABEL maintainer="alcapone1933 <alcapone1933@cosanostra-cloud.de>" \
org.opencontainers.image.created="$(date +%Y-%m-%d\ %H:%M)" \
org.opencontainers.image.authors="alcapone1933 <alcapone1933@cosanostra-cloud.de>" \
org.opencontainers.image.url="https://hub.docker.com/r/alcapone1933/drone-build-test" \
org.opencontainers.image.version="v.0.0.1" \
org.opencontainers.image.ref.name="alcapone1933/ddns-ipv64" \
org.opencontainers.image.title="DDNS Updater ipv64.net" \
org.opencontainers.image.description="Community DDNS Updater fuer ipv64.net"
ENV TZ=Europe/Berlin
ENV CRON_TIME="*/15 * * * *"
ENV CRON_TIME_DIG="00 06 * * *"
RUN apk add --update --no-cache tzdata curl bash tini bind-tools && \
rm -rf /var/cache/apk/*
RUN mkdir -p /data /usr/local/bin/ /etc/cron.d/
COPY data /data
RUN mv /data/entrypoint.sh /usr/local/bin/entrypoint.sh && mv /data/cronjob /etc/cron.d/container_cronjob && mv /data/healthcheck.sh /usr/local/bin/healthcheck.sh && \
chmod 755 /data/ddns-update.sh && chmod 755 /usr/local/bin/entrypoint.sh && chmod 755 /usr/local/bin/healthcheck.sh && \
chmod 755 /etc/cron.d/container_cronjob && touch /var/log/cron.log
VOLUME [ "/data" ]
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/entrypoint.sh"]
HEALTHCHECK --interval=5s --timeout=30s --start-period=5s --retries=2 CMD /usr/local/bin/healthcheck.sh

3
data/cronjob Normal file
View File

@@ -0,0 +1,3 @@
# Cronjob DDNS Updater ipv64.net
*/15 * * * * /bin/bash /data/ddns-update.sh >> /var/log/cron.log 2>&1
00 06 * * * echo "`date +%Y-%m-%d\ %H:%M:%S` Deine DOMAIN ${DOMAIN_IPV64} HAT DIE IP=`dig +short ${DOMAIN_IPV64} A`" >> /var/log/cron.log 2>&1

24
data/ddns-update.sh Normal file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
DATUM=$(date +%Y-%m-%d\ %H:%M:%S)
PFAD="/data"
IP=$(curl -4s https://ipv64.net/wieistmeineip.php | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | tail -n 1)
UPDIP=$(cat $PFAD/updip.txt)
sleep 2
if [ "$IP" == "$UPDIP" ]; then
echo
echo "$DATUM KEIN UPDATE - Aktuelle IP=$UPDIP"
echo
else
echo
echo "$DATUM Update ..."
sleep 1
echo "$DATUM UPDATE!!! - Update IP= $IP - Alte-IP: $UPDIP"
sleep 1
echo "$IP" > $PFAD/updip.txt
echo
# curl -4sSL "https://ipv64.net/update.php?key=${DOMAIN_KEY}&domain=${DOMAIN_IPV64}&ip=${IP}"
# curl -4sSL https://ipv64.net/update.php?key=${DOMAIN_KEY}=${DOMAIN_IPV64}&ip=<ipaddr>&ip6=<ip6addr>
echo
fi

40
data/entrypoint.sh Normal file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# set -x
set -e
sleep 15
echo "================================ START DDNS UPDATER IPV64.NET ================================"
if [ -z "${DOMAIN_KEY:-}" ] ; then
echo
echo "Sie haben keinen DOMAIN Key gesetzt, schauen die unter https://ipv64.net/dyndns.php nach bei DynDNS Updatehash"
echo
exit 1
else
echo
echo "Sie haben einen DOMAIN Key gesetzt"
echo
fi
if [ -z "${DOMAIN_IPV64:-}" ] ; then
echo
echo "Sie haben keine DOMAIN gesetzt, schauen die unter https://ipv64.net/dyndns.php nach bei Domain"
echo
exit 1
else
echo
echo "Sie haben eine DOMAIN gesetzt"
echo
echo "Deine DOMAIN $DOMAIN_IPV64"
fi
curl -sSL --fail https://ipv64.net/ > /dev/null || exit 1
echo "${CRON_TIME} /bin/bash /data/ddns-update.sh >> /var/log/cron.log 2>&1" > /etc/cron.d/container_cronjob
echo "$CRON_TIME_DIG" 'echo "`date +%Y-%m-%d\ %H:%M:%S` Deine DOMAIN ${DOMAIN_IPV64} HAT DIE IP=`dig +short ${DOMAIN_IPV64} A`" >> /var/log/cron.log 2>&1' >> /etc/cron.d/container_cronjob
sleep 2
/usr/bin/crontab /etc/cron.d/container_cronjob
/usr/sbin/crond
set tail -f /var/log/cron.log "$@"
exec "$@"

23
data/healthcheck.sh Normal file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -e
if [ -z "${DOMAIN_KEY:-}" ] ; then
echo
echo "Sie haben keinen DOMAIN Key gesetzt, schauen die unter https://ipv64.net/dyndns.php nach bei DynDNS Updatehash"
echo
exit 1
else
echo
echo "Sie haben einen DOMAIN Key gesetzt"
echo
fi
if [ -z "${DOMAIN_IPV64:-}" ] ; then
echo
echo "Sie haben keine DOMAIN gesetzt, schauen die unter https://ipv64.net/dyndns.php nach bei Domain"
echo
exit 1
else
echo
echo "Sie haben einen DOMAIN gesetzt"
echo
fi
curl -sSL --fail https://ipv64.net/ > /dev/null || exit 1

1
data/updip.txt Normal file
View File

@@ -0,0 +1 @@
1.1.1.1

22
docker-compose.yml Normal file
View File

@@ -0,0 +1,22 @@
version: "3.9"
services:
ddnss-cron:
build:
dockerfile: ./Dockerfile
image: alcapone1933/ddns-ipv64:v0.0.1
container_name: ddns-ipv64
# restart: always
# volumes:
# - data:/data
environment:
- "TZ=Europe/Berlin"
# Standert Alle 15 Minuten
- "CRON_TIME=*/1 * * * *"
- "CRON_TIME_DIG=*/2 00 * * *"
- "DOMAIN_IPV64=
- "DOMAIN_KEY="
# volumes:
# data:
# name: ddns