un blog

geekeries de comptoir, photographie et technologies

Tuto: Comment créer votre serveur Time Capsule sous Debian

J’en ai parlé auparavant, j’ai maintenant un serveur Debian à la maison. En en parlant à droit et à gauche, et suite à quelques mails de lecteurs, j’ai remarqué qu’un bon nombre de personnes souhaitent créer eux aussi leur serveur de sauvegarde compatible avec Time Machine… Fred, ce tuto est pour toi!

Deux avantages à cela: le coût qui est moindre et aussi la souplesse que cela apporte (une machine Linux ou Windows pourra aussi utiliser ce serveur de sauvegarde, en utilisant Rsync par exemple)

Voici comment j’ai procédé, en partant d’une installation simple de Debian.

debian_splash

Note: Vous verrez dans tous les exemples de commande que j’utilise nano pour éditer mes fichiers, cela n’a aucune importance… C’est tout simplement que je n’ai jamais compris comment utiliser vi et qu’étant en ligne de commande exclusivement, je n’ai pas accès à gedit et les autres…

Note 2: ce tutoriel est l’adaptation française et simplifiée du travail de Matthias Kretschmann

1/ Installation de netatalk

netatalkNetatalk est l’implémentation open source du protocole AFP d’Apple. Mais pour fonctionner correctement avec Mac OS, il faut appliquer une sur couche de cryptographie, alors petit internaute, avec moi, tu vas t’amuser à créer notre propre installation de Netatalk. Pour cela, c’est relativement simple. Sur le serveur Debian, tu ouvres un terminal et tu tapes ceci:

sudo apt-get build-dep netatalk
sudo apt-get install cracklib2-dev fakeroot libssl-dev
sudo apt-get source netatalk

Puis tu entres dans le dossier créé par apt-get en tapant: cd netatalk-2*

Là, tu lances la création de ton petit paquet Debian personnel en tapant:

sudo DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot

Plein de choses vont se passer sur l’écran, mais c’est normal. Suivant la rapidité de ta machine, cela peut prendre 2min comme 25min sur mon NSLU… ZZzzZZzz… Normalement, il va vous mettre quelques warning par ci par là, mais rien d’alarmant, ni de bloquant.
Ton paquet est enfin créé! Alors tape ceci pour l’installer!

sudo dpkg -i ~/netatalk_2*.deb

Dès que c’est terminé, tu as donc maintenant une installation de netatalk compatible avec Mac OS. Mais il va falloir le configurer netatalk maintenant!

2/ Configuration de Netatalk

netatalkNetatalk arrive avec un lot de services de partage qui peuvent avoir leur utilité, mais on va essayer de configurer l’outil pour l’utilisation que l’on veut en avoir et donc avoir des temps de réponse les plus courts possibles.

On va donc éditer notre fichier de configuration en tapant (toujours dans un terminal):

sudo nano /etc/default/netatalk

En cherchant le paragraphe, « #Set which daemons to run », on va remplacer les valeurs par défaut avec :

ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

Fais ctrl+x et répond « y » au message d’avertissement.
Puis nous allons éditer le fichier de configuration propre à afp en tapant:

sudo nano /etc/netatalk/afpd.conf

