Créer sa Time Capsule et son serveur de fichiers "mac" sous Ubuntu

( 14 Votes )

 

Le contexte...


Quel bon geek n'a jamais eu envie d'avoir son petit serveur pour partager musique, vidéos, photos et permettant de gérer ses sauvegardes Time Machine ou autres divers back-up ? C'est ce que j'ai voulu mettre en oeuvre sans passer par des solutions de Nas tous prets mais en me tournant vers une config home made low profile. J'ai donc monté une carte mère mini-itx équipée d'un atom et de 1Go de ram.

Pour des raisons de puissance et de compatibilité il n'était pas prévu de faire tourner OSX server mais Freenas, une solution gratuite et efficace pour se faire un Nas utilisant freeBSD, et offrant en plus plusieurs services et outils permettant une intégration parfaite à un réseau de machines sous OSX (partage AFP, découverte de réseau par Bonjour, Serveur Time Machine, Serveur iTunes). Malheureusement Freenas n'a pas été à la hauteur de mes attentes, surtout concernant le Power-Management. Après quelques recherches j'ai découvert qu'il était possible d'activer les mêmes fonctions sur une installation Linux ; j'ai choisi Xubuntu 10.10 plus précisément.

Il s'agit d'un tutoriel de configuration de Ubuntu/Xubuntu 10.10, il marche peut être sur des versions antérieurs ou d'autres distributions à base de Debian... ou peut être pas

Pour suivre ce tutoriel, ll est donc nécessaire d'avoir une machine sous Ubuntu ou Xubuntu 10.10 à jour, et savoir utiliser un minimum l'editeur nano intégré au shell.


L'article comprend 5 parties :


1. Installer et configurer Netatalk

2. Installer et configurer Avahi

3. Installer et configurer le partage d'écran

4. Configurer Time Machine

5. Configurer le serveur iTunes





1. Installer et configurer Netatalk

logo netatalk

Voici la commande d'installation : 
sudo apt-get install netatalk
Ensuite il faut vérifier que le fichier /etc/default/netatalk soit bien configuré.

Utiliser la commande 
sudo nano /etc/default/netatalk 
et éditer les options comme ceci :
ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

Ensuite il faut editer un autre fichier :

sudo nano /etc/netatalk/AppleVolumes.default

trouver la ligne

# By default all users have access to their home directories.
~/                      "Home Directory"

et ajouter en dessous :

emplacement/du/répertoire/partagé  "NomduVolume" allow:@groupname options:usedots,upriv

ce qui donne par exemple chez moi, pour le répertoire où seront stockées mes sauvegardes Time Machine: 

/home/jimmy/Time_Machine "Time Capsule" allow:@jimmy options:usedots,upriv,tm

Attention de ne pas mettre d'espace dans le nom des répertoires, ce n'est pas un problème pour le "NomduVolume" qui sera annoncé sur le réseau. Pour partager plusieurs répertoires ajouter autant de lignes que nécessaire. @groupname correspond au groupe d'utilisateur (Ubuntu) que vous voulez autoriser à accéder au partage.

Une fois la configuration terminée, redémarrer le service avec la commande :

sudo /etc/init.d/netatalk restart

Pour vérifier que le service est fonctionnel, se rendre dans le menu du finder de la machine sous OSX qui utilisera le partage: Menu Aller > Se connecter au serveur > afp://IP.du.serveur 

Comme ceci:

connection serveur menu du finder


Vous remarquez que le serveur n'est pas encore visible dans le volet du finder, c'est parce que le service Bonjour n'est pas encore géré. C'est le service utilisé par Apple pour la mise en réseau local automatique des machines ; Bonjour est une implémentation à la sauce Apple des protocoles Zeroconf. Fort heureusement il existe une implémentation libre et utilisable sous debian de ces protocoles, il s'agit de la bibliothèque logicielle Avahi.



2. Installer et configurer Avahi

Logo Avahi

Voici la commande d'installation :

sudo apt-get install avahi-daemon libnss-mdns

Ensuite il faut éditer le fichier /etc/nsswitch.conf :

sudo nano /etc/nsswitch.conf

et ajouter “mdns” à la fin de la ligne de la ligne comme ceci :

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

Pour que Avahi annonce le service AFP il faut créer le fichier /etc/avahi/services/afpd.service  avec la commande

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

Ajouter ces lignes et sauvegarder :


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


Petit truc cosmétique, il est possible de changer le type d'appareil annoncé en remplaçant Xserve par Macmini, iMac, MacPro, Xserve, MacBook, MacBookPro ou MacBookAir ce qui changera l'icone visible dans le finder


Redémarrer le service avec la commande :

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


Maintenant le serveur est annoncé par le protocole Zeronconf/Bonjour, il est ainsi visible dans le finder et les répertoires partagés peuvent être montés par simple click


Partage AFP + Zeroconf




3. Installer et configurer le partage d'écran

