mirror of
https://github.com/mykitserver/docker-ddns-ipv64.git
synced 2025-12-06 16:39:06 +01:00
commit
This commit is contained in:
26
Dockerfile
Normal file
26
Dockerfile
Normal 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
3
data/cronjob
Normal 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
24
data/ddns-update.sh
Normal 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
40
data/entrypoint.sh
Normal 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
23
data/healthcheck.sh
Normal 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
1
data/updip.txt
Normal file
@@ -0,0 +1 @@
|
||||
1.1.1.1
|
||||
22
docker-compose.yml
Normal file
22
docker-compose.yml
Normal 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
|
||||
Reference in New Issue
Block a user