virtualisierung:proxmox:pom_repo
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| virtualisierung:proxmox:pom_repo [2025/07/23 14:24] – stone | virtualisierung:proxmox:pom_repo [2025/09/01 14:22] (current) – [Sync Script] stone | ||
|---|---|---|---|
| Line 339: | Line 339: | ||
| - | ===== Medium für Clients konfigurieren | + | ===== NGINX vorbereiten |
| - | Damit die Clients dann auch auf die Daten zugreifen | + | Damit die Repos abgeholt werden |
| - | ==== Anlegen eines Mediums ==== | ||
| < | < | ||
| - | proxmox-offline-mirror config media add \ | + | apt install nginx |
| - | --id repo_debian-12 \ | + | |
| - | --mirrors debian-12 \ | + | |
| - | --mirrors debian-12-update \ | + | |
| - | --mirrors debian-12-security \ | + | |
| - | --sync true --verify true \ | + | |
| - | --mountpoint / | + | |
| </ | </ | ||
| + | \\ | ||
| + | |||
| + | ==== NGINX Config ==== | ||
| + | / | ||
| + | |||
| + | < | ||
| + | root / | ||
| + | |||
| + | 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="/ | ||
| + | WEB_DIR="/ | ||
| + | REPOS=(" | ||
| + | SYMLINK_NAMES=(" | ||
| + | KEEP_SNAPSHOTS=3 | ||
| + | |||
| + | |||
| + | |||
| + | ############## | ||
| + | ### Colors ### | ||
| + | ############## | ||
| + | RED=' | ||
| + | GREEN=' | ||
| + | NC=' | ||
| + | |||
| + | echo_info() { | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | echo_error() { | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | ######################## | ||
| + | ### Sync all mirrors ### | ||
| + | ######################## | ||
| + | echo_info " | ||
| + | if ! proxmox-offline-mirror mirror snapshot create-all; then | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | |||
| + | |||
| + | ########################################### | ||
| + | ### Remove existing symlinks in WEB_DIR ### | ||
| + | ########################################### | ||
| + | echo_info " | ||
| + | for link in " | ||
| + | if [[ -L " | ||
| + | rm -rf " | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | } | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | |||
| + | |||
| + | ################################################## | ||
| + | ### Create new symlinks to the latest snapshot ### | ||
| + | ################################################## | ||
| + | echo_info " | ||
| + | for i in " | ||
| + | REPO=" | ||
| + | LINK_NAME=" | ||
| + | SNAPSHOT_DIR=" | ||
| + | |||
| + | if [[ ! -d " | ||
| + | echo_error " | ||
| + | continue | ||
| + | fi | ||
| + | |||
| + | # Find latest snapshot (sorted lexically, newest last) | ||
| + | LATEST_SNAPSHOT=$(ls -1 " | ||
| + | |||
| + | if [[ -z " | ||
| + | echo_error "No snapshots found for $REPO." | ||
| + | continue | ||
| + | fi | ||
| + | |||
| + | SNAPSHOT_PATH=" | ||
| + | |||
| + | if [[ ! -d " | ||
| + | echo_error " | ||
| + | continue | ||
| + | fi | ||
| + | |||
| + | ln -s " | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | } | ||
| + | echo_info " | ||
| + | done | ||
| + | |||
| + | |||
| + | |||
| + | ############################ | ||
| + | ### Delete old snapshots ### | ||
| + | ############################ | ||
| + | echo_info " | ||
| + | for REPO in " | ||
| + | SNAPSHOT_LIST=$(proxmox-offline-mirror mirror snapshot list " | ||
| + | |||
| + | TOTAL=$(echo " | ||
| + | |||
| + | if (( TOTAL > KEEP_SNAPSHOTS )); then | ||
| + | TO_DELETE=$(echo " | ||
| + | while read -r SNAP_ID; do | ||
| + | if [[ -n " | ||
| + | echo_info " | ||
| + | proxmox-offline-mirror mirror snapshot remove " | ||
| + | echo_error " | ||
| + | } | ||
| + | fi | ||
| + | done <<< | ||
| + | else | ||
| + | echo_info "No old snapshots to delete for $REPO." | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | |||
| + | |||
| + | ########################## | ||
| + | ### Garbage collection ### | ||
| + | ########################## | ||
| + | echo_info " | ||
| + | if ! proxmox-offline-mirror mirror gc; then | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | echo_info " | ||
| + | exit 0 | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | |||
| + | |||
| + | |||
virtualisierung/proxmox/pom_repo.1753280659.txt.gz · Last modified: by stone
