Ubuntu en serveur TimeMachine (netatalk et avahi inside)
15 mai 2010
Par Bibinsa - BibiBox - Lien permanent
Un nouveau Mac à la maison (MPB 13') qui ne demande qu'à faire des sauvegardes de son système.
C'est le moment d'installer sur la Bibibox de quoi faire croire au Mac qu'on a un serveur Xserve qui permet de faire des backups...
Le chalenge est donc le suivant : utiliser le protocole AFP (Apple Filing Protocol) sur Ubuntu 10.04.
Pour cela il faut installer le package netatalk.
Malheureusement, celui-ci n'intègre pas par défaut le support SSL nécessaire à l'authentification à partir d'un Mac.
Pas grave, nous allons le recompiler !
Compilation de Netatalk
sudo apt-get build-dep netatalk sudo apt-get install cracklib2-dev fakeroot libssl-dev sudo apt-get source netatalk cd netatalk-2.0.5 sudo DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot
Normalement, ça devrait suffire à produire le .deb qui va bien avec SSL, mais chez moi ça n'a pas fonctionné. L'authentification échouait à chaque fois pour une problème de modules uam non chargés.
En fouillant dans le fichier de compilation, j'ai trouvé les lignes de test à modifier afin de forcer la compilation avec SSL/UAM. J'ai commenté les lignes qui empêche la compilation UAM :
debian/rules (ligne 96)
# libgcrypt is GPL-compatible, but openssl supports randnum auth #ifneq (,$(findstring openssl,$(DEB_BUILD_OPTIONS))) DEB_CONFIGURE_EXTRA_FLAGS +=with-ssl-direnable-pgp-uam uamlist = uams_dhx2.so,uams_clrtxt.so,uams_dhx.so,uams_randnum.so #else #DEB_CONFIGURE_EXTRA_FLAGS += --without-ssl-dir #uamlist = uams_dhx2.so,uams_clrtxt.so #endif
Ensuite, on recommence :
sudo DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot
Et on installe le package situé dans le répertoire au dessus :
sudo dpkg -i netatalk_2.0.5-3_i386.deb
Configuration de Netatalk
Dans le fichier /etc/default/netatalk on indique les services souhaités :
ATALKD_RUN=no PAPD_RUN=no CNID_METAD_RUN=yes AFPD_RUN=yes TIMELORD_RUN=no A2BOOT_RUN=no
Dans le fichier /etc/netatalk/afpd.conf on remplace la dernière ligne par :
- -transall -uamlist uams_randnum.so,uams_dhx.so -nosavepassword -advertise_ssh
Configuration des partages
Dans le fichier /etc/netatalk/AppleVolumes.default on modifie les partages configurés par défaut par :
/home/<user> "$u" allow:<user> cnidscheme:cdb /volume/vers/repertoire/TimeMachine TimeMachine allow:<user> cnidscheme:cdb options:usedots,upriv
Remplacer <user> par le login du système Linux (si possible le même que celui du Mac).
La première ligne est pour utiliser le répertoire Home de l'utilisateur du mac sur le serveur Linux (si celui-ci est existant).
La seconde ligne est pour annoncer un disque pour TimeMachine.
On peut lancer le service Netatalk :
sudo service netatalk start
Annoncer les services sur le réseau
Histoire de faire ça à la mode Apple, on va configurer avahi (implémentation libre de ZeroConf) qui va annoncer sur le réseau local les services AFP.
Création d'un fichier /etc/avahi/services/afpd.service contenant :
<?xml version="1.0" standalone='no'?><!*-nxml-*> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_afpovertcp._tcp</type> <port>548</port> </service> <service> <type>_device-info._tcp</type> <port>0</port> <txt-record>model=Xserve</txt-record> </service> </service-group>
On peut relancer le service :
service avahi-daemon restart
C'est terminé pour Linux, ouf !
Côté Mac
Normalement, sur le Mac, un volume réseau a été détecté dans le Finder et il suffit de s'authentifier pour monter le disque réseau.
Dans la configuration de TimeMachine, le disque réseau annoncé est détecté.
Ubuntu sert maintenant de disque réseau pour TimeMachine !
Il me reste à trouver un équivalent pour Ubuntu ce coup-ci (Back In Time, Flyback, ...)
Lien
Un grand merci à l'auteur de ce tuto : http://www.kremalicious.com/2008/06/ubuntu-as-mac-file-server-and-time-machine-volume/
Commentaires
Attention, le blog interprete le html/xml en rayant des mots avec <!-- --!> !!
Du coup, si vous copiez/collez le XML de la conf avahi, cela ne fonctionnera pas à cause du <!*--nxml--*>
thingumabobbonjour pouver vous vous indiquer dans quel fichier trouver
ou du moins quel fichier a modifier ???
(j'ai trouvé les lignes de test à modifier afin de forcer la compilation avec SSL/UAM. J'ai commenté les lignes qui empêche la compilation UAM :
(ligne 96)
# libgcrypt is GPL-compatible, but openssl supports randnum auth
#ifneq (,$(findstring openssl,$(DEB_BUILD_OPTIONS)))
DEB_CONFIGURE_EXTRA_FLAGS += with-ssl-dir enable-pgp-uam
uamlist = uams_dhx2.so,uams_clrtxt.so,uams_dhx.so,uams_randnum.so
#else
#DEB_CONFIGURE_EXTRA_FLAGS += --without-ssl-dir
#uamlist = uams_dhx2.so,uams_clrtxt.so
#endif )
merci d'avance
holandaisBonne remarque, c'est dans le fichier debian/rules
Je l'ajoute dans l'article.
Merci pour la remarque.
BibinsaSalut,
Pas besoin d'aller modifier le fichier debian/rules si à la compilation tu passes l'option "openssl" comme ceci :
sudo DEB_BUILD_OPTIONS=openssl dpkg-buildpackage -rfakeroot
Joli blog, bonne continuation
Romain Oberon