User Tools

Site Tools


virtualisierung:proxmox:pom_repo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
virtualisierung:proxmox:pom_repo [2025/06/17 12:48] stonevirtualisierung:proxmox:pom_repo [2025/09/01 14:22] (current) – [Sync Script] stone
Line 13: Line 13:
 <code> <code>
 proxmox-offline-mirror config mirror add \ proxmox-offline-mirror config mirror add \
-  --id pve-8-non-sub \ + --id pve-8-non-sub \ 
-  --architectures amd64 \ + --architectures amd64 \ 
-  --architectures all \ + --architectures all \ 
-  --repository 'deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription main contrib'+ --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 \ + --key-path /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg \ 
-  --sync true \ + --sync true \ 
-  --verify true \ + --verify true \ 
-  --base-dir /opt/pom+ --base-dir /opt/pom
 </code> </code>
 \\ \\
Line 28: Line 28:
 <code> <code>
 proxmox-offline-mirror config mirror add \ proxmox-offline-mirror config mirror add \
-  --id debian-12-main \ + --id debian-12-main \ 
-  --architectures amd64 \ + --architectures amd64 \ 
-  --architectures all \ + --architectures all \ 
-  --repository 'deb http://debian.anexia.at/debian bookworm main contrib non-free'+ --repository 'deb http://debian.anexia.at/debian bookworm main contrib non-free'
-  --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc \ + --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc \ 
-  --sync true \ + --sync true \ 
-  --verify true \ + --verify true \ 
-  --skip-sections games,x11,debug,doc,graphics,video,sound,hamradio,tex \ + --base-dir /opt/pom \ 
-  --skip-packages '.*-desktop','gnome.*','.*-gnome.*','gnome','gnome3','gnome-shell.*','gnome-themes.*','gnome-session.*','gnome-control.*','gnome-panel.*','gnome-terminal.*','gnome-settings.*','gnome-online.*','gnome-keyring.*','libgnome.*','kde.*','.*-kde.*','plasma.*','lxde.*','xfce.*','mate.*','cinnamon.*','xserver.*','xorg.*','wayland.*','fonts-.*','xfonts.*','themes.*','qt.*','libqt.*','libgtk.*','gtk.*','sddm.*','gdm.*','lightdm.*','dconf.*','ffmpeg.*','vlc.*','libreoffice.*','gimp.*','gedit.*','xterm.*','evince.*','nautilus.*','pulseaudio.*','pipewire.*','alsa.*','jack.*','sound.*','media.*','cups.*','printer.*','poppler.*','abiword.*','gnumeric.*','hunspell.*','aspell.*','ibus.*','uim.*','caribou.*','onboard.*','at-spi.*','speech-dispatcher.*','modemmanager.*','network-manager.*','bluetooth.*','wpa.*','ppp','php.*','nodejs.*','npm.*','ruby.*','python2.*','avahi.*','rpcbind','nfs-kernel-server' + --skip-sections games 
-  --base-dir /opt/pom+ --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.* 
 </code> </code>
 \\ \\
Line 46: Line 121:
 <code> <code>
 proxmox-offline-mirror config mirror add \ proxmox-offline-mirror config mirror add \
-  --id debian-12-updates \ + --id debian-12-updates \ 
-  --architectures amd64 --architectures all \ + --architectures amd64 --architectures all \ 
-  --repository 'deb http://deb.debian.org/debian bookworm-updates main contrib non-free'+ --repository 'deb http://debian.anexia.at/debian bookworm-updates main contrib non-free'
-  --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.gpg + --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc 
-  --sync true --verify true \ + --sync true --verify true \ 
-  --skip-sections games,x11,debug,doc,graphics,video,sound,hamradio,tex \ + --base-dir /opt/pom \ 
-  --skip-packages '.*-desktop','.*-gnome.*','.*-kde.*','.*-games','.*-media.*','.*-sound.*','x11.*','wayland.*','vlc.*','ffmpeg.*','libreoffice.*','fonts-.*','cups.*','xfonts.*','hunspell.*','tex.*','gnumeric.*','abiword.*','modemmanager.*','wpa.*','ppp','network-manager.*','bluetooth.*','qt.*','libqt.*','libgtk.*','ruby.*','nodejs.*','npm.*','php.*','python2.*','avahi.*','nfs-kernel-server','rpcbind' + --skip-sections games 
-  --base-dir /opt/pom+ --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.* 
 </code> </code>
  
Line 62: Line 212:
 <code> <code>
 proxmox-offline-mirror config mirror add \ proxmox-offline-mirror config mirror add \
-  --id debian-12-security \ + --id debian-12-security \ 
-  --architectures amd64 --architectures all \ + --architectures amd64 --architectures all \ 
-  --repository 'deb http://security.debian.org/debian-security bookworm-security main contrib non-free'+ --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.gpg + --key-path /etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc 
-  --sync true --verify true \ + --sync true --verify true \ 
-  --skip-sections games,x11,debug,doc,graphics,video,sound,hamradio,tex \ + --base-dir /opt/pom \ 
-  --skip-packages '.*-desktop','.*-gnome.*','.*-kde.*','.*-games','.*-media.*','.*-sound.*','x11.*','wayland.*','vlc.*','ffmpeg.*','libreoffice.*','fonts-.*','cups.*','xfonts.*','hunspell.*','tex.*','gnumeric.*','abiword.*','modemmanager.*','wpa.*','ppp','network-manager.*','bluetooth.*','qt.*','libqt.*','libgtk.*','ruby.*','nodejs.*','npm.*','php.*','python2.*','avahi.*','nfs-kernel-server','rpcbind' + --skip-sections games 
-  --base-dir /opt/pom+ --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.* 
 </code> </code>
  
Line 107: Line 332:
  
  
-===== Medium für Clients konfigurieren ===== + 
-Damit die Clients dann auch auf die Daten zugreifen können muss man ein Medium erstellen+<code> 
 +proxmox-offline-mirror mirror gc 
 +</code> 
 +\\ 
 + 
 + 
 +===== NGINX vorbereiten ===== 
 +Damit die Repos abgeholt werden können wird NGINX als Webserver her halten. 
 + 
 +<code> 
 +apt install nginx 
 +</code> 
 +\\ 
 + 
 +==== NGINX Config ==== 
 +/etc/nginx/sites-enabled/default 
 + 
 +<code> 
 +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; 
 +
 +</code> 
 + 
 +\\ 
 + 
 +===== Sync Script ===== 
 +Dieses Script synct die Repos und verlinkt den aktuellen Snapshot zum NGINX. 
 + 
 +<code> 
 +#!/bin/bash 
 + 
 +##################### 
 +### Configuration ### 
 +##################### 
 +BASE_DIR="/opt/pom" 
 +WEB_DIR="/var/www/html/bookworm" 
 +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}" >&
 +
 + 
 + 
 + 
 +######################## 
 +### 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 
 +</code> 
 +\\ 
 + 
 + 
 + 
 + 
 + 
 + 
  
virtualisierung/proxmox/pom_repo.1750164536.txt.gz · Last modified: by stone