Files
ddhclient/scripts/install-ddclient-alpine.sh
T
alexandrev-tibco 186d5efe7c +1
2026-02-01 15:22:12 +01:00

106 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
set -eu
ALPINE_RELEASE_FILE="/etc/alpine-release"
REPO_FILE="/etc/apk/repositories"
DDCLIENT_DIR="/etc/ddclient"
DDCLIENT_CONF="${DDCLIENT_DIR}/ddclient.conf"
TOKEN_AV_CLOUD="${NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_CLOUD:-NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_CLOUD}"
TOKEN_AV_COM="${NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_COM:-NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_COM}"
TOKEN_PJ_APP="${NAMECHEAP_DDNS_PASSWORD_PORTFOLIOJOURNAL_APP:-NAMECHEAP_DDNS_PASSWORD_PORTFOLIOJOURNAL_APP}"
TOKEN_XSLT_COM="${NAMECHEAP_DDNS_PASSWORD_XSLTPLAYGROUND_COM:-NAMECHEAP_DDNS_PASSWORD_XSLTPLAYGROUND_COM}"
TOKEN_OLALLA_ORG="${NAMECHEAP_DDNS_PASSWORD_OLALLALAB_ORG:-NAMECHEAP_DDNS_PASSWORD_OLALLALAB_ORG}"
if [ ! -f "$ALPINE_RELEASE_FILE" ]; then
echo "Error: $ALPINE_RELEASE_FILE not found. This script is for Alpine Linux." >&2
exit 1
fi
# Enable community repo if missing.
release="$(cut -d. -f1,2 "$ALPINE_RELEASE_FILE")"
community_url="https://dl-cdn.alpinelinux.org/alpine/v${release}/community"
if ! grep -q "^${community_url}$" "$REPO_FILE" 2>/dev/null; then
echo "Enabling Alpine community repository: $community_url"
echo "$community_url" >> "$REPO_FILE"
fi
apk update
apk add --no-cache ddclient curl ca-certificates
mkdir -p "$DDCLIENT_DIR"
if [ ! -f "$DDCLIENT_CONF" ]; then
umask 077
cat <<CONF > "$DDCLIENT_CONF"
# ddclient.conf placeholder. Replace values below with your real Namecheap
# Dynamic DNS Passwords, or set per-domain environment variables before
# running this script (see docs/dyndns-namecheap-alpine.md).
#
# This placeholder updates both:
# - dyn.<domain> (recommended dynamic host)
# - @ (apex/root) if you choose to keep it dynamic
# Wildcard (*) is a DNS CNAME record and is not updated by ddclient.
# See templates/ddclient/ddclient.conf.template in this repo for full example.
daemon=300
syslog=yes
ssl=yes
use=web
web=dynamicdns.park-your-domain.com/getip
protocol=namecheap, \
server=dynamicdns.park-your-domain.com, \
login=alexandre-vazquez.cloud, \
password=${TOKEN_AV_CLOUD}
dyn
@
protocol=namecheap, \
server=dynamicdns.park-your-domain.com, \
login=alexandre-vazquez.com, \
password=${TOKEN_AV_COM}
dyn
@
protocol=namecheap, \
server=dynamicdns.park-your-domain.com, \
login=portfoliojournal.app, \
password=${TOKEN_PJ_APP}
dyn
@
protocol=namecheap, \
server=dynamicdns.park-your-domain.com, \
login=xsltplayground.com, \
password=${TOKEN_XSLT_COM}
dyn
@
protocol=namecheap, \
server=dynamicdns.park-your-domain.com, \
login=olallalab.org, \
password=${TOKEN_OLALLA_ORG}
dyn
@
CONF
chmod 600 "$DDCLIENT_CONF"
echo "Created $DDCLIENT_CONF with placeholder values."
else
chmod 600 "$DDCLIENT_CONF"
fi
rc-update add ddclient default
rc-service ddclient restart || rc-service ddclient start
echo ""
echo "Next steps:"
echo "- Edit $DDCLIENT_CONF and replace placeholder login/password and domains."
echo "- Validate public IP: curl -s https://dynamicdns.park-your-domain.com/getip"
echo "- Debug run: ddclient -daemon=0 -debug -verbose -noquiet"
echo "- Logs: tail -f /var/log/messages or logread -f"