From 763ef572b78b2a54e108a47e513db0e2ed3cb77d Mon Sep 17 00:00:00 2001 From: alvin Date: Thu, 1 Oct 2026 13:21:14 +0200 Subject: [PATCH] Add docker-apt-http-lxcs.sh --- docker-apt-http-lxcs.sh | 88 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 docker-apt-http-lxcs.sh diff --git a/docker-apt-http-lxcs.sh b/docker-apt-http-lxcs.sh new file mode 100644 index 0000000..0de450d --- /dev/null +++ b/docker-apt-http-lxcs.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +set -u + +echo +echo "==============================================" +echo " Docker APT Repo HTTPS -> HTTP LXC Converter" +echo "==============================================" +echo + +for CTID in $(pct list | awk 'NR>1 {print $1}'); do + + STATUS=$(pct status "$CTID" 2>/dev/null | awk '{print $2}') + NAME=$(pct config "$CTID" 2>/dev/null | awk -F': ' '/^hostname:/ {print $2}') + + echo "----------------------------------------------" + echo "Container: $CTID${NAME:+ ($NAME)}" + echo "Status: $STATUS" + + if [[ "$STATUS" != "running" ]]; then + echo "SKIP: Container is not running." + continue + fi + + OS_ID=$(pct exec "$CTID" -- sh -c \ + '. /etc/os-release 2>/dev/null && echo "$ID"' \ + 2>/dev/null || true) + + if [[ "$OS_ID" != "debian" ]]; then + echo "SKIP: Not Debian." + continue + fi + + MATCHES=$(pct exec "$CTID" -- sh -c ' + grep -RIl \ + "https://download\.docker\.com" \ + /etc/apt/sources.list \ + /etc/apt/sources.list.d \ + 2>/dev/null || true + ') + + if [[ -z "$MATCHES" ]]; then + echo "OK: No HTTPS Docker APT repo found." + continue + fi + + echo "Found Docker repo in:" + + while IFS= read -r FILE; do + [[ -z "$FILE" ]] && continue + + echo " $FILE" + + BACKUP="${FILE}.bak-$(date +%Y%m%d-%H%M%S)" + + pct exec "$CTID" -- sh -c " + cp '$FILE' '$BACKUP' && + sed -i \ + 's|https://download\.docker\.com|http://download.docker.com|g' \ + '$FILE' + " + + if [[ $? -eq 0 ]]; then + echo " CHANGED: https -> http" + echo " Backup: $BACKUP" + else + echo " ERROR: Failed to modify $FILE" + fi + + done <<< "$MATCHES" + + echo + echo "Current Docker repo entries:" + + pct exec "$CTID" -- sh -c ' + grep -RHn \ + "download\.docker\.com" \ + /etc/apt/sources.list \ + /etc/apt/sources.list.d \ + 2>/dev/null || true + ' + + echo +done + +echo "==============================================" +echo " Finished" +echo "==============================================" \ No newline at end of file