Tout en bas de ce fichier, tu vas rajouter (en faisant bien attention qu’il n’y ai pas de # devant):

- -transall -uamlist uams_randnum.so,uams_dhx.so -nosavepassword -advertise_ssh

Fais ctrl+x et répond « y » au message d’avertissement. Bravo! Netatalk est maintenant configuré, il nous reste plus qu’à définir les volumes ou répertoires que nous souhaitons partager!

3/ Configuration des volumes partagés

Partage réseauJ’espère que si tu es arrivé jusque là, tu sais au moins ce que tu veux partager sur ta machine! Personnellement, il s’agit de mon disque dur USB (Western Digital MyBook) monté sur /mnt/usbdisk/

Il faut donc expliquer à netatalk de proposer sur le réseau le disque /mnt/usbdisk/. Pour cela, il faut aller éditer le fichier de définition des volumes à partager en tapant:

sudo nano /etc/netatalk/AppleVolumes.default

Va tout en bas du fichier et commente la dernière ligne en rajoutant un # à son début. Elle devrait alors ressembler à ça:

#~/ « Home Directory »

Et à la ligne suivante, rajoute cela:

/mnt/usbdisk/ « TimeMachine Server » allow:pierre cnidscheme:cdb options:usedots,upriv

allow:pierre veut dire que « pierre » (qui est mon nom d’utilisateur sur le serveur) a le droit d’utiliser ce repertoire de partage. Time Machine me demandera alors mon mot de passe pour « pierre » lorsqu’il essayera de se connecter pour la première fois, mais il l’enregistrera ensuite dans mon trousseau et ne me le demandera plus. Je serais donc le seul à pouvoir accéder à cet espace. L’option usedots est capitale! Elle permet à Mac OS de pouvoir enregistrer des fichiers cachés comme sur son propre système, sinon tous vos fichiers cachés le seront plus et commenceront par :2e (interprétation AFP du point). Faites ctrl+x et répondez y au message d’avertissement. Le reste des options, tu les mets, ça ne te fera pas de mal, ça optimise la compatibilité avec es Mac OS plus vieux.
Fais ctrl+x et répond « y » au message d’avertissement.

Enfin, relance netatalk pour prendre en compte tout ton travail en tapant:

sudo /etc/init.d/netatalk restart

Maintenant, ton beau serveur est accessible depuis ton Mac en sélectionnant « Se connecter au serveur » dans le menu « Aller » du Finder: image-21Tape l’adresse IP de ton serveur préfixé de afp:// (moi c’est afp://192.168.0.10) et magie, on te demande ton login/mot de passe de ta session du serveur debian. (mon login est « pierre »).

Et là, je t’entends grommeler derrière ton écran petit internaute : « mais c’est pourri de devoir faire Aller->Se connecter à un serveur ». Oui c’est pourri, c’est tout simplement du au fait que les serveurs qui apparaissent automatiquement sur la barre de droite de ton Finder, son ceux qui ont le protocole Bonjour (d’Apple) d’installé et d’activé. Le but de la section d’après, est de faire en sorte que notre serveur apparaisse dans cette barre magique.

4/ Configuration de Avahi

AvahiJe t’entend encore grommeler petit internaute: « il nous cause de Bonjour, et ensuite il nous fait installer Avahi! ». Et bien figure toi que Avahi est l’implémentation Open Source du protocole Bonjour! Donc c’est bien ça qui nous intéresse! On reprend donc notre petit terminal et on tape:

sudo apt-get install avahi-daemon
sudo apt-get install libnss-mdns

Quand apt-get a terminé son petit bazard, tape:

sudo nano /etc/nsswitch.conf

Le fichier de configuration s’ouvre et cherche la ligne:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Rajoute mdns à la fin, ce qui devrait donner:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns

Fais ctrl+x et répond « y » au message d’avertissement.
T’inquiètes, on touche à la fin! Encore un peu et on y sera!

5/ Publication des services Avahi

Avahi

Maintenant qu’Avahi est sur le serveur, il faut qu’on lui explique quel protocole prendre en charge et diffuser. Comme on a déjà tout configuré AFP, on va juste lui dire de publier le service AFP!

Donc de retour sur ton terminal favori, tape:

sudo nano /etc/avahi/services/afpd.service

Le fichier qui s’ouvre est vide, c’est normal… Pour une fois! Et là tu copies colles, TOUT le paragraphe qui est en dessous!

<?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>

En gros, on lui explique via ce fichier (ouiiiii, tu as remarqué que c’était du XML!?), que l’on veut publier AFP via TCP, le port, etc.
Note juste, petit internaute, qu’en changeant la valeur de model=Xserve, cela impactera juste le picto que prendra ton serveur dans la barre de droite. Voilà les valeurs que tu peux lui attribuer et donc l’image qu’il prendra:

Xserve, PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro, AppleTV1,1, AirPort

L’image de Xserve est celle là –> image-5

C’est quand même bien fait non? Bon aller, fais ctrl+x et répond « y » au message d’avertissement.
Puis redémarre le service Avahi en tapant:

sudo /etc/init.d/avahi-daemon restart

Et là! Le hasard comme par hasard monsieur l’internaute?! Regarde la barre de Finder de ton mac, l’icône tant espérée apparaît! La preuve chez moi! ;-)

Preuve que ça marche!

