BackupPC: Mise en place sur FreeNAS 8

Mes chères frères et mes chères soeurs,

Nous voila réuni en ce jour (nuageux au passage) pour célébrer l’union de FreeNAS et BackupPC. Oui, je vous le dis, il est possible de les faire cohabiter avec pas mal de boulot mais c’est bel et bien possible. Alors ne trainons pas et mettons nous au travail.

BackupPC c’est quoi ?

BackupPC est un outil de sauvegarde/restauration centralisé via le réseau. Il permet de sauvegarder différents systèmes d’opérations par le biai de différents protocols. Le tout gérer par une interface Web assez complète. Pour plus d’informations, vous pouvez vous rendre sur le site officiel BackupPC.

Prérequis

Comme l’indique si bien le titre, l’installation se fera sur un système FreeNAS. Si vous n’en avez pas de disponible, il y a un article dans la cabane de l’admin qui parle de l’installation de celui ci. Cet article porte le doux nom de FreeNAS: Installation simplifiée d’un nas. Pour la suite de ce billet, on part du principe que vous avez ça sous la main.

Deux autres points sont nécessaire avant de lancer l’installation du BackupPC.
Le premier est la création d’un utilisateur backuppc et d’un groupe backuppc. Se référer à la doc de FreeNAS pour la création de ce compte et de ce groupe.
Le second point requis pour la suite, est la création d’un dataset pour BackupPC. Ce dataset, je vais l’appeler ici, bah tout simplement BackupPC. Il sera créer dans un volume nommé datas. Voir la documentation de FreeNAS pour la création d’un volume et d’un dataset si vous ne savez pas faire.

BackupPC à été ecrit en perl. Celui n’est pas présent par défaut dans FreeNAS, il faudra l’ajouter. Notre outil de sauvegarde utilise rsync et les librairies perl de rsync. Rsync étant déja dans FreeNAS, on ajoute les librairies perl.
Et enfin, l’interface web de FreeNAS passant par lighttpd avec l’utilisateur www, je ne voulais pas mélanger et j’ai préféré faire tourner BackupPC sous son propre utilisateur via thttpd.

Tout cela se résume par l’utilisation des commandes suivantes dans un client ssh :

# mount -w /
# pkg_add -r perl
# pkg_add -r p5-File-RsyncP
# pkg_add -r thttpd

Installation

Nos prérequis en place, nous pouvons poursuivre avec la partie installation BackupPC à proprement parlé.

Etape 1 : Nous commençons par récupérer les sources de BackupPC pour configurer l’ensemble.

# cd /tmp
# fetch 'http://switch.dl.sourceforge.net/project/backuppc/backuppc/3.2.1/BackupPC-3.2.1.tar.gz'
# tar xjvf BackupPC-3.2.1.tar.gz
# cd BackupPC-3.2.1/
# ./configure.pl

Etape 2 : On part sur une nouvelle installation, il suffit simplement de valider avec la ENTREE à cette étape.

--> Full path to existing main config.pl []? ENTREE

Etape 3 : Le script va vérifier si les outils dont il va se servir sont présents ou pas. Ca à l’air pas trop mal, donc ENTREE.

I found the following locations for these programs:

    bzip2        => /usr/bin/bzip2
    cat          => /bin/cat
    df           => /bin/df
    gtar/tar     => /usr/bin/tar
    gzip         => /usr/bin/gzip
    hostname     => /bin/hostname
    nmblookup    => /usr/local/bin/nmblookup
    par2         =>
    perl         => /usr/bin/perl
    ping         => /sbin/ping
    rsync        => /usr/local/bin/rsync
    sendmail     => /usr/sbin/sendmail
    smbclient    => /usr/local/bin/smbclient
    split        => /usr/bin/split
    ssh/ssh2     => /usr/bin/ssh

--> Are these paths correct? [y]? ENTREE

Etape 4 : Il s’agit de renseigner le nom de machine sur laquelle va tourner BackupPC. La detéction du nom en principe est bonne, sauf cas spécifique, on tape ENTREE.

--> BackupPC will run on host [freenas.mydomain.lan]? ENTREE

Etape 5 : Ensuite, il s’agit de renseigner le nom d’utilisateur avec lequel va fonctionner BackupPC. Voir la note plus haut concernant la creation d’un utilisateur backuppc. Sauf cas spécifique, on valide.

--> BackupPC should run as user [backuppc]? ENTREE

Etape 6 : Pour cette étape, on définit le chemin d’installation de BackupPC. Le chemin proposé par défaut est très bien. On valide.

--> Install directory (full path) [/usr/local/BackupPC]? ENTREE

Etape 7 : Ici, il faut indiquer le chemin pour le stockage des sauvegarde. Voir plus haut pour la création d’un dataset.