Partage d'ecran OSX

Le but de cette manipulation est de pouvoir lancer un partage d'écran/VNC avec le client natif de mac OSX à partir du bouton "partage d'écran" dans le finder sous l'icone du serveur AFP que nous venons de configurer. Il ne sera donc pas nécessaire d'installer de logiciel tiers sous osx.

Normalement le serveur VNC VINO est préinstallé sur ubuntu/xubuntu 10.10, mais je nai pas réussi à l'utiliser pour se connecter avec un client osx, c'est pourquoi j'utilise TighVNCserver qui marche parfaitement. Pour l'installer taper :

sudo apt-get install tightvncserver

Créons ensuite le fichier ~/.vnc/xstartup avec la commande :

sudo nano ~/.vnc/xstartup

Ajouter ce lignes dans le fichier et enregistrer :
#!/bin/sh
unset SESSION_MANAGER
sh /etc/X11/xinit/xinitrc
Aprés avoir enregister taper :

chmod a+x .vnc/xstartup


Il faut aussi que Avahi annonce le service VNC à la machine cliente sous OSX via Bonjour/Zeroconf, pour cela il faut créer le fichier /etc/avahi/services/rfb.service avec la commande :

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

le remplir avec ces lignes et sauvegarder :

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_rfb._tcp</type>
<port>5901</port>
</service>
</service-group>


Ensuite taper cette commande :

vncserver  :1  -depth 16  -geometry 800x600

Vous devriez alors pourvoir vous connecter avec le bouton "partage d'écran" du finder d'OSX.

Attention, si vous redémarrez le serveur, la connexion ne sera plus active, il faudra retaper la dernière commande pour lancer le serveur VNC. Il est possible de le faire rapidement via SSH, c'est probablement la façon la plus secure. Toutefois si certains préfèrent que le serveur VNC se lancent automatiquement au démarrage, il existe plusieurs méthodes. J'ai choisi une tâche Cron pour lancer VNC  au démarrage. Pour ce faire j'ai utilisé l'utilitaire "Tâche Cron" du Web Interface Webmin que je vous recommande d'installer. Il suffit alors de créer une tâche Cron qui se lancera au démarrage en éxécutant le script startVNC.sh que vous aurez créé comme ceci :

mkdir MyScripts

sudo nano ~/MyScripts/StartVNC.sh


Et ajouter ces lignes :

#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
/usr/bin/vncserver -geometry 1280x1024 -depth 24


Dans l'interface de Webmin : Système > Tâches Cron > Créer une nouvelle tâche cron programmée

Dans "S'éxécuter en tant que" choisir l'Utilisateur que vous voulez utiliser pour la connexion VNC

Dans "Commande" saisir :

/home/NOM_S'UTILISATEUR/MyScripts/StartVNC.sh >/dev/null Choisir la "description" qui vous convient, puis cocher "Planification simple" et dans le menu déroulant choisir "Au boot du système" et ne pas oublier de cliquer sur "créer". Vous pouvez ensuite tester le script en clicant sur "Executer maintenant".


Partage d'écran




4. Configurer Time Machine


Maintenant que le partage AFP et la découverte par Bonjour fonctionnent au poile, rien de plus simple que de configurer Time Machine afin que les back ups se fassent sur votre serveur Ubuntu. Il suffit de monter dans le finder le répertoire que vous voulez utiliser pour stocker les sauvegardes puis d'ouvrir les préférences Time Machine, d'aller dans "Choisir un disque" et de choisir le volume distant que vous voulez utiliser.


Choix du disque réseau


Disque ok


Une fois le volume choisi et la première sauvegarde ammorcée vous pourrez remarquer qu'un nouveau volume intitulé "copie de sauvegarde Time Machine" est monté dans le finder. De même si vous vous rendez dans le répertoire choisi pour stocker les sauvegardes vous remarquerez l'image nommée "XXX.sparsebundle". C'est dans cette image/volume que seront accumulées les sauvegardes, de la même manière que pour les Time Capsule vendues par Apple.


Sparsebundle dans volume réseau


Désormais, même si le serveur est déconnecté ou éteint, à la prochaine connexion, Time Machine retrouvera tout seul le répertoire des sauvegardes à travers le réseau et montera le volume automatiquement.


5. Configurer le serveur iTunes



Lancer cette commande :

sudo apt-get install mt-daapd

Puis celle ci pour relancer le service

sudo /etc/init.d/mt-daapd start

et celle ci pour s'assurer que le service se lancera au démarrage

sudo update-rc.d mt-daapd defaults


Si tout fonctionne, il est alors possible de se connecter au Web Interface qui gère le serveur mt-daapd à cette adresse :

http://IP.DU.SERVEUR.XX:3689/index.html

Le login et le mot de passe par défaut sont tous les deux "mt-daapd"

Vous pourrez alors régler le serveur comme bon vous semble, changer son nom, les mots de passe et bien sur spécifier le répertoire dans le quel se trouve la musique que vous voulez partager.