Preuve que ça marche!

Pour résumer, on a maintenant un beau serveur de partage de fichier qui me permet de bénéficier de l’espace de stockage de mon serveur par le réseau… Le serveur de sauvegarde Time Capsule n’est qu’à un pas!

6/ Configuration de Time Machine

Là on revient sur le Mac!
Disque TimeMachineUne fois connecté sur le serveur, fait un glisser déposer de ton dossier de partage (qui s’appelle « Time Machine Server » chez moi) vers la barre de gauche du Finder, à côté du disque de ton Mac. Ton dossier de partage est donc maintenant accessible comme un vulgaire volume local…

Ouvre TimeMachine, essaye de choisir un disque… Et là, malheur! Tu ne vois pas ton répertoire pourtant monté comme Volume! La faute à qui? Apple a simplement désactivé l’accès à TimeMachine pour les serveurs de fichiers du réseau non reconnus.

Comme maintenant, tu gères trop le Terminal, tu peux en lancer un sur ton Mac (Applications/Utilitaires/Terminal.app) et tape cette commande:

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

Donc maintenant TimeMachine est capable de voir les volumes réseau même s’ils ne sont pas siglés Apple!

Refait ta manipulation de plus haut et là (normalement) ça va marcher!

Forcément, pour certains malchanceux (comme moi), TimeMachine nous répond tristement qu’il n’a pas pu créer l’image disque sur le volume réseau… Une astuce existe pour palier à ce problème qui n’a lieu qu’à la création d’une sauvegarde. Ensuite TimeMachine fonctionne absolument normalement.

Lance l’utilitaire de disque (Applications/Utilitaires/Utilitaire de disque.app) et appuie sur le bouton « Nouvelle image » dans la barre du haut. Dans la case du nom de l’image rentre précisement ce qui suit:

MAC-PDELACEL_00224125d496.sparsebundle

Sachant que MAC-PDELACEL est le nom réseau de ma machine (visible dans les Préférences Système->Partage) suivi d’un underscore « _ » suivi de l’adresse MAC de ma carte Ethernet (visible dans Préférences Système->Réseau->Ethernet->Avancé->Ethernet, c’est la suite de chiffre en face de « ID Ethernet ») puis de l’extension sparsebundle.

Pour le nom de volume, mets ce que tu veux, pour la taille, essaye de dimensionner ça en fonction de la place qu’il y aura sur ton disque. Les autres paramètres laisse ceux par défaut, change juste le dernier « Format d’image » pour sélectionner Image Disque SparseBundle.

Donc en résumant, l’écran qui est en face de toi doit ressembler à ça:

Création du sparsebundle

Création du sparsebundle

Enregistre cette image sur ton bureau. L’Utilitaire de disque va mettre quelques secondes à créer l’image et quand c’est fini copie colle là dans ton dossier réseau. (pour moi TimeMachine Server)

Copie SparseBundle

Copie SparseBundle

Une fois qu’elle est copiée, recommence la configuration de TimeMachine et la première sauvegarde devrait se déclencher… Cela prend son temps au travers du réseau, même local… Personnellement, il m’a fallu 18h pour sauvegarder 75Go. Maintenant, les sauvegardes ne se font que sur le différentiel de données, et c’est donc beaucoup plus rapide!

7/ Consulsion

Voilà petit internaute, nous voici rendu au terme de notre grande aventure! J’espère que tout fonctionne comme prévu de ton côté!

N’hésite pas à déposer un commentaire si ça t’a aidé, mis dans mouise, ou encore si tu as un soucis sur la mise en place de ces services!

Allez salut!

