virtualisierung:proxmox:pom_repo
This is an old revision of the document!
Table of Contents
Proxmox Offline Mirror
blalb albla bla bla
Repos anlegen / verwalten
Es werden vier Repos angelegt.
- 1x PVE
- 3x Debian
PVE 8 Repo - non Sub
proxmox-offline-mirror config mirror add \ --id pve-8-non-sub \ --architectures amd64 \ --architectures all \ --repository 'deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription main contrib' \ --key-path /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg \ --sync true \ --verify true \ --base-dir /opt/pom
Debian 12 Repo - Main
proxmox-offline-mirror config mirror add \ --id debian-12-main \ --architectures amd64 \ --architectures all \ --repository 'deb http://debian.anexia.at/debian bookworm main contrib non-free' \ --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc \ --sync true \ --verify true \ --base-dir /opt/pom \ --skip-sections games \ --skip-sections x11 \ --skip-sections graphics \ --skip-sections video \ --skip-sections sound \ --skip-sections hamradio \ --skip-sections tex \ --skip-packages .*desktop \ --skip-packages gnome.* \ --skip-packages .*gnome.* \ --skip-packages gnome \ --skip-packages gnome3 \ --skip-packages gnome-shell.* \ --skip-packages gnome-themes.* \ --skip-packages gnome-session.* \ --skip-packages gnome-control.* \ --skip-packages gnome-panel.* \ --skip-packages gnome-terminal.* \ --skip-packages gnome-settings.* \ --skip-packages gnome-online.* \ --skip-packages gnome-keyring.* \ --skip-packages libgnome.* \ --skip-packages kde.* \ --skip-packages .*kde.* \ --skip-packages plasma.* \ --skip-packages lxde.* \ --skip-packages xfce.* \ --skip-packages mate.* \ --skip-packages cinnamon.* \ --skip-packages xserver.* \ --skip-packages xorg.* \ --skip-packages wayland.* \ --skip-packages fonts-.* \ --skip-packages xfonts.* \ --skip-packages themes.* \ --skip-packages qt.* \ --skip-packages libqt.* \ --skip-packages libgtk.* \ --skip-packages gtk.* \ --skip-packages sddm.* \ --skip-packages gdm.* \ --skip-packages lightdm.* \ --skip-packages dconf.* \ --skip-packages ffmpeg.* \ --skip-packages vlc.* \ --skip-packages libreoffice.* \ --skip-packages gimp.* \ --skip-packages gedit.* \ --skip-packages xterm.* \ --skip-packages evince.* \ --skip-packages nautilus.* \ --skip-packages pulseaudio.* \ --skip-packages pipewire.* \ --skip-packages alsa.* \ --skip-packages jack.* \ --skip-packages sound.* \ --skip-packages media.* \ --skip-packages cups.* \ --skip-packages printer.* \ --skip-packages poppler.* \ --skip-packages abiword.* \ --skip-packages gnumeric.* \ --skip-packages hunspell.* \ --skip-packages aspell.* \ --skip-packages ibus.* \ --skip-packages uim.* \ --skip-packages caribou.* \ --skip-packages onboard.* \ --skip-packages at-spi.* \ --skip-packages speech-dispatcher.* \ --skip-packages modemmanager.* \ --skip-packages bluetooth.* \ --skip-packages wpa.* \ --skip-packages ppp \ --skip-packages nodejs.* \ --skip-packages npm.* \ --skip-packages ruby.*
Debian 12 Repo - Update
proxmox-offline-mirror config mirror add \ --id debian-12-updates \ --architectures amd64 --architectures all \ --repository 'deb http://debian.anexia.at/debian bookworm-updates main contrib non-free' \ --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc \ --sync true --verify true \ --base-dir /opt/pom \ --skip-sections games \ --skip-sections x11 \ --skip-sections graphics \ --skip-sections video \ --skip-sections sound \ --skip-sections hamradio \ --skip-sections tex \ --skip-packages .*desktop \ --skip-packages gnome.* \ --skip-packages .*gnome.* \ --skip-packages gnome \ --skip-packages gnome3 \ --skip-packages gnome-shell.* \ --skip-packages gnome-themes.* \ --skip-packages gnome-session.* \ --skip-packages gnome-control.* \ --skip-packages gnome-panel.* \ --skip-packages gnome-terminal.* \ --skip-packages gnome-settings.* \ --skip-packages gnome-online.* \ --skip-packages gnome-keyring.* \ --skip-packages libgnome.* \ --skip-packages kde.* \ --skip-packages .*kde.* \ --skip-packages plasma.* \ --skip-packages lxde.* \ --skip-packages xfce.* \ --skip-packages mate.* \ --skip-packages cinnamon.* \ --skip-packages xserver.* \ --skip-packages xorg.* \ --skip-packages wayland.* \ --skip-packages fonts-.* \ --skip-packages xfonts.* \ --skip-packages themes.* \ --skip-packages qt.* \ --skip-packages libqt.* \ --skip-packages libgtk.* \ --skip-packages gtk.* \ --skip-packages sddm.* \ --skip-packages gdm.* \ --skip-packages lightdm.* \ --skip-packages dconf.* \ --skip-packages ffmpeg.* \ --skip-packages vlc.* \ --skip-packages libreoffice.* \ --skip-packages gimp.* \ --skip-packages gedit.* \ --skip-packages xterm.* \ --skip-packages evince.* \ --skip-packages nautilus.* \ --skip-packages pulseaudio.* \ --skip-packages pipewire.* \ --skip-packages alsa.* \ --skip-packages jack.* \ --skip-packages sound.* \ --skip-packages media.* \ --skip-packages cups.* \ --skip-packages printer.* \ --skip-packages poppler.* \ --skip-packages abiword.* \ --skip-packages gnumeric.* \ --skip-packages hunspell.* \ --skip-packages aspell.* \ --skip-packages ibus.* \ --skip-packages uim.* \ --skip-packages caribou.* \ --skip-packages onboard.* \ --skip-packages at-spi.* \ --skip-packages speech-dispatcher.* \ --skip-packages modemmanager.* \ --skip-packages bluetooth.* \ --skip-packages wpa.* \ --skip-packages ppp \ --skip-packages nodejs.* \ --skip-packages npm.* \ --skip-packages ruby.*
Debian 12 Repo - Security
proxmox-offline-mirror config mirror add \ --id debian-12-security \ --architectures amd64 --architectures all \ --repository 'deb http://security.debian.org/debian-security bookworm-security main contrib non-free' \ --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc \ --sync true --verify true \ --base-dir /opt/pom \ --skip-sections games \ --skip-sections x11 \ --skip-sections graphics \ --skip-sections video \ --skip-sections sound \ --skip-sections hamradio \ --skip-sections tex \ --skip-packages .*desktop \ --skip-packages gnome.* \ --skip-packages .*gnome.* \ --skip-packages gnome \ --skip-packages gnome3 \ --skip-packages gnome-shell.* \ --skip-packages gnome-themes.* \ --skip-packages gnome-session.* \ --skip-packages gnome-control.* \ --skip-packages gnome-panel.* \ --skip-packages gnome-terminal.* \ --skip-packages gnome-settings.* \ --skip-packages gnome-online.* \ --skip-packages gnome-keyring.* \ --skip-packages libgnome.* \ --skip-packages kde.* \ --skip-packages .*kde.* \ --skip-packages plasma.* \ --skip-packages lxde.* \ --skip-packages xfce.* \ --skip-packages mate.* \ --skip-packages cinnamon.* \ --skip-packages xserver.* \ --skip-packages xorg.* \ --skip-packages wayland.* \ --skip-packages fonts-.* \ --skip-packages xfonts.* \ --skip-packages themes.* \ --skip-packages qt.* \ --skip-packages libqt.* \ --skip-packages libgtk.* \ --skip-packages gtk.* \ --skip-packages sddm.* \ --skip-packages gdm.* \ --skip-packages lightdm.* \ --skip-packages dconf.* \ --skip-packages ffmpeg.* \ --skip-packages vlc.* \ --skip-packages libreoffice.* \ --skip-packages gimp.* \ --skip-packages gedit.* \ --skip-packages xterm.* \ --skip-packages evince.* \ --skip-packages nautilus.* \ --skip-packages pulseaudio.* \ --skip-packages pipewire.* \ --skip-packages alsa.* \ --skip-packages jack.* \ --skip-packages sound.* \ --skip-packages media.* \ --skip-packages cups.* \ --skip-packages printer.* \ --skip-packages poppler.* \ --skip-packages abiword.* \ --skip-packages gnumeric.* \ --skip-packages hunspell.* \ --skip-packages aspell.* \ --skip-packages ibus.* \ --skip-packages uim.* \ --skip-packages caribou.* \ --skip-packages onboard.* \ --skip-packages at-spi.* \ --skip-packages speech-dispatcher.* \ --skip-packages modemmanager.* \ --skip-packages bluetooth.* \ --skip-packages wpa.* \ --skip-packages ppp \ --skip-packages nodejs.* \ --skip-packages npm.* \ --skip-packages ruby.*
Anzeigen Repo Liste
proxmox-offline-mirror config mirror list
Syncen der Repos
proxmox-offline-mirror mirror snapshot create REPO proxmox-offline-mirror mirror snapshot create-all
Anzeigen der Snapshots
proxmox-offline-mirror mirror snapshot list
Löschen eines Snapshots
proxmox-offline-mirror mirror snapshot remove <repoid> <snapshot>
Löschen eines Repos
proxmox-offline-mirror config mirror remove --id <repoid> --remove-data
proxmox-offline-mirror mirror gc
NGINX vorbereiten
Damit die Repos abgeholt werden können wird NGINX als Webserver her halten.
apt install nginx
NGINX Config
/etc/nginx/sites-enabled/default
root /var/www/html;
location / {
try_files $uri $uri/ =404;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
gzip off;
add_header Cache-Control no-cache;
}
Sync Script
Dieses Script synct die Repos und verlinkt den aktuellen Snapshot zum NGINX.
#!/bin/bash
#####################
### Configuration ###
#####################
BASE_DIR="/opt/pom"
WEB_DIR="/var/www/html"
REPOS=("debian-12-main" "debian-12-updates" "debian-12-security" "pve-8-non-sub")
SYMLINK_NAMES=("debian" "debian-updates" "debian-security" "pve-non-sub")
KEEP_SNAPSHOTS=3 # How many snapshots to keep per repo
##############
### Colors ###
##############
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo_info() {
echo -e "${GREEN}[INFO] $1${NC}"
}
echo_error() {
echo -e "${RED}[ERROR] $1${NC}" >&2
}
########################
### Sync all mirrors ###
########################
echo_info "Syncing all configured mirrors..."
if ! proxmox-offline-mirror mirror snapshot create-all; then
echo_error "Failed to sync mirrors with 'snapshot create-all'."
exit 1
fi
###########################################
### Remove existing symlinks in WEB_DIR ###
###########################################
echo_info "Removing old symlinks in $WEB_DIR..."
for link in "${SYMLINK_NAMES[@]}"; do
if [[ -L "$WEB_DIR/$link" || -e "$WEB_DIR/$link" ]]; then
rm -rf "$WEB_DIR/$link" || {
echo_error "Failed to remove $WEB_DIR/$link"
exit 1
}
fi
done
##################################################
### Create new symlinks to the latest snapshot ###
##################################################
echo_info "Creating symlinks to latest snapshots..."
for i in "${!REPOS[@]}"; do
REPO="${REPOS[$i]}"
LINK_NAME="${SYMLINK_NAMES[$i]}"
SNAPSHOT_DIR="$BASE_DIR/$REPO/"
if [[ ! -d "$SNAPSHOT_DIR" ]]; then
echo_error "Snapshot directory $SNAPSHOT_DIR does not exist."
continue
fi
# Find latest snapshot (sorted lexically, newest last)
LATEST_SNAPSHOT=$(ls -1 "$SNAPSHOT_DIR" | sort | tail -n 1)
if [[ -z "$LATEST_SNAPSHOT" ]]; then
echo_error "No snapshots found for $REPO."
continue
fi
SNAPSHOT_PATH="$SNAPSHOT_DIR/$LATEST_SNAPSHOT"
if [[ ! -d "$SNAPSHOT_PATH" ]]; then
echo_error "Snapshot path $SNAPSHOT_PATH is not a directory."
continue
fi
ln -s "$SNAPSHOT_PATH" "$WEB_DIR/$LINK_NAME" || {
echo_error "Failed to create symlink for $LINK_NAME"
exit 1
}
echo_info "Linked $SNAPSHOT_PATH → $WEB_DIR/$LINK_NAME"
done
############################
### Delete old snapshots ###
############################
echo_info "Pruning old snapshots (keeping latest $KEEP_SNAPSHOTS)..."
for REPO in "${REPOS[@]}"; do
SNAPSHOT_LIST=$(proxmox-offline-mirror mirror snapshot list "$REPO" | grep '^-' | sed 's/- //' | sort)
TOTAL=$(echo "$SNAPSHOT_LIST" | wc -l)
if (( TOTAL > KEEP_SNAPSHOTS )); then
TO_DELETE=$(echo "$SNAPSHOT_LIST" | head -n -$KEEP_SNAPSHOTS)
while read -r SNAP_ID; do
if [[ -n "$SNAP_ID" ]]; then
echo_info "Deleting snapshot $SNAP_ID from $REPO..."
proxmox-offline-mirror mirror snapshot remove "$REPO" "$SNAP_ID" || {
echo_error "Failed to delete snapshot $SNAP_ID for $REPO"
}
fi
done <<< "$TO_DELETE"
else
echo_info "No old snapshots to delete for $REPO."
fi
done
##########################
### Garbage collection ###
##########################
echo_info "Running garbage collection..."
if ! proxmox-offline-mirror mirror gc; then
echo_error "Garbage collection failed."
exit 1
fi
echo_info "Mirror update and cleanup done."
exit 0
virtualisierung/proxmox/pom_repo.1753437182.txt.gz · Last modified: by stone
