Metainformationen zur Seite

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

sync.sh
#!/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. 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

<VirtualHost *:80>
    ServerAdmin webmaster@DEINEDOMAIN.de
        ServerName loxberrydownload.DEINEDOMAIN.de  
 
    DocumentRoot /srv/loxberrymirror/
 
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
 
    <Directory /srv/loxberrymirror/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
                Require all granted
    </Directory>
 
    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
 
</VirtualHost>

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