Add per-domain Namecheap DDNS env setup
This commit is contained in:
@@ -56,3 +56,28 @@ Note: some Namecheap setups require enabling Dynamic DNS per host in their panel
|
||||
|
||||
- Place your real Namecheap Dynamic DNS token in `/etc/ddclient/ddclient.conf`.
|
||||
- Do not commit real API tokens to this repo. Use the template at `templates/ddclient/ddclient.conf.template` as a reference.
|
||||
- The Namecheap **Dynamic DNS Password** (not the API key) is required for each domain.
|
||||
|
||||
## Environment variable list (per domain)
|
||||
|
||||
These are used by the installer when it writes `/etc/ddclient/ddclient.conf`:
|
||||
|
||||
- `NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_CLOUD`
|
||||
- `NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_COM`
|
||||
- `NAMECHEAP_DDNS_PASSWORD_PORTFOLIOJOURNAL_APP`
|
||||
- `NAMECHEAP_DDNS_PASSWORD_XSLTPLAYGROUND_COM`
|
||||
- `NAMECHEAP_DDNS_PASSWORD_OLALLALAB_ORG`
|
||||
|
||||
## Simple shell setup for Alpine (root login shell)
|
||||
|
||||
This helper script appends the exports to `/root/.profile` for the default `ash` login shell:
|
||||
|
||||
```sh
|
||||
./scripts/setup-ddclient-env-alpine.sh
|
||||
```
|
||||
|
||||
Edit the `REPLACE_ME` values in `/root/.profile`, then re-login or run:
|
||||
|
||||
```sh
|
||||
. /root/.profile
|
||||
```
|
||||
|
||||
@@ -5,7 +5,11 @@ ALPINE_RELEASE_FILE="/etc/alpine-release"
|
||||
REPO_FILE="/etc/apk/repositories"
|
||||
DDCLIENT_DIR="/etc/ddclient"
|
||||
DDCLIENT_CONF="${DDCLIENT_DIR}/ddclient.conf"
|
||||
NAMECHEAP_TOKEN="${NAMECHEAP_API_TOKEN:-API_TOKEN_NAMECHEAP}"
|
||||
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
|
||||
@@ -28,8 +32,9 @@ mkdir -p "$DDCLIENT_DIR"
|
||||
if [ ! -f "$DDCLIENT_CONF" ]; then
|
||||
umask 077
|
||||
cat <<CONF > "$DDCLIENT_CONF"
|
||||
# ddclient.conf placeholder. Replace API_TOKEN_NAMECHEAP with your real token
|
||||
# or set NAMECHEAP_API_TOKEN in the environment before running this script.
|
||||
# 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).
|
||||
# See templates/ddclient/ddclient.conf.template in this repo for full example.
|
||||
|
||||
daemon=300
|
||||
@@ -40,10 +45,38 @@ web=dynamicdns.park-your-domain.com/getip
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=example.com
|
||||
password=${NAMECHEAP_TOKEN}
|
||||
login=alexandre-vazquez.cloud
|
||||
password=${TOKEN_AV_CLOUD}
|
||||
|
||||
dyn.example.com
|
||||
dyn.alexandre-vazquez.cloud
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=alexandre-vazquez.com
|
||||
password=${TOKEN_AV_COM}
|
||||
|
||||
dyn.alexandre-vazquez.com
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=portfoliojournal.app
|
||||
password=${TOKEN_PJ_APP}
|
||||
|
||||
dyn.portfoliojournal.app
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=xsltplayground.com
|
||||
password=${TOKEN_XSLT_COM}
|
||||
|
||||
dyn.xsltplayground.com
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=olallalab.org
|
||||
password=${TOKEN_OLALLA_ORG}
|
||||
|
||||
dyn.olallalab.org
|
||||
CONF
|
||||
chmod 600 "$DDCLIENT_CONF"
|
||||
echo "Created $DDCLIENT_CONF with placeholder values."
|
||||
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
PROFILE_FILE="/root/.profile"
|
||||
MARKER_START="# Namecheap DDNS env (ddclient)"
|
||||
MARKER_END="# End Namecheap DDNS env"
|
||||
|
||||
if [ ! -f "$PROFILE_FILE" ]; then
|
||||
touch "$PROFILE_FILE"
|
||||
fi
|
||||
|
||||
if grep -q "$MARKER_START" "$PROFILE_FILE"; then
|
||||
echo "Env block already present in $PROFILE_FILE. Edit it there if needed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cat <<'CONF' >> "$PROFILE_FILE"
|
||||
|
||||
# Namecheap DDNS env (ddclient)
|
||||
export NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_CLOUD="REPLACE_ME"
|
||||
export NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_COM="REPLACE_ME"
|
||||
export NAMECHEAP_DDNS_PASSWORD_PORTFOLIOJOURNAL_APP="REPLACE_ME"
|
||||
export NAMECHEAP_DDNS_PASSWORD_XSLTPLAYGROUND_COM="REPLACE_ME"
|
||||
export NAMECHEAP_DDNS_PASSWORD_OLALLALAB_ORG="REPLACE_ME"
|
||||
# End Namecheap DDNS env
|
||||
CONF
|
||||
|
||||
echo "Added Namecheap DDNS env placeholders to $PROFILE_FILE."
|
||||
echo "Edit the REPLACE_ME values, then re-login or run: . $PROFILE_FILE"
|
||||
@@ -1,5 +1,6 @@
|
||||
# ddclient.conf template for Namecheap Dynamic DNS (multi-domain).
|
||||
# Replace API_TOKEN_NAMECHEAP with your real token.
|
||||
# Replace the placeholders with your Namecheap Dynamic DNS Passwords
|
||||
# (not the Namecheap API key).
|
||||
|
||||
daemon=300
|
||||
syslog=yes
|
||||
@@ -10,34 +11,34 @@ web=dynamicdns.park-your-domain.com/getip
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=alexandre-vazquez.cloud
|
||||
password=API_TOKEN_NAMECHEAP
|
||||
password=NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_CLOUD
|
||||
|
||||
dyn.alexandre-vazquez.cloud
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=alexandre-vazquez.com
|
||||
password=API_TOKEN_NAMECHEAP
|
||||
password=NAMECHEAP_DDNS_PASSWORD_ALEXANDRE_VAZQUEZ_COM
|
||||
|
||||
dyn.alexandre-vazquez.com
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=portfoliojournal.app
|
||||
password=API_TOKEN_NAMECHEAP
|
||||
password=NAMECHEAP_DDNS_PASSWORD_PORTFOLIOJOURNAL_APP
|
||||
|
||||
dyn.portfoliojournal.app
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=xsltplayground.com
|
||||
password=API_TOKEN_NAMECHEAP
|
||||
password=NAMECHEAP_DDNS_PASSWORD_XSLTPLAYGROUND_COM
|
||||
|
||||
dyn.xsltplayground.com
|
||||
|
||||
protocol=namecheap
|
||||
server=dynamicdns.park-your-domain.com
|
||||
login=olallalab.org
|
||||
password=API_TOKEN_NAMECHEAP
|
||||
password=NAMECHEAP_DDNS_PASSWORD_OLALLALAB_ORG
|
||||
|
||||
dyn.olallalab.org
|
||||
|
||||
Reference in New Issue
Block a user