Une fois le service réglé vous pourrez alors accéder à la musique dans le menu "Partagé" d'iTunes comme ceci :


Accés au serveur iTunes





J'espère que je n'ai rien oublié, bon courage, avec un switch gigabit on atteint des vitesses de transfert de 60 mo/s en AFP, ca en vaut donc vraiment la peine...

Edit : avec Un SSD en client j'ai des pics de transfert à 80mo/s et Coucou78 arrive même à saturer le Gigabit avec SSD client+Raid0 sur le Nas!


http://www.kremalicious.com/2008/06/ubuntu-as-mac-file-server-and-time-machine-volume/http://havetheknowhow.com/Configure-the-server/Run-VNC-on-boot.htmlEDIT 23-07-2011 : Le passage vers OSX 10.7 Lion pose des problèmes de compatibilité avec la version Netatalk des repo de Ubuntu. Pour que les volumes distant soient reconnus par Time Machine il faut utiliser Netatalk 2.2 qui est encore au stade Beta. Voici un lien avec une solution provisoire pour installer cette version beta en attendant que Netatalk 2.2 soient disponible sur les repo : http://ubuntuforums.org/showthread.php?p=11077808 Tout marche très bien sur mon n'as avec cette version beta.
 

Commentaires 

 
+2 #1 jpevrard 15-12-2010 21:57
Super Ton Tuto.
Merci beaucoup. Pour ta contribution.
Cordialement JP
Citer
 
 
0 #2 3t0 21-12-2010 15:45
Superbe tuto.
Je suis encore un null du tux, et ce tuto m'a permit de mon serveur.

Merci!
Citer
 
 
0 #3 3t0 21-12-2010 15:49
Configurer le serveur oui,
et qui roule sur une linuxmint édition debian.
Citer
 
 
+1 #4 Boombeng 21-12-2010 17:09
Je suis content que ce soit utile :)
Citer
 
 
0 #5 sqalg 23-12-2010 21:27
Hello
J'ai bien suivi les 2 premières parties du post sans soucis.
Toutefois impossible d'avoir le disque partagé visible pour time machine ?

Alors que j'arrive bien à accéder via le finder au serveur Time Capsule créé.

Est ce que tu aurais une idée ?

merci

PS: je suis sous Ubuntu 9.10
PS2: Sachant que je vais me faire railler pour ma version d'ubuntu , je migre ...en 10.10 :-)
Citer
 
 
0 #6 Boombeng 28-12-2010 10:05
Citation en provenance du commentaire précédent de sqalg :
Hello
J'ai bien suivi les 2 premières parties du post sans soucis.
Toutefois impossible d'avoir le disque partagé visible pour time machine ?

Alors que j'arrive bien à accéder via le finder au serveur Time Capsule créé.

Est ce que tu aurais une idée ?

merci

PS: je suis sous Ubuntu 9.10
PS2: Sachant que je vais me faire railler pour ma version d'ubuntu , je migre ...en 10.10 :-)


Alors, as tu résolu ton problème ?
Est ce que le serveur est visible dans le volet de Finder ? N'aurais tu pas des protection en lecture/écriture sur le répertoire concerné ?
Citer
 
 
0 #7 Hellequin 29-12-2010 09:24
Tape ça dans ton terminal Mac OS X et tu verras ton serveur apparaitre dans tes paramétrages Time Machine:

defaults write com.apple.systempreferenc es TMShowUnsupport edNetworkVolume s 1
Citer
 
 
0 #8 Boombeng 29-12-2010 09:59
Citation en provenance du commentaire précédent de Hellequin :
Tape ça dans ton terminal Mac OS X et tu verras ton serveur apparaitre dans tes paramétrages Time Machine:

defaults write com.apple.systempreferenc es TMShowUnsupport edNetworkVolume s 1


Je n'ai pas eu besoin de faire cette manip perso, c'est pour ca que je ne l'ai pas précisé. Il y a un tuto de Sonotone :
darwinx86.net/.../...
Citer
 
 
0 #9 Hellequin 29-12-2010 10:39
Intéressant: si tu as d'autre tutos de ce genre (linux/OSX) je suis preneur :)
Citer
 
 
0 #10 sqalg 30-12-2010 03:16
Citer :
Alors, as tu résolu ton problème ?
Est ce que le serveur est visible dans le volet de Finder ? N'aurais tu pas des protection en lecture/écriture sur le répertoire concerné ?

J'ai réussi merci bcp . toutefois (par défis simplement), j'ai passé ma machine (carte mere ZOTAC ION ) sous Snow Leopard Server (10.6.4). Mais impossible d'avoir le son via le cable HDMI. (j'utilise aussi cette machine comme media center avec XBMC)
Donc je retourne sous Ubuntu et je vais re-suivre ton tuto.
merci en tout cas
Citer