====== Eigener Spiegelserver ====== Wenn Du einen eigenen Download-Server als Spiegel für den LoxBerry-Downloadserver einrichten möchtest ist das herzlich Willkommen! Du kannst dazu verschiedene Programme verwenden - als Protokoll steht HTTP(S) zur Verfügung. Aktuell (Stand Mai 2022) benötigst Du ca. 40-50 GB freien Speicherplatz, um unser gesamtes Archiv zu spiegeln. Du kannst aber die Größe erheblich reduzieren, indem Du lediglich die aktuellen Images spiegelst. Alte Images befinden sich jeweils in den Unterverzeichnissen "obsolete". Diese musst Du nicht unbedingt spiegeln - damit kannst Du den notwendigen Speicherplatz auf 20-30 GB reduzieren. Wie das genau geht steht weiter unten. ==== LFTP ==== Mit folgendem Befehl kannst Du den Downloadserver per lftp (das Protokoll ist trotzdem HTTP!) in das lokale Verzeichnis ''%%/srv/loxberrymirror%%'' spiegeln: ''%%lftp%%'' ''%%open http://download.loxberry.de%%'' ''%%mirror --delete --verbose --scan-all-first --skip-noaccess --exclude-glob="index:start*" --exclude-glob="icons-used-by-apache/" --exclude-glob="latest.7z" /srv/loxberrymirror%%'' Um automatisiert per lftp eine Ressourcen schonende Synchronisation durchzuführen, speichert man das folgende Synchronsisations-Skript auf seinem Server ab (z. B. unter ''%%/usr/local/bin/sync.sh%%'') und ändert das lokale Zielverzeichnis im Skript noch entsprechend den eigenen Gegebenenheiten ab: **sync.sh for LFTP** #!/bin/bash # Script for syncing download.loxberry.de to # a local folder for creating a Mirror server # Adjust TARGETFOLDER to your needs! LFTP=`which lftp` DATE=`which date` test -x $LFTP || exit 0 HOST='http://download.loxberry.de' TARGETFOLDER='/srv/loxberrymirror' SOURCEFOLDER='/' $LFTP -f " open $HOST lcd $SOURCEFOLDER mirror --delete --verbose --scan-all-first --skip-noaccess --exclude-glob="index:start*" --exclude-glob="icons-used-by-apache/" --exclude-glob="latest.7z" $SOURCEFOLDER $TARGETFOLDER bye " # If you do not want to mirror "obsolete" images", use this command instead of the one above! # mirror --delete --verbose --scan-all-first --skip-noaccess --exclude-glob="index:start*" --exclude-glob="icons-used-by-apache/" --exclude-glob="obsolete/" --exclude-glob="latest.7z" $SOURCEFOLDER $TARGETFOLDER rm $TARGETFOLDER/latest.7z ln -s $TARGETFOLDER/stable/images/rasppi/loxberry-image-rasppi*.img.7z $TARGETFOLDER/latest.7z SYNCDATE=`$DATE +%c` echo "Sync Information:" > $TARGETFOLDER/lastsync.txt echo "-----------------" >> $TARGETFOLDER/lastsync.txt echo >> $TARGETFOLDER/lastsync.txt echo "Last synced on $SYNCDATE" >> $TARGETFOLDER/lastsync.txt   chmod -fR a+r $TARGETFOLDER Das Skript muss mit ''%%chmod +x /usr/local/bin/sync.sh%%'' noch ausführbar gesetzt werden und kann anschließend von der Kommandozeile aus getestet werden. ==== Automatische Synchronisation mit Cron ==== Für eine automatische Synchronisation legt man nun einen Cronjob an, der alle 6 Stunden das Synchronisationsskript aufruft (normalerweise als zusätzliche Zeile in der Datei ''%%/etc/crontab%%'' oder als separate Datei in''%% /etc/cron.d %%''- bitte dazu die Doku der eigenen Distribution hinzuziehen): **/etc/crontab** 0 */6 * * * root sleep $[ ( $RANDOM % 300 ) + 1 ]s && /usr/local/bin/sync.sh Die erste Ziffer (hier die Null) steht für die Minute, in der die Aktion durchgeführt wird. Damit nicht alle Spiegelserver gleichzeitig am Hauptserver anfragen und eine hohe Last erzeugen, ändere diese Zahl bitte auf eine Minute zwischen 0-59 ab. Zusätzlich bewirkt der Sleep-Befehl eine zufällige Verzögerung zwischen 1-300 Sekunden. Beispiel: Dein Server soll alle 6 Stunden in der 43. Minute synchronisieren. Der Crontab-Einträg würde dann wie folgt aussehen: **/etc/crontab** 43 */6 * * * root sleep $[ ( $RANDOM % 300 ) + 1 ]s && /usr/local/bin/sync.sh ==== Webserver Apache konfigurieren ==== Damit der Mirror für andere erreichbar ist kannst Du einfach in ein beliebiges Verzeichnis Deines Webservers spiegeln und die URL in obige Liste eintragen. Wenn Du den Spiegelserver unter einer eigenen Subdomain Deines Webservers erreichbar machen möchtest (z. B. [[http://loxberrydownload.DEINEDOMAIN.de|loxberrydownload.DEINEDOMAIN.de]]) kannst Du folgende Konfigurationsdatei für den Apache verwenden (die Subdomain musst Du meist separat bei Deinem Provider einrichten): **Virtual Host Apache Konfiguration** ServerAdmin webmaster@DEINEDOMAIN.de ServerName loxberrydownload.DEINEDOMAIN.de DocumentRoot /srv/loxberrymirror/ Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted ErrorLog /var/log/apache2/error_loxberrydownloads.DEINEDOMAIN.de.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access_loxberrydownloads.DEINEDOMAIN.de.log combined Die neue Konfiguration musst Du im Apache Konfigurationsordner (meist ''%%/etc/apache2/sites-available%%'') z. B. als ''%%loxberrydownload.conf%%'' abspeichern. Anschließend aktivierst Du den neuen Virtuellen Host im Apache mit dem Befehl **''%%a2ensite loxberrydownload%%''** und startest den Webserver mit **''%%service apache2 reload%%''** neu. ===== Siehe auch ===== [[organisatorisches:archiv:download_und_spiegelsites:kostenloses_ssl_zertifikat]]