Configurazione di un server push

La configurazione di un server push consiste essenzialmente di due attività: la configurazione dell'accesso rsync (come per un normale mirror di tipo pull) e la configurazione del meccanismo di attivazione via ssh (per avviare il mirroring push).

(Per maggiori informazioni su cosa è un server push si veda la spiegazione sul push mirroring.)

Configurazione di rsync

Installare rsync. Se sul proprio sito si utilizza Debian, è sufficiente installare il pacchetto rsync.

Creare il file rsyncd.conf e inserirvi qualcosa di simile a questo:

uid = nobody
gid = nogroup
max connections = 50
socket options = SO_KEEPALIVE

[debian]
  path = /srv/debian/mirror
  comment = The Debian Archive (https://www.debian.org/mirror/size)
  auth users = *
  read only = true
  secrets file = /etc/rsyncd/debian.secrets

Aggiungere nel file /etc/rsyncd/debian.secrets una voce per ogni sito verso cui si vuole effettuare il push:

site1.example.com:una_password
site2.example.com:unaltra_password
site3.example.net:password

Adesso i mirror destinazione hanno accesso all'archivio sulla propria macchina. Per consentire l'accesso a tutti, non impostare auth userssecrets file in rsyncd.conf. Inoltre, in seguito, non sono necessari i file segreti.

Per abilitare il demone rsync da inetd, aggiungere quanto segue al proprio file /etc/inetd.conf:

rsync      stream      tcp         nowait      root /usr/bin/rsync rsyncd --daemon

(Ricordasi di inviare a inetd un segnale HUP per forzare la rilettura del file di configurazione dopo la modifica).

Configurazione del meccanismo di attivazione con ssh

Creare con ssh-keygen una nuova chiave ssh per l'account usato per eseguire l'aggiornamento del mirror Debian. Se tale account già dispone di una chiave per altri scopi, si può crearne una nuova e salvarla in un altro file usando ssh-keygen -f ~/.ssh/identity.mysite

Sul mirror destinazione sarà necessario aggiungere

command="~/bin/ftpsync",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <contenuto di ~/.ssh/<key>.pub file>

al file ~/.ssh/authorized_keys.

Occorre configurare il processo di aggiornamento del mirror in modo da contattare i mirror destinazione alla conclusione di mirror-run. La suite ftpsync contiene lo script runmirrors che si occupa di tutte le operazioni. Semplicemente cambiando il proprio ftpsync.conf in modo da includere l'impostazione HUB=true, copiare runmirrors.conf.sample in runmirrors.conf e runmirrors.mirror.sample in runmirrors.mirror e modificare il file di configurazione in modo da adattarlo al proprio sistema. Poi elencare in runmirrors.mirror tutti i mirror di downstream e la coppia ftpsync/runmirror si occuperà di tutto il lavoro.

L'effetto sarà che il proprio sistema tenterà di collegarsi con ssh ai mirror di downstram dopo aver completato l'aggiornato del proprio mirror in modo che questi avviino l'aggiornamento. Questa operazione richiede di aver dato a chi gestisce i mirror di downstream la chiave ssh, che la chiave sia stata configurata in runmirrors e che i gestori abbiano aggiunto la chiave nei propri ~/.ssh/authorized_keys come descritto in precedenza.

In caso di problemi, contattateci.