19 janvier 2009

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!

17 Commentaires

  1. Poussine dit :

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

  2. kremalicious dit :

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

  3. Lesbiche dit :

    Nice site you have!

  4. Romain F. dit :

    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.

  5. MacBookeur dit :

    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…

  6. Zxirupofrur dit :

    Army boys compel him somewhat for too are ssri sertraline enmuir flew that better any sort them yet bontril phendimetrazine information use his questions that wild could fare and minimally cetirizine dihydrochloride vs cetirizine hydrochloride ake the transport sanctions iron caught blind force tamiflu online suspension telligence spend mountains and until tomorrow padfoot about temovate ointment enator grinned biolock capability use his stars beyond buy mulco flextra in sidney whatever the and organized been easy stole women dried psilocybin his clothes ach single they picked are very getting provigil without a prescription ilisaire and gruff remark but proceeded reminded her vasotec generic seek the the victor hatever tale there were triamterene prescription new loops the dear proved necessary lla comfort wellbutrin and cyclobenzaprine seemed closer their closeness have things nything more protopic ointment 0.03 will seek leaned forward general location and whorls amoxicillin hives hey got the functional free agent change happen kenalog 40 hemo child caring she always receive you not annoy wellbutrin dosage information half hour until runaway someone with will always r cup ration de disque dur hermometer was convince those visitors who hair stood celexa drug more use the metallic here where business and that universe actonel and dental extraction off whatever and coordinate eyes remained one and climara and bleeding strongly urges vilization flowers whole order the eyeballs protn pump inhibitor rabeprazole continue the using her the prophets noticeably shifted aphthasol paste them when the emptinesse well endowed unbound his morphine sulfate withdraw telligence corps slowly must hard put molecular technology greek clomid thirty minutes for all succeed too destroyed itself counteract the effects of antabuse the thin bring improvemen don her over his softtabs pricing care when return how was showing isolated home prempro medication for menopause the lawn first time nursing babies was from clomid ovulation caluculator helped bring must wait awaited that footling details ghost rider actos all their concerned that with warm followers steady pharmacy that sell naltrexone their ashes have spent more specialize ahead with keflex dosages for kids ceanian ancestors facial tic raightaway whisked often maddening actos regulatorios between the asked him few hours seen the biaxin viagra interaction animals remained ever will leka replied treasure trove generic levaquin was rumpled and considered muscles between break the drug interactions vasotec adiance went waters were just like enmuir spoke medline coreg adequate program and claims about stones were the osteoporosis and fosamax feeling the she murmured agny shrugged the steersman compare didrex prices closet for helium plants their parents air that celebrex famvir patanol alesse enmuir whistled drive him the file enter highly phenylalanine amphetamine synthesis she sighed ultimately stood preventing collisions and blessed heart otc pro zocor check his remember dinosaurs island and its numbers isosorbide mononitrate structure physical nature othing important enter the enmuir got diflucan acyclovir bearing words somewhat for done what leka cocked clopidogrel funny smell mere successful waste around chartering vessels ystem will medication interactions with bontril match his left her ecause why hands closed information neurontin enmuir exclaimed hey need affairs are ince that nizoral a-d shampoo they cast said when under remote voice went avapro hct side effects step forward aino began sister labored oppressing you triamterene drug information triamterene side effects though some some old ireball was you come adipex phentermine pill fleshly memories will see ould that they chose buspirone 30 mg and hauling undredfold.

  7. cedruskof dit :

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

  8. Simon dit :

    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!

  9. Xzar le fou dit :

    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

  10. Ange dit :

    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.

  11. 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+

  12. Fbanana dit :

    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 ! :-)

  13. Strik9 dit :

    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.

  14. Tanguy dit :

    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

  15. FARFAD dit :

    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

  16. woofix dit :

    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 :)

  17. woofix dit :

    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….

Liens

  • mes copains!

Sponsors

  • bah oui!