35 commentaires

      • Un vrai article de gros geek mon poussin!!!! Pour la peine, je vais faire un article de fifille sur le mien aujourd’hui!

      • Merci pour la translation ;-) Sorry, my french is a bit rusty. I will link to your translation from my original article if you like.

      • Nice site you have!

      • Merci pour ce très bon article, j’avais du mal à configurer avahi pour annoncer les services, ton article m’a bien aidé.

        Attention tout de même quand tu compile netatalk avec ssl :
        $ sudo DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot

        Sur ma debian etch (installation minimaliste sur une clé USB), je me fait jeter, le bash annonçant qu’il ne trouve pas le programme « DEB_BUILD_OPTIONS=ssl »… Je suis donc passé en root et j’ai lancé directement :
        # DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot

        Mais c’est peut être le fait que mon installation soit minimaliste qui cause ce problème.

      • Très bon tuto :)
        Merci pour cette « Time Capsule » gratuite xD
        Je l’ai mis en place et ça fonctionne très bien.
        T’es un boss, bonne continuation!

        Longue vie à la pomme…

      • merci pour ce tuto simple, clair et précis. Normalement je bosse avec NFS (ça marche très bien pour mac), mais j’avais sur mon réseau 1 ou 2 machines récalcitrantes au montage de volumes NFS. Du coup merci !!!!

      • Salut, je suis tombé sur ton blog via cet article. Je suis un switcher Geek et ton tuto m’a bien servit. Le reste de ton blog contient plusieurs trucs utiles alors je posais juste un message pour te témoigner ma gratitude :)
        Bonne continuation!

      • Bonjour,

        J’ai bien suivi le tuto et au final la fonction time machine fonctionne. Mais si je déconnecte mon Mac du réseau, je ne retrouve pas la connexion afp. Lorsque je vais dans « Aller » puis « Se connecter au serveur… » le serveur est détecté mais il me demande un mot de passe. Je met alors mes identifiant du serveur (utilisés pour la connexion ssh qui marche sans problème) Snow Léopard me sort « Le nom d’utilisateur ou le mot de passe saisis sont incorrects ». Pourtant ils sont bons! En redémarant plusieurs fois le démon rien n’y fait. Quelqu’un a déjà rencontré le problème? Si oui, comment faire?

        Merci d’avance.
        Cordialement

      • Vraiment super ton tuto, bon j ai juste eut un petit problème le copier/coller pour la déclaration du service afp dans avahi. Du à l’encodage des caractères au début sa ne fonctionnait pas mais en y regardant de plus prêt j ai vu que que les  » » »" avait une drôle de tête.
        Merci pour ce tuto.

      • Salut Pierre.

        Je viens juste de passer sur Mac, et ta solution me plait bien ! Ils devraient nous apprendre ça à l’ESIL ;)

        Pour la peine, je te follow + RSS.

        A+

      • Dans le fichier XML, il faut remplacer les :
        <> par des  »
        et j’ai dû enlever pour que ça marche.
        Merci de mettre la version corrigée sur le site.

        Je ne vois pas pourquoi tu fais une étape « Aller » -> Se connecter à un serveur…
        on peut très bien faire sans.

        Il faut mettre le « .local » dans le nom de la machine. (A corriger peut-être pour clarifier les choses…)

        Sinon merci pour cet EXCELLENT TUTORIEL ! :-)

      • J’avais testé et d’ailleurs utilise toujours le tuto sur Kremalicious que tu cites en début d’article. Dans les derniers commentaires il est mis en avant que la version 2.0.5 de Netatalk prend en charge TimeMachine et que la ruse pour créer l’image n’est plus nécessaire, tu confirmes ?

        Faudrait que je remonte un serveur et je pense installer une debian.

      • sympa, le tuto juste une questio navant de mettre en place :
        Dans le cas de plusieurs users, on les fait tous pointer dans le même répertoire ou alors dans la partie :
        /mnt/usbdisk/ « TimeMachine Server » allow:pierre cnidscheme:cdb options:usedots,upriv
        on doit mettre /mnt/usbdisk/NomUser?
        S’il faut faire comme ça cela pose t’il un problème dans l’explorateur MAC à savoir que pleins de serveurs risquent d’apapraitre avec le nom des users.

        Ou faut il une partition par user??

        Merci

      • Je suis blocquer après la configuration de NETATALK.
        Quand je fais « me connecter au serveur » on me demande bien le login mot de passe.
        Mais le mac me renvoi une erreur 5002 ,impossible de se connecter au serveur ….
        J’ai re-verifié tout les parametres,je ne vois pas d’erreur.

        Help,please.

        Merci pour le tuto,très clair pour un debutant

      • salut et merci pour le tuto mais perso j’ai une erreur 45!!
        il écrit bien le fichier tmp et après une erreur 45!!

        help :)

      • pour info je ne sais pas comment mais une mise a jour a planté le system
        réinstalle des paquets test en wifi erreur 45
        puis en ethernet avec l’ID de l’Ethernet ça marche
        retest en wifi avec l’ID de l’Ethernet ça marche encore
        je comprend pas pourquoi mais ça marche jusqu’à la prochaine fois lol….

      • j’ai le même problème de reconnexion impossible avec le message nom d’utilisateur ou mot de passe incorrect alors que ce sont les bons …

        Quelqu’un a une idée ?

        Est-il possible d’avoir une petite explication sur l’histoire du .local ?

      • Solution pour les utilsiateurs sous Snow Leopard avec une distrib Ubuntu récente (10.10).

        Dans le fichier /etc/netatalk/afpd.conf, il faut remplacer uams_dhx.so par uams_dhx2.so :

        - -transall -uamlist uams_randnum.so,uams_dhx2.so -nosavepassword -advertise_ssh

        Depuis cette modif, ca marche nickel pour se connecter.

      • Pour ceux qui ont l’erreur : « something wrong with the volume’s cnid db », vous pouvez la résoudre en modfiant l’attribut cdb par dbd dans le fichier/etc/netatalk/AppleVolumes.default

        Donc pour le partage par défaut : #~/ « Home Directory » cnidscheme:dbd

      • Bonjour, lorsque je copie un gros fichier sur mon serveur j’obtient l’erreur suivante :

        An unexpected error occurred (error code -50)

      • Chapeau ! tres bon article ! je viens de le suivre du début à la fin et j’ai une belle time capsule qui marche nickel
        continuez comme ca

      • Excellent tuto :)
        Fonctionne parfaitement sur mon petit serveur Debian.
        Par contre, comme j’avais iptables sur ma machine, il fallait ouvrir le port via la commande suivante :
        iptables -A INPUT -p tcp -m tcp –dport 548 -j ACCEPT
        Pour les problèmes de performances, elles ne sont uniquement limitante pour l’envoi de fichier vers le serveur si celui-ci se trouve sur « Internet » (par exemple sur une dedibox ou autre), dans le sens inverse en téléchargement, c’est rapide !
        Merci encore pour ce petit tuto et bonne continuation ;)
        Mirrdhyn

      • Vous ne pouvez pas savoir combien cet article m’est utile.

        Mille merci.

        Je l’avais utiliser pour ma debian. Maintenant je viens de le faire pour Fedora 15. Sa fonctionne tout autant.
        Précision pour ceux qui cherchent comment faire : installer les paquet netatalk, avahi (avahi-daemon s’sintalle avec) et nss-mdns (l’équivalent de libnss-mdns)
        $ su -c ‘yum install netatalk avahi nss-mdns’
        ensuite modifier les fichiers et cela fonctionne
        Par contre attention au copier-coller du fichiers afpd.service car la mise en forme d’overblog fait sauter quelques détails (les tirets pour nxml et les guillemets).
        Voici le fichier modifié avec une icone de Macbook :

        %h

        _afpovertcp._tcp
        548

        _device-info._tcp
        0
        model=MacBook

        Encore merci !!

      • We’d like to invite you for an interview Lolita Cp
        :-]]

      • About a year http://doraoqucyk.de.tl miami teen models After all my years of looking at porn, I have finally come across the best BJ video in the history of BJ videos. OhMahGawd.

      • I’m interested in this position http://reemaocomu.de.tl toplist little boy I’d be jamminmy dick in as far as it could go. And then push a little harder when I reached the end. I would blow a nut in her so hard, my cum would come out her mouth.

      • Did you go to university? http://yapajebyref.de.tl little ass hole God that’s some disgusting and annoying noices coming out of that mouth. The blowjob actually would’ve been good if muted. Fortunately, she’s pretty much got the looks to make up for it. A nice body and a SWEET pussy that I’d love to ravage, definitely potential there. But the bad humour and corny acting must go!

      • What’s the interest rate on this account? http://www.zoji.com/1230685 sven bbs lolitas ranchi damn nigga calm down. when this fool cums he sounds like if he’s in south central crying cuz they shot his homie tyron

      • I’ll call back later http://xnxx.0zed.com/ kids xnxx
        ah , iremember when i fucked a latin chick , they are awesome there pussys ae succulent and wet, go for it , u wont regret doing a latin chick !

Laisser une réponse