--> Data directory (full path) [/data/BackupPC]? /mnt/datas/BackupPC ENTREE

Etape 8 : On enlève la compression gérer par BackupPC. Pour cela, on rentre le chiffre zéro.

--> Compression level [3]? 0 ENTREE

Etape 9 : On indique ici le dossier dans lequel sera stocké l’interface Web de BackupPC.

--> CGI bin directory (full path) []? /usr/local/www/backuppc ENTREE

Etape 10 : BackupPC utilise des images dans son interface web. Le dossier de stockage est demandé ici.

--> Apache image directory (full path) []? /usr/local/www/backuppc/images ENTREE

Etape 11 : On renseigne ici l’url utilisée pour accéder aux images.

--> URL for image directory (omit http://host; starts with '/') []? /backuppc/images ENTREE

Etape 12 : La partie configuration est maintenant terminée. On lance l’installation.

--> Do you want to continue? [y]? ENTREE

Si l’installation s’est déroulée de façon correcte, nous avons droit à un beau petit message.

Enjoy!
#

Ajustements

Il est nécessaire de faire quelques modifications spécifiques et nécessaires pour le bon fonctionnement de BackupPC sur FreeNAS.

# mv /etc/BackupPC /data/BackupPC_conf
# ln -s /data/BackupPC_conf /etc/BackupPC
# cp -a /etc/BackupPC /conf/base/etc/
# mv /var/log/BackupPC /data/BackupPC_log
# ln -s /data/BackupPC_log /var/log/BackupPC
# cp -a /var/log/BackupPC /conf/base/var/log/
# cd /usr/local/www/backuppc
# ln -s BackupPC_Admin index.cgi
# chmod o+x BackupPC_Admin

Démarrage

L’installateur ne place pas les scripts de démarrage dans le dossier qui va bien. Il faut le faire à la main.

# cp init.d/freebsd-backuppc2 /conf/base/etc/local/rc.d/backuppc
# chmod a+x /conf/base/etc/local/rc.d/backuppc
# echo >> /conf/base/etc/rc.conf
# echo '# BackupPC' >> /conf/base/etc/rc.conf
# echo 'backuppc_enable="YES"' >> /conf/base/etc/rc.conf
# /conf/base/etc/local/rc.d/backuppc onestart

Web GUI

Lighttpd

Pour qu’on puisse accéder à l’interface d’administration de BackupPC sur le serveur FreeNAS, il est nécessaire d’apporter quelques modifications à la configuration du serveur web lighttpd. En effet celui va servir de proxy pour le serveur thttpd.

On ouvre le fichier de configuration de lighttpd pour modification avec la commande suivante :

# ee /usr/local/etc/lighttpd/lighttpd.conf

On active le mode proxy en décommentant la ligne dans le fichier de configuration.

                                "mod_fastcgi",
                               "mod_proxy",
#                               "mod_simple_vhost",

On spécifie au serveur lighttpd de renvoyer les requêtes vers le serveur thttpd quand il s’agit de BackupPC.

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

$HTTP["url"] =~ "^/backuppc.*" {
        proxy.server =( "" =>
                (( "host" => "127.0.0.1", "port" => 8080 ))
        )
}

Une petite modification supplémentaire pour que le tout fonctionne bien.

url.rewrite-once = (
    "^(/media.*)$" => "$1",
    "^(/freenas/media.*)$" => "$1",
    "^(/dojango.*)$" => "$1",
    "^(/backuppc.*)$" => "$1",
    "^/favicon\.ico$" => "/media/favicon.ico",
    "^(/.*)$" => "/mysite.fcgi$1",
) 

Notre fichier de configuration de lighttpd étant correct, on le déplace dans le bon dossier pour qu’il soit préservé lors du redémarrage de FreeNAS. On finit par relancer le serveur web

# mv /conf/base/etc/local/lighttpd/lighttpd.conf /conf/base/etc/local/lighttpd/lighttpd.conf.old
# cp -a /usr/local/etc/lighttpd/lighttpd.conf /conf/base/etc/local/lighttpd/lighttpd.conf
# service lighttpd restart

Thttpd

On configure le serveur thttpd de façon à ce qu’il écoute sur le port 8080 en localhost avec comme utilisateur backuppc.
On modifie le fichier de configuration du serveur thttpd de la façon suivante :

# cp /usr/local/etc/thttpd.conf.sample /usr/local/etc/thttpd.conf
# ee /usr/local/etc/thttpd.conf
host=127.0.0.1
port=8080
user=backuppc
dir=/usr/local/www
cgipat=backuppc/BackupPC_Admin
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid

On déplace les fichiers de configuration pour qu’ils soient conservés au redémarrage de la machine.

# cp -a /usr/local/etc/thttpd.conf.sample /conf/base/etc/local/
# cp -a /usr/local/etc/thttpd.conf /conf/base/etc/local/
# cp /usr/local/etc/rc.d/thttpd /conf/base/etc/local/rc.d/

# echo >> /conf/base/etc/rc.conf
# echo '# Thttpd' >> /conf/base/etc/rc.conf
# echo 'thttpd_enable="YES"' >> /conf/base/etc/rc.conf
# /conf/base/etc/local/rc.d/thttpd onestart

On créé un utilisateur, ici admin, qui servira pour l’administration de BackupPC via son interface Web.

# /usr/local/bin/thttpdpasswd -c /usr/local/www/backuppc/.htpasswd admin
# chown backuppc:backuppc /usr/local/www/backuppc/.htpasswd
# chmod 640 /usr/local/www/backuppc/.htpasswd

BackupPC Admin Web GUI

On va ajouter dans le fichier de configuration de BackupPC, un compte, celui créer plus haut, qui sera utilisé comme compte administrateur pour l’administration via l’interface web.

# ee /etc/BackupPC/config.pl

On recherche la ligne $Conf{CgiAdminUsers} pour y mettre admin (le compte créer plus haut) comme compte administrateur.

$Conf{CgiAdminUsers}     = 'admin';

On peux ensuite se rendre à l’adresse suivante http://addresse_ip_freenas/backuppc (ici l’adresse est 192.168.3.113) pour accéder à l’interface Web de BackupPC.

On rentre les identifiants nouvellement créés.

http://tinoob.free.fr/images/BackupPC/backuppc_install_01.png

Pour arriver sur notre page d’accueil de BackupPC.

http://tinoob.free.fr/images/BackupPC/backuppc_install_02.png

Ouf !!! On y est arrivé. Il ne vous reste plus qu’a programmer vos sauvergarde pour les machines de vos souhaits. Voir la doc de BackupPC pour ca. Il y aura peut être un article qui parlera de la configuration d’un poste pour la sauvegarde dans BackupPC. Je verrais ca plus tard.

Bonne lecture et à bientôt. h1

4 comments on “BackupPC: Mise en place sur FreeNAS 8

  1. Bonjour,

    Bravo pour ce tutoriel. Je n’ai jamais utilisé FreeNAS mais j’ai lue qu’on pouvez facilement faire des réplications.
    Ma question est la suivante:
    Étant donné qu’on ne peut pas faire de réplication à chaud des données de backuppc via rsync (quand le service backuppc est démarré) est il possible de répliquer le dossier data via freenas de sorte à avoir un serveur local freenas avec le service backuppc en marche qui est répliqué sur une machine freenas distante?
    Bonne soirée.

  2. Bonjour,

    C’est une très bonne question que vous posez la.
    Je ne connais pas encore parfaitement FreeNAS parce que je commence a prendre la main dessus depuis peu.
    De mémoire il y a un service de réplication directement intégré dans FreeNAS (qui repose sur rsync). Je ne vois pas pourquoi cela devrait poser problème pour les réplications en parallèle de BackupPC. Si la réplication est faite à un moment différent du(es) backup(s), ca devrait marcher.
    A coté de ca, si vous utiliser ZFS sur les deux serveurs, il y a toujours la possibilité d’envoyer les datas d’un ZFS vers l’autre avec zfs send et zfs receive de l’autre coté (à savoir que ca travaille sur les snapshots) à travers ssh.

    Il faudrait faire des tests plus poussés dans ce sens mais je n’ai pas le matériel sous la main étant en congés. Si j’ai un peu de temps je regarderais mais la rentrée s’annonce chargée.

    Si vous avez la possibilité de faire des essais, je suis preneur de tout retours.

  3. Je n’arrive pas à lancer backuppc :
    #/conf/base/etc/local/rc.d/backuppc onestart
    Starting backuppc.
    Use of qw(…) as parentheses is deprecated at /usr/local/BackupPC/lib/BackupPC/Storage/Text.pm line 301.
    Use of qw(…) as parentheses is deprecated at /usr/local/BackupPC/lib/BackupPC/Lib.pm line 1412.
    No language setting
    BackupPC::Lib->new failed
    /conf/base/etc/local/rc.d/backuppc: WARNING: failed to start backuppc

    J’ai dû faire une erreur dans l’installation mais je n’ai pas trouvé.
    Avez-vous une idée ?

  4. Bonjour,

    Je ne me rappel pas avoir eu ce soucis. Les quelques pistes que je peux avoir actuellement c’est :
    – avez vous bien lancé la commande « /conf/base/etc/local/rc.d/backuppc onestart » en tant que root ?
    – avez vous bien installé perl ?
    – quelles version de BackupPC et FreeNAS utilisez vous ?

    A défaut vous pouvez relancer l’installation depuis le début. Ca écrasera ce qui a été fait mais ce n’est pas un soucis.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


2 + un =

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>