Connexion
Ces billets correspondent à un filtre sur: Tutoriels
"J'ai déjà trouvé la solution à ce problème, mais je suis incapable de trouver où j'ai noté les informations...". Combien de fois ne me suis-je pas dit ça... et vous aussi je pense. Alors dans cette catégorie, vous trouverez comme moi des solutions à l'installation ou la configuration de certains logiciels ou encore certaines astuces. N'hésitez pas à proposer les vôtres ou a apporter plus de lumières sur ces billets.

Changer de logiciel pour un type de fichier sous gnome

Ce matin, petite (grosse en fait, mais ça fait moins pro si je l'avoue ;-) mise à jour de mon laptop sur Archlinux. Tout ce passe pour le mieux ensuite jusqu'à ce que je remarque que Nautilus veut absolument ouvrir mes fichiers 'texte' (*.txt) avec la commande suivante:

wine editor.exe

Mouais... c'est pas que cet éditeur est minable, mais bon, il y en a des meilleurs et j'ai déjà une préférence pour Geany (Vim en mode texte mais ce n'est pas le problème). Du coup je fais un clique droit, je lance avec le logiciel de mon choix l'édition de mes fichiers, mais bon, c'est vite casse pied...

La solution se trouve dans le fichier suivant: ~/.local/share/applications/mimeapps.list qu'il suffit d'adapter à son besoin. Chez moi ça sera donc:

[Added Associations]
x-content/audio-cdda=vlc.desktop;
x-content/video-dvd=vlc.desktop;
x-content/audio-player=vlc.desktop;
image/png=eog.desktop;gimp.desktop;
application/vnd.ms-excel=calc.desktop;geany.desktop;
application/pdf=acroread.desktop;
image/svg+xml=inkscape.desktop;
video/x-msvideo=vlc.desktop;
text/directory=gedit.desktop;userapp-thunderbird-D4J81U.desktop;
text/plain=geany.desktop;gedit.desktop;

Et j'ai viré toutes les mentions du type:

wine-extension-chm.desktop
wine-extension-hlp.desktop
wine-extension-htm.desktop
wine-extension-html.desktop
wine-extension-ini.desktop
wine-extension-rtf.desktop
wine-extension-txt.desktop
wine-extension-wri.desktop
wine-extension-xml.desktop

... qui sont arrivées là par je ne sais quel vilaine manipulation.

L'occasion de mieux comprendre mon système et d'apprivoiser au mieux l'ouverture de mes fichiers et extensions ;-)

Et bien sur la source de cette info: sur ubuntuforums.org.

Commentaires: 0 | Buzz it!

Post-it : L'authentification SSH par clés RSA/DSA

Gnome-sticky-notes-applet.png by DBGthekafu under GPL

Utiliser une paire de clés privée/publique pour les connections SSH permet au choix :

  • Augmenter la sécurité (Lorsqu'il faut à la fois la clé privée et la passphrase permettant son ouverture)
  • Eviter de taper un mot de passe (si la clé privée n'est pas protégée par une passphrase -> à éviter si le lieu de stockage de la clé privée n'est pas fiable.

Voici comment créer et utiliser une paire de clés sur un serveur.

Générer la paire de clés

Rien de plus simple. Sur l'ordinateur qui deviendra le futur client SSH, il suffit de lancer la commande ssh-keygen.

toto@host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/toto/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
...
toto@host$ 

Envoyer la clé publique au serveur

Ici j'utilise un petit enchaînement simple pour copier le contenu de ma clé publique dans le fichier authorized_keys du compte visé sur le serveur.

J'envoie la clé publique sur le serveur dans un fichier authorized_keys2 :

toto@host$ scp ~/.ssh/id_rsa.pub user@server:/home/user/.ssh/authorized_keys2

Ensuite on se connecte de manière classique (ssh et mot de passe) sur le serveur pour ajouter la clef à la vraie liste de clés publiques autorisées.

toto@host$ ssh user@server
user@server password:
user@server$ cat /home/user/.ssh/authorized_keys2 >> /home/user/.ssh/authorized_keys
user@server$ rm /home/user/.ssh/authorized_keys2
user@server$ exit
toto@host$ 

Tester

toto@host$ ssh user@server
user@server$ 

Et le tour est joué !

Commentaires: 0 | Buzz it!

Redimensionner une partition avec GNU Parted

Contexte

C'est en voulant essayer une nouvelle distribution sur mon laptop que l'idée de redimensionner mes partition m'a pris. C'est une opération que j'ai souvent effectué par le passé mais toujours à partir d'un liveCD. En l'occurence, ce jour là, pour cause de déménagement qui approche, impossible de mettre la main sur un liveCD sans déballer les cartons si durement remplis...

L'idée est donc de quitter la session graphique, de démonter le système de fichier visé, et de lancer la manipulation à la main. Comme la manipulation n'a pas été évidente et m'a même donné quelques sueurs froides, je fais ce billet pour mémoen quelque sorte.

Présentation succinte de GNU Parted

GNU Parted est un outil en ligne de commande qui permet de créer, supprimer, modifier, copier les partitions d'un disque dur. Il est souvent utilisé avec une interface graphique telle que GParted ou QtParted.

Voyons un peu à quoi ressemble l'utilisation de cet outil :

user:/path/$ sudo parted
GNU Parted 1.8.8
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           prints general help, or help on
        COMMAND
  mklabel LABEL-TYPE                       create a new disklabel (partition
        table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on
        partititon NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [free|NUMBER|all]                  display the partition table, a
        partition, or all devices
  quit                                     exit program
  rescue START END                         rescue a lost partition near START
        and END
  resize NUMBER START END                  resize partition NUMBER and its file
        system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG] ]                   toggle the state of FLAG on partition
        NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  displays the current version of GNU
        Parted and copyright information
(parted)

Plus d'infos sur :

Les choses sérieuses

Je ne vais parler ici que d'une diminution de l'espace allouée à une partition pour en créer une nouvelle à la suite. Dans le cas inverse, les principes sont les mêmes, mais il faudra commencer les manipulation par un rm et ensuite faire le redimensionnement.

Voir l'état du disque

Rien de plus simple :

(parted) print all

Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32,3kB  8480MB  8480MB  primary   ext3         boot
 2      8480MB  160GB   152GB   extended
 5      8480MB  9015MB  535MB   logical   linux-swap
 6      9015MB  160GB   151GB   logical   ext3

On obtient plusieurs informations intéressantes :

  • Numéro de la partition
  • Déput et fin de la partition à XMB ou XGB
  • Type de partition et de sytème de fichier
  • Eventuellement la présence d'un flag de boot

C'est parti !

On lance le redimensionnement avec la commande resize de GNU Parted :

(parted) resize 6 9015MB 120GB

Une confirmation OK et le redimensionnement se lance.

Nouvelle partition

Nous avons à présent une partition redimensionnée et donc un espace vide qu'il faut utiliser. Ici nous allon créer une partion en ext3 qui commencera là où s'arrête celle qu'on vient de réduire et s'arrêtera au bout du disque.

mkpartfs logical ext3 120GB 160GB

On vérifie le résultat avec :

(parted) print all
(parted) check 7

Ensuite on s'échappe de parted avec un quit et il ne reste plus qu'à monter la nouvelle partition ou mieux, la vérifier avant avec :

user:/path/$ sudo fsck.ext3 /dev/sdXY

Commentaires: 2 | Buzz it!

Firefox 3 and protocol handlers - Part 2 - ExtApp

Le précédent article s'était arrêté à présenter l'application Web de principe du gestionnaire de protocoles de Firefox 3. L'article que vous êtes en train de lire va lui s'attacher à vous permettre d'utiliser une application externe pour un protocole donné.

Un exemple d'application externe

Je vais présenter ici un petit exemple d'application en Python qui permet d'écrire dans un fichier journal (ou 'log') le contenu de la valeur passée via l'appel du protocole. Dans cet exemple le protocole utilisée est "mycall" (l'idée est de simuler la création d'un softphone appelé par une interface de click-to-call).

#!/usr/bin/python
#-*- coding: utf-8 -*-

# On importe deux bibliothèques utiles pour la suite
import sys
from datetime import datetime

# On met la date dans une variable pour tracer les résultats
date = datetime.now()

# Ici ça se complique un peu. Comme le gestionnaire de protocole
# de firefox donne en argument l'ensemble de la chaine 'href',
# nous allons enlever la chaine 'mycall:' pour ne conserver que
# la valeur décimale de cette chaine
arg = sys.argv[1][7:]

# On ouvre en écriture le fichier journal
# ('a' pour écrire à la suite)
filout = open('/path/to/log/file/calltest.log','a')

# On écrit la valeur envoyée précédée de la date
filout.write('%d/%d/%d %d:%d - Voici l\'argument donné : ' % (date.day, 
                                                              date.month,
                                                              date.year,
                                                              date.hour,
                                                              date.minute))
filout.write(arg + '\n')

# On ferme le fichier
filout.close()

On donne les droits d'exécution à ce script :

chmod +x /path/to/ext/app/call.py

L'application web

Il est maintenant temps de créer l'interface web de 'click-to-call' sur laquelle figurera le lien vers le protocole 'mycall'. Pour ceux qui ont lu l'article précédent, vous remarquerez que c'est encore plus simple.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
  <title>Web Protocol Handler Sample - Register</title>
</head>
<body>
  <h1>External protocol handler sample</h1>
  <p>This web page will install an external protocol handler for the <code>mycall:</code> protocol.</p>

  <p>Hey have you seen <a href="mycall:874781">this</a> before?</p>
</body>
</html>

Configurer firefox

Si l'interface web est encore plus simple, il faut toutefois configurer un peu Mozilla Firefox.

About:config

Pour accéder au registre de configuration de Firefox, il faut entrer l'adresse suivante dans la barre d'adresse.

about:config
  • Ensuite, il faut créer une 'nouvelle' 'valeur booléenne' (via un click droit) qui portera le nom suivant: "network.protocol-handler.expose.mycall" et mettre la valeur à "true". Cette valeur permettra d'autoriser l'utilisation de ce nouveau protocole.
  • Un second couple nom + valeur est à créer afin de pouvoir éviter un avertissement lors de l'utilisation d'une application externe: "network.protocol-handler.warn-external.mycall" qui prendra la valeur "false".

1er essai

Si vous êtes sur un système qui supporte Bash (Linux, Mac OS, BSD...), vous pouvez lancer un 'tail -f' sur le fichier journal afin d'en suivre l'évolution. Cela nécessite tout de même que le fichier existe avant. Si ce n'est pas le cas, il suffit de le créer avec :

touch /path/to/log/file/calltest.log

On lance la surveillance du fichier :

tail -f /path/to/log/file/calltest.log

On charge la page HTML qui contient le lien 'href' et on suit le lien. Une fenêtre s'affiche alors, vous permettant de choisir l'application à utiliser. Il suffit de choisir celle que vous avez créé plus haut et de cocher (si vous le souhaitez) 'se souvenir' afin de ne plus avoir à le faire ensuite.

À chaque clic, vous ajoutez normalement une ligne dans le fichier journal avec la valeur passée suite à 'mycall:'. À vous d'être imaginatif pour utiliser cette astuce au mieux.

Commentaires: 0 | Buzz it!

Firefox 3 and protocol handlers - Part 1 - WebApp

J'initie ici un nouveau couple (ou plus on verra) d'articles concernant la gestion des 'protocol-handlers' avec firefox 3. La première partie présentera cette fonctionnalité ainsi que son application au sein d'une application web. La seconde, conduira à la création d'un petit logiciel externe en python qui utilisera les mêmes astuces pour par exemple proposer à l'utilisateur d'appeler avec son softphone depuis une interface web.

Présentation des protocol handlers

Deux exemples valent mieux qu'une longue explication...

Les liens mail

Il est assez courant sur le web de croiser des sites qui proposent des liens pour envoyer un email au webmaster ou à n'importe quelle autre personne. Ces liens si vous regardez le code source de la page sont de type :

mailto:mabelle.adresse@mail.com

Si vous cliquez sur un de ces liens, normalement, votre logiciel de mail favori va s'ouvrir et vous proposer de rédiger un mail pour la personne indiquée (dont le nom est automatiquement placé dans le champ "à :". Vous avez ici une application des protocol handlers.

Les liens apt:// d'Ubuntu

La documentation d'Ubuntu propose de nombreux liens de la forme suivante :

apt://un-logiciel

Les utilisateurs de cette distribution (comme moi) savent que ce type de lien permet d'installer des paquets (librairies ou logiciels) via un simple clic. Une fois le lien cliqué, une application de votre ordinateur recherche l'application dans les dépôts disponible et l'installe si il est disponible. Vous l'aurez compris par vous même, c'est une autre application de l'utilisation des protocol handlers.

Utiliser une application web

L'exemple suivant vise à proposer au sein d'une page web A un lien de type :

test:CeciEstUnTest

Ce lien redirigera l'utilisateur sur une page B qui utilisera la valeur donnée.

Cet exemple ne vous parle peut être pas trop, mais vous pouvez très bien imaginer qu'il s'agit de liens mail qui pointent vers une application web de lecture/écriture de mail.

Firefox propose depuis sa version 3 une fonction de l'objet "navigator" qui permet à une application web d'enregistrer son propre gestionnaire de protocole :

window.navigator.registerProtocolHandler(protocole, uri, titre);
  • protocole : chaine de caractère pour le protocole à gérer (ex: test)
  • uri : chaine de caractère représentant l'URL à appeler au clic. %s peut être utiliser pour passer la valeur en paramètre de cette url. (ex: http://monexemple.com/application?value=%s)
  • titre : Titre du gestionnaire (indication utilisateur). (ex: Mon gestionnaire de Test)

Limitations

  • Un gestionnaire de protocole ne peut être enregistré que pour le même domaine que l'application qui l'enregistre. Ceci afin d'éviter les problème de sécurité ou de cross scripting.
  • La valeur transmise à l'aide de '%s' est l'ensemble du contenu de l'attribut 'href' de la balise 'a'. Il faut donc que le gestionnaire de protocole fasse le tri dans cette valeur afin d'utiliser la valeur qui suis le protocole.

Enregistrer un nouveau gestionnaire de protocole

Voici un exemple concert que vous pouvez essayer chez vous :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Protocol Handler - test:</title>
    <script type="text/javascript">
    	navigator.registerProtocolHandler("test", 
                                                              "http://monexemple.com/application.php?value=%s",
                                                              "Mon gestionnaire de Test");
  </script>
</head>
<body>
	<h1>Protocol Handler - test:</h1>
  	<p>Dans la partie 'script', cette page va enregistrer un nouveau gestionnaire de code pour les liens en 
<code>test:</code>.</p>
  	<p>Il sera ensuite possible d'utiliser ce lien : <a href="test:Pouf pastèque">Lien exemple</a>.</p>
</body>
</html>

Un gestionnaire très simplifié

Il ne reste plus qu'à créer un handler associé (ici en php pour simplifier) qui utilisera la valeur passée en paramètre :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Protocol Handler - test: - Handler</title>
</head>
<body>
	<h1>Protocol Handler - test: - Handler</h1>
	<h1>Cette page est affichée lorsque vous utilisez un lien de type : <pre>test:</pre></h1>
  	<blockquote>
  		<pre><?php if ( isset ( $_GET["value"] ) ) {
                       echo(urldecode($_GET["value"]));
                   } else {
                   	   echo("nothing");
                   }
             ?></pre>
  	</blockquote>
</body>
</html>

Des liens qui peuvent être utiles

Commentaires: 0 | Buzz it!

Mise en place d'un miroir Apt - Part 2 - Installation

Ce billet fait suite à celui-ci: Mise en place d'un miroir Apt - Part 1 - Contexte

"Bon super il a installé un mirroir pour ses serveurs et desktop et tout ça planqué derrière sa connexion ADSL. Pas super pratique pour les autres..." Mais c'est maintenant que ça devient intéressant ;-) : Comment installer son propre mirroir pour APT !

Premier point, ce n'est ni long (à configurer) ni compliqué. L'étape la plus longue étant la première synchronisation avec les dépôts externes selon leur taille. Mais pendant ce temps vous pourrez être loin de votre PC.

1. Installation d'apt-mirror

Rien de plus simple

sudo apt-get install apt-mirror

2. Configuration d'apt-mirror

Tout se passe dans "/etc/apt/mirror.list"

############# config ##################
#

set base_path    /path/to/apt/data

set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh
set defaultarch  i386
set nthreads     2
set _tilde 0

#
############# end config ##############

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
## Debian SQUEEZE alias TESTING - not used -
#deb    http://ftp.fr.debian.org/debian         testing         main contrib non-free

## Debian SID alias UNSTABLE
deb     http://ftp.fr.debian.org/debian         sid             main contrib non-free

## Debian LENNY current STABLE
deb     http://ftp.fr.debian.org/debian         stable          main contrib non-free

## Debian Security
deb     http://security.debian.org              lenny/updates   main contrib non-free

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
## Debian SQUEEZE alias TESTING - not used -
#deb-src        http://ftp.fr.debian.org/debian testing         main contrib non-free

## Debian SID alias UNSTABLE
#deb-src        http://ftp.fr.debian.org/debian sid             main contrib non-free

## Debian LENNY current STABLE
#deb-src        http://ftp.fr.debian.org/debian stable          main contrib non-free

## Debian Security
#deb-src        http://security.debian.org      lenny/updates   main contrib non-free


#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
## Last stable Ubuntu main, security and updates
deb http://fr.archive.ubuntu.com/ubuntu                 intrepid                main
deb http://fr.archive.ubuntu.com/ubuntu                 intrepid-security       main
deb http://fr.archive.ubuntu.com/ubuntu                 intrepid-updates        main

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
## Cleaning data
clean http://security.debian.org/
clean http://ftp.fr.debian.org/
clean http://fr.archive.ubuntu.com/ubuntu

3. Lancement de la synchronisation

Créer le dossier pour les données si ce n'est pas déjà fait :

sudo mkdir -p /path/to/apt/data

Et lancer la synchro :

sudo apt-mirror	

4. Configuration d'apache2

Cette partie est à adapter selon vos besoins et la configuration apache2 existante. Mais si vous êtes arrivé là, vous savez ce que vous faites non? Donc dans le fichier de configuration d'apache2 ajouter :

Alias /apt-debian-security /path/to/apt/data/mirror/security.debian.org
<Directory /path/to/apt/data/mirror/security.debian.org>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
</Directory>

Alias /apt-debian-fr /path/to/apt/data/mirror/ftp.fr.debian.org/debian
<Directory /path/to/apt/data/mirror/ftp.fr.debian.org/debian>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
</Directory>

Alias /apt-ubuntu-fr /path/to/apt/data/mirror/fr.archive.ubuntu.com/ubuntu
<Directory /path/to/apt/data/mirror/fr.archive.ubuntu.com/ubuntu>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
</Directory>

Et recharger la configuration d'apache2 :

sudo /etc/init.d/apache2 force-reload

5. Configuration des postes clients

Selon la distribution, il faut prendre ce qui vous intéresse dans ce qui suit et l'ajouter à "/etc/apt/sources.list" :

Pour Debian Lenny (stable) :
		deb http://host.domain.tld/apt-debian-fr lenny main contrib non-free
		deb http://host.domain.tld/apt-debian-security lenny/updates main contrib non-free
	
Pour Debian Sid (unstable) :
		deb http://host.domain.tld/apt-debian-fr sid main contrib non-free
		deb http://host.domain.tld/apt-debian-security lenny/updates main contrib non-free
	
Pour Ubuntu (dernière version stable) :
		deb http://host.domain.tld/apt-ubuntu-fr intrepid main
		deb http://host.domain.tld/apt-ubuntu-fr intrepid-security main
		deb http://host.domain.tld/apt-ubuntu-fr intrepid-updates main
	

Et enfin de faire une petite mise à jour de la liste des paquets disponibles :

sudo apt-get update

Commentaires: 0 | Buzz it!

Mise en place d'un miroir Apt - Part 1 - Contexte

Si vous possédez un parc de matériel informatique conséquent avec de nombreuses machines utilisant Debian ou Ubuntu comme système d'exploitation, il peut devenir intéressant d'installer un miroir sur un serveur du réseau. Ainsi, les clients pourront réaliser leurs mises à jour depuis ce serveurs et ne plus utiliser la bande passante vers l'extérieur en journée. En mettant à jour le serveur la nuit, il y a moins de chance de gêner quelqu'un et l'action bien que couteuse en débit, est ainsi mutualisée. 1 paquet à mettre à jour sur 50 machines = 1 téléchargement depuis les miroirs extérieurs + 50 mises à jours plus rapides sur le réseau local.

Pour ma part j'ai opté pour un miroir qui hébergera à terme:
Pour Debian :

  • Les paquets main, contrib et non-free de Debian Sid (version 'unstable')
  • Les paquets main, contrib et non-free de Debian Lenny (version 'stable')
  • Les paquets 'security.debian.org' pour Lenny

Pour Ubuntu :

  • Les paquets main, security et updates pour la dernière version stable d'Ubuntu (LTS ou pas)
  • Les paquets nécessaire à l'utilisation d'une NetInstall de la dernière version stable d'Ubuntu (LTS ou pas)

L'ensemble va consommer de l'espace disque (à vue de nez, plus de 100Go...), mais à terme, chaque installation d'un paquet depuis ces miroirs sera grandement accélérée.

Si vous souhaitez utiliser ces miroirs, c'est bien sur possible et même depuis l'extérieur puisqu'il sont hébergés sur Obelix (il faut toutefois être réaliste, le débit ne sera pas celui d'un miroir plus conventionnel...). Pour ce faire, il suffit d'ajouter au choix les dépôts suivants à votre "/etc/apt/sources.list" :

Pour Debian Lenny (stable) :
		deb http://obelix.rivallain.fr/apt-debian-fr lenny main contrib non-free
		deb http://obelix.rivallain.fr/apt-debian-security lenny/updates main contrib non-free
	
Pour Debian Sid (unstable) :
		deb http://obelix.rivallain.fr/apt-debian-fr sid main contrib non-free
		deb http://obelix.rivallain.fr/apt-debian-security lenny/updates main contrib non-free
	
Pour Ubuntu (dernière version stable) :
		deb http://obelix.rivallain.fr/apt-ubuntu-fr intrepid main
		deb http://obelix.rivallain.fr/apt-ubuntu-fr intrepid-security main
		deb http://obelix.rivallain.fr/apt-ubuntu-fr intrepid-updates main
	

Et enfin de faire une petite mise à jour de la liste des paquets disponibles :

		sudo apt-get update
	

Les connaisseurs remarqueront que je ne propose pas les dépôts de sources (deb-src). En effet, pour la très grande majorité des installations de paquets, l'utilisateur se dispense des sources. Il reste possible de les récupérer en renseignant dans le sources.list des miroirs externes qui eux, les proposent.

Commentaires: 0 | Buzz it!

Installation d'un serveur BackupPc

Billet-tutoriel aujourd'hui pour présenter la mise en place d'un serveur de sauvegardes basé sur BackupPC 3.1.0. Ce tutoriel reprend les étapes importantes de l'installation de cette solution sur mon environnement personnel, mais doit pouvoir donner de bonnes indications pour une installation dans un environnement différent.

Présentation

BackupPC est une solution de sauvegarde assez complète qui peut être utilisée en environnement hétérogène (postes Linux, Windows et MacOs) en se basant sur divers protocoles: smb, rsync, tar, rsyncd...

Le logiciel propose une interface web qui permet de configurer les paramètres les plus courants de la sauvegarde d'un poste: heure, dossiers, utilisateurs à prévenir, méthode de sauvegarde, durée de conservation, limites etc... Mais il est aussi possible de l'utiliser sans interface web au travers des fichiers de configuration.

Cette solution est utilisé dans des entreprises où plusieurs milliers de postes sont sauvegardés quotidiennement ce qui représente une certaine garantie de qualité et permet d'envisager de s'en servi sans soucis dans mon cas:
le serveur de sauvegarde serveur devant s'auto-sauvergarder (en partie). Voila à quoi ressemble mon réseau:
  • obelix: le serveur principal de sauvegare (accessible sur le VPN)
  • abraracourcix: un serveur dédié distant mais sur le même VPN
  • idefix: un poste portable sur le même VPN

Installation du serveur

Sur ma distribution préférée, Debian, backuppc est fourni dans les principaux dépôts. Cela facilite grandement l'installation puisqu'un simple apt-get suffi à lancer l'installation:

# apt-get install backuppc

Ensuite, il faut suivre les étapes en adaptant à la configuration à l'environnement (apache, smb, chemin) et l'écran final invite l'utilisateur à noter le mot de passe attribué à l'utilisateur "backuppc" pour l'interface web.

Normalement, l'installation aura créée un utilisateur "backuppc". Il est toutefois nécessaire de lui créer un répertoire personnel et de lui associer une clef ssh:

# mkdir -p /home/backuppc/.ssh
# passwd backuppc #(donner un mot de passe à cet utilisateur - optionnel)
# su backuppc
$ cd ~/.ssh
$ ssh-keygen -t rsa #(ne pas donner de passphrase)

Ainsi nous avons un utilisateur "backuppc" possédant une paire de clef (privée/publique) à utiliser dans le cas de connexion ssh.

Par défaut les sauvegardes sont placées dans un répertoire dépendant de "/var" ce qui n'est pas forcément adapté aux souhaits de tout le monde. Il suffit de modifier le fichier de configuration générale:

# vi /etc/backuppc/config.pl

Et remplacer le contenu de la varible: $Conf{TopDir} = '/path/vers/les/backups';

Relancer ensuite le serveur backuppc:

# /etc/init.d/backuppc restart

L'accès à l'interface web (cgi) est normalement accessible à l'adresse: http://nomduserveur/backuppc (Le mot de passe a été fourni à l'installation avec le login "backupc")

Ajouter un client

Dans le cas ci-dessous, nous allons ajouter le client abraracourcix au système de sauvegardes.

La première étape peut être réalisée par l'interface web. Il s'agit de "créer" ce client dans la solution de sauvegarde ainsi que les premiers paramétrages:

Ensuite vous pouvez configurer le client en le sélectionnant dans la liste déroulante et en cliquant sur "Modifier la configuration". Comme il s'agit d'un poste Linux, j'ai choisi la méthode "rsync" pour sauvegarder les dossiers précisés dans "RsyncShareName":
Il est possible de configurer d'avantage d'options à travers les différents onglets de l'interface, mais je ne reviendrais pas dessus dans ce tutoriel.

L'étape suivante peut être réalisée sur le pc client (je ne détaillerais que le cas d'un pc Linux n'ayant pas de machine sous un autre OS pour le moment):

# scp nomduserveur:/home/backuppc/.ssh/id_rsa.pub ~/.ssh/authorized_keys # (authoriser à l'aide de la clef ssh publique l'accès sans mot de passe à ce pc avec ce nom d'utilisateur)
# chmod 600 ~/.ssh/authorized_keys

Enfin, très important si vous ne voulez pas chercher des heures une erreur toute bête, connectez vous depuis le serveur (en tant que backuppc) vers le nouveau client afin d'accepter sa clef ssh:

# su backuppc
$ ssh root@client.domain #( et yes pour accepter la clef. Normalement, aucun mot de passe n'est demandé ensuite)

Dans le cas de postes Windows et MacOs, je lie un PDF qui récapitule les étapes de base de la configuration.
Voila, c'est fait. Lançons à présent notre première sauvegarde de façon manuelle.

Première sauvegarde

Pour vérifier le fonctionnement de notre solution, il est possible de lancer une sauvegarde manuelle depuis l'interface web. Pour cela il faut choisir un hôte sur lequel l'effectuer, et cliquer sur le bouton: "Démarrer la sauvegarde complète":
En cas d'erreurs, les fichiers journaux (affichables dans l'interface) pourront venir en aide lors de la recherche du problème.

Une fois la sauvegarde effectuée, il est possible d'explorer le contenu et même de le restaurer (directement ou en extrayant une archive) toute ou partie de la sauvegarde.

Commentaires: 6 | Buzz it!