Comment réinitialiser le RaspBerry Pi

Comment réinitialiser le RaspBerry Pi

réinitialiser le RaspBerry
réinitialiser le RaspBerry PI
Je viens de réinitialiser le RaspBerry Pi que j’ai depuis une petite année maintenant, et comme d’hab j’écris cet article pour avoir une trace de ce que j’ai fais.

Ok, Ok ce n’est pas très compliquer de réinitialiser le RaspBerry Pi, mais avoir un mémo quelque part me rassure et cela peu aider d’autre personne.

J’utilise ce merveilleux outil pour divers trucs, un serveur pour les divers formations que j’organise ; serveur Web, serveur SQL, serveur d’application Java, serveur de test etc.

Pourquoi réinitialiser le RaspBerry Pi

Bah, pour les mêmes raisons pour les quelles vous formateriez votre PC ou serveur, c’est à dire de repartir sur des bases seines sans rien sur le système.

Comme je suis exclusivement sous Gnu/Linux, ce mini tuto n’est pas adapté à Windows ou Mac.

Bon allons-y

1 – récupérer le dernière version de Raspbian

Rasbian est le système d’exploitation par défaut des RaspBerry.

Vous pouvez récupérer la dernière version sur le site officiel, et uniquement le site officiel raspberrypi.org
Nous le téléchargerons dans /tmp

1
2
3
cd /tmp

wget https://downloads.raspberrypi.org/raspbian_latest

Vous obtiendrez un fichier zip dont le nom comporte la date de la release de type DATE-raspbian-VERSION.zip

dézipez ce fichier avec unzip (remplacez DATE-raspbian-VERSION.zip par le nom exacte du ficher téléchargé)

1
unzip DATE-raspbian-VERSION.zip

Vous obtiendrez l’image de la Raspbian de type DATE-raspbian-VERSION.img

2- préparation de votre carte MicroSD

Insérez la carte MicroSD de votre RaspBerry dans le lecteur dédié de votre ordinateur, dans la majorité des cas il vous faudra un adaptateur, MicroSD → SD.

adaptateur microsd raspberry
adaptateur microsd raspberry

Détecter sur quel point elle a été montée, dans la majorité des cas c’est /dev/sd(quelques chose)
La commande « lsblk -p » peut vous aider si le périphérie est monté automatiquement lors de sont insertion

1
2
3
4
5
6
7
8
9
lsblk -p
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/sda      8:0    0 931,5G  0 disk
├─/dev/sda1   8:1    0   100M  0 part
└─/dev/sda2   8:7    0 219,6G  0 part /
/dev/sdb      8:16   1   7,4G  0 disk
├─/dev/sdb1   8:17   1    63M  0 part /media/zenzla/boot
└─/dev/sdb2   8:18   1   7,4G  0 part /media/zenzla/2f840c69-cecb-4b10-87e4-01b9d28c231c
/dev/sr0     11:0    1  1024M  0 rom

Sinon la carte n’est pas montée automatiquement, utilisez la commande ls -ltr /dev/sd* et identifiez la dernière ligne affichée
En effet cette commande nous liste les dernières modifications de /dev/sd

1
2
3
4
5
6
7
8
9
10
ls -ltr /dev/sd*
brw-rw---- 1 root disk 8,  0 juil.  5 10:04 /dev/sda
brw-rw---- 1 root disk 8,  6 juil.  5 10:04 /dev/sda6
brw-rw---- 1 root disk 8,  4 juil.  5 10:04 /dev/sda4
brw-rw---- 1 root disk 8,  7 juil.  5 10:04 /dev/sda7
brw-rw---- 1 root disk 8,  3 juil.  5 10:04 /dev/sda3
brw-rw---- 1 root disk 8,  2 juil.  5 10:04 /dev/sda2
brw-rw---- 1 root disk 8,  1 juil.  5 10:04 /dev/sda1
brw-rw---- 1 root disk 8,  5 juil.  5 12:48 /dev/sda5
brw-rw---- 1 root disk 8, 16 juil.  5 13:05 /dev/sdb

Dans notre cas le point de montage de la carte est /dev/sdb.

3 – copie de l’image système sur la carte.

Pour installer l’image de la Rasbian sur notre carte SD nous utilisons la commande « dd » comme suite :

1
dd bs=1M if=chemin_vers_le_img_de_raspbian of=/dev/votre_carte

Dans notre cas cela donne

1
dd bs=1M if=/tmp/DATE-raspbian-VERSION.img of=/dev/sdb

Important

il ne faut pas confondre /dev/sdb et /dev/sdb1
/dev/sdb c’est le nom du disque
/dev/sdb1 c’est la première partition de ce disque

Dans notre cas il faut bien mettre le disque c’est a dire « sdb »

4 – Fin de l’installation

Retirez à présent la carte MicroSD et remettez a sur votre framboise.

Voilà, vous venez de réinitialiser le RaspBerry à l’état d’usine 🙂

Café vie privée à l’Atelier Numérique de Versailles

Café vie privée à l’Atelier Numérique de Versailles

coucou,

Les cafés “vie privée” sortent de Paris et sa proche ceinture pour atterrir dans les Yvelines, et plus exactement à Versailles.
Je vous donne donc, rendez-vous le samedi 17 octobre pour une café vie privée/Chifrfêtte/crypto-Partye à l’Atelier Numérique de Versailles

Atelier Numérique de Versailles
8 rue Saint Simon
Versailles, 78000 France

Café vie privée

Pour rappel, les chiffrofêtes, café vie privée, ou CryptoParty sont des événements grand public pour vulgariser le chiffrement et la protection de données personnelles, ainsi qu’avoir une hygiène numérique efficace, via des discussions et/ou échange et l’utilisation d’outils appropriés.
Amener vos PC, smartphones ou autre.

N’hésiter

Un serveur parfait sous Debian Wheezy (Debian 7) et nginx

Un serveur parfait sous Debian Wheezy (Debian 7) et nginx

Bon bah aujourd’hui c’est du lourd!! après un serveur parfait sous Ubuntu 9.10, qui date un peu, mais toujours d’actualité, et un serveur parfait sous Debian Squeeze (Debian 6.0), voici un nouvel opus de la série “un serveur parfait” et cette fois il est sous Debian Wheezy (Debian 7), avec un serveur « nginx » et l’interface de gestion de serveur Web “ISPConfig 3”.

Nous allons voir une, par une, toutes les étapes de configuration afin d’obtenir un serveur complet. Et comme d’habitude, ce tuto est construit de sort que même un débutant en administration système puisse avoir un serveur Web professionnel.

Remarques :

  • Pour le tuto, j’utilise toujours les droits « Root »
  • La version de nginx doit être supérieure à 0.8.21 pour fonctionner avec ISPConfig 3
  • Ce tuto n’est pas réalisable avec une version inférieure à ISPConfig 3

Etape I : Installation du système de base de notre serveur

Pour débuter et avant tous, il vous faut installer un système de base sous Debian Wheezy, pour cela suivez ce tuto Système de base d’un serveur sous Debian Wheezy (Debian 7)

Etape II : Installation de nginx, BIND, Dovecot, ISPConfig 3,

Dans l’étape précédente vous avez

  • Installez le système de base.
  • Modifiez le port par défaut de SSH (pour notre tuto port=7070)
  • Interdit l’accès SSH à Root
  • Seul l’utilisateur crée peu se connecter via SSH (pour notre tuto utilisateur=Zenzla)

Maintenant, il nous faut installer les différents composant de notre serveur.

Connectez-vous au serveur si ce n’est déjà fait,

1
ssh zenzla@192.168.0.100 -p 7070

passez en mode “root”

1
2
su -
Mot de passe : _

Il est important que les commande “hostname” et “hostname -f” retournent le même résultat, c’est à dire monserveur.exemple.com.
Pour cela il faut éditer le fichier /etc/hosts

1
vi /etc/hosts

il faut qu’il ressemble à ceci;

1
2
3
4
5
6
7
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   monserveur.example.com     monserveur

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ensuite faites

1
2
echo monserveur.example.com > /etc/hostname
/etc/init.d/hostname.sh start

Ensuite testez les commandes “hostname” et “hostname -f” si ils nous retournent bien le même résultat

1
2
hostname
monserveur.example.com
1
2
hostname -f
monserveur.example.com

Pour que notre système soit toujours à jour, et que les mises à jour s’effectuent correctement, assurez vous que le fichier source.list contient bien les dépôts “wheezy-updates” et que les dépôts contrib et non-free sont bien activés

1
vi /etc/apt/sources.list
1
2
3
4
5
6
7
8
9
deb http://ftp.de.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free

Maintenant mettez à jour votre système

1
apt-get update && apt-get upgrade

Il faut aussi changer le Shell par défaut, car ISPConfig rencontre quelques problème avec celui-ci

1
dpkg-reconfigure dash

Répondez “non” à la question suivante

Utiliser Dash comme interpréteur de ligne de commande par défaut (/bin/sh)? <-non

Pour que le serveur soit toujours à l’heure installez Network Time Protocol (NTP)

1
apt-get install ntp ntpdate

maintenant il faut installer Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils

1
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

Répondez comme suite aux différentes questions.

Postfix configuration —–> Ok
configuration type du serveur de messagerie –> site internet
nom de courrier : monserveur.example.com
mot de passe mysql —-> mot de passe administrateur root
Confirmation du mot passe —–> répétez le mot de passe root

Maintenant modifiez le fichier master.cf pour ouvrir les ports TLS/SSL dans postfix

1
vi /etc/postfix/master.cf

Décommettez les sections submission et smtps, (sauf -o milter_macro_daemon_name=ORIGINATING, nous en avons pas besoin)

[…]
submission inet n – – – – smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n – – – – smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[…]

Redémarrez Postfix

1
/etc/init.d/postfix restart

MySQL doit obligatoirement être à l’écoute de toutes les interfaces, et non seulement à localhost, pour cela il faut éditer le fichier “/etc/mysql/my.cnf” et commenté la ligne bind-address= 127.0.0.1

1
vi /etc/mysql/my.cnf

[…]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[…]

Redémarrez MySQL

1
/etc/init.d/mysql restart

Maintenant testons si cela fonctionne

1
2
netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      30051/mysqld

Installez Amavisd-new, SpamAssassin, et Clamav

1
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

La configuration de ISPConfig 3 utilise “amavisd” qui charge la bibliothèque des filtres internes de SpamAssassin, afin que nous puissions libérer de la RAM, nous pouvons arrêter SpamAssassin

1
2
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Installez maintenant Install Nginx, PHP5 (PHP-FPM), And Fcgiwrap

Ngix est disponible en tant que paquet pour Debian, la commande d’installation et comme suite:

1
apt-get install nginx

Si vous avez bien suivi les étapes du tuto, nous avons pas installé Apache2, sinon il faut le supprimer

1
/etc/init.d/apache2 stop

Si vous avez une erreur du type

1
-su: /etc/init.d/apache2: Aucun fichier ou dossier de ce type

C’est que Apache2 n’est pas disponible, sinon:

1
update-rc.d -f apache2 remove

Lancez maintenant nginx

1
/etc/init.d/nginx start

Pour l’installation de PHP5 , nous prenons les paquets PHP-FPM (PHP FastCGI Process Manager) qui est une alternative FastCGI avec des fonctionnalités supplémentaires

1
apt-get install php5-fpm

Pour se connecter directement aux bases de données MySQL avec des scripts PHP, nous pouvons installer le paquet php5-mysql, plus d’autres modules selon vos besoins, vopus pouvez obtenir la liste des modules disponible avec la commande

1
apt-cache search php5

Choisissez les modules dont vous avez besoin, et installez-les, pour notre exemple, nous installerons les modules suivants:

1
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

Pour ne pas consommer beaucoup de ressource et optimiser le code PHP, il est nécéssaire d’installer un cache, nous choisissons APC, qui est libre et gratuit.

1
apt-get install php-apc

Modifiez le fichier /etc/php5/fpm/php.ini, mettre cgi.fix_pathinfo=0 et notre timezone

1
vi /etc/php5/fpm/php.ini

[…]
cgi.fix_pathinfo=0
[…]
date.timezone=”Europe/Paris”
[…]

Redemandez PHP-FMP

1
/etc/init.d/php5-fpm reload

Pour l’utilisation de CGI dans nginx installez Fcgiwrap

1
apt-get install fcgiwrap

Le daemon fcgiwrap se lance normalement automatiquement, vous pouvez le vérifier avec la commande

1
/etc/init.d/fcgiwrap status

Si il est pas lancé, faites-le manuellement

1
/etc/init.d/fcgiwrap start

Installation de phpMyAdmin

1
apt-get install phpmyadmin

Serveur web à reconfigurer automatiquement –> Ne rien sélectionner, nous avons pas besoin apache2 ou lighttpd
Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? –> non

Vous pouvez maintenant trouver phpMyAdmin dans le répertoire /usr/share/phpmyadmin/
A la fin, lorsque ISPConfig sera installé, vous pouvez accéder à phpMyAdmin via les URL http://monserveur.example.com:8081/phpmyadmin ou http://192.168.0.100:8081/phpmyadmin

Si vous voulez accéder aux alias/phpmyadmin via les sites web qui seront sur le serveur, c’est un peu plus compliqué que pour Apache, car nginx ne gère pas les alias globaux (Les alias définies pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque serveur virtuel à partir duquel vous souhaitez accéder à phpMyAdmin.

Pour ce faire, collez le texte suivant dans les champs directives nginx sur le Options de l’onglet du site Web.

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}

Si vous utilisez https au lieu de http pour votre serveur virtuel, vous devez ajouter la ligne fastcgi_param HTTPS on; ; à votre configuration phpMyAdmin comme ceci:

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS on; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }

Si vous utilisez à la fois HTTP et HTTPS pour votre serveur virtuel, vous pouvez utiliser la variable $https, allez de nouveau dans les directives nginx et au lieu de fastcgi_param HTTPS on; mettez fastcgi_param HTTPS $https;

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS $https; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }

Installation du gestionnaire de mailing list (newsletters) Mailman, depuis la version 3.0.4, ISPConfig vous permet également de gérer (créer/modifier/ supprimer) les listes de diffusion Mailman. Si vous souhaitez faire usage de cette fonctionnalité, installer Mailman comme suit:

1
apt-get install mailman

puis sélectionnez votre langue

Langues à gérer : <------ fr Pas de liste du site <-- Ok

Avant que nous puissions commencer avec Mailman, une première liste de diffusion appelée mailman doit être créé:

1
newlist mailman

Entrez l’adresse courriel du gestionnaire de la liste : <-- adresse mail de l’administrateur Mot de passe initial de la liste mailman : <-- le mot de passe d'administration de la liste Pour achever la création de votre liste de diffusion, vous devez modifier votre fichier /etc/aliases (ou équivalent) en y ajoutant les lignes suivantes et peut être exécuter le programme `newaliases': liste de diffusion ## mailman mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Tapez sur Entrée pour aviser le propriétaire de mailman... <-- ENTER

ouvrez /etc/aliases

1
vi /etc/aliases

… Et ajoutez les lignes suivantes:

[…]
## mailman mailing list
mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Ensuite tapez la commande

1
newaliases

et redemander Postfix

1
/etc/init.d/postfix restart

Puis lancez le daemon Mailman

1
/etc/init.d/mailman start

Apres l’installation d’ISPConfig avec comme port 8081, vous pouvez accéder à Mailman avec les URL suivante http://monserveur.example.com:8081/cgi-bin/mailman/admin/ ou http://monserveur.example.com:8081/cgi-bin/mailman/listinfo/

Pareil que pour phpMyAdmin, pour accéder à Mailman directement via les site web, il faut ajouter dans les directives Nginx d’ISPconfig

location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

location /images/mailman {
alias /usr/share/images/mailman;
}

location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}

Maintenant nous devons installer PureFTPd et Quota

1
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

modifiez le fichier /etc/default/pure-ftpd-common

1
vi /etc/default/pure-ftpd-common

… et assurez vous que le mode de démarrage est bien sur standalone et que VIRTUALCHROOT=true

[…]
STANDALONE_OR_INETD=standalone
[…]
VIRTUALCHROOT=true
[…]

Maintenant nous allons configurer PureFTPd pour autoriser les Sessions FTP et TLS.
Le FTP est un protocole peu sécurisé, car les mots de passe ainsi que toutes les données sont transférées en clair, pour y remédier nous le couplerons au TLS pour crypter toutes les communications, rendant ainsi FTP beaucoup plus sûr.

1
echo 1 > /etc/pure-ftpd/conf/TLS

Pour utiliser TLS, nous devons créer un certificat SSL.
Créez le répertoire /etc/ssl/private/

1
mkdir -p /etc/ssl/private/

Nous pouvons maintenant générer le nouveau certificat TLS

1
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Country Name (2 letter code) [AU]: <- Le pays en deux lette ex : FR
State or Province Name (full name) [Some-State]: <-Entrez le nom de votre État ou province.
Locality Name (eg, city) [ ]:<- Nom de votre ville : ex Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<- Entrez votre Nom de votre organisme (par exemple, le nom de votre entreprise).
Organizational Unit Name (eg, section) [ ]:<-Saisissez le nom de votre service (par exemple, «Service Informatique”).
Common Name (eg, YOUR name) [ ]:<- Saisissez le nom de domaine complet du système (par exemple, «ks123456.kimsufi.com”).
Email Address [ ]:<-Saisissez votre adresse mail

Changez les permissions du certificat SSL

1
chmod 600 /etc/ssl/private/pure-ftpd.pem

Redémarrez PureFTPd

1
/etc/init.d/pure-ftpd-mysql restart

Editez le fichier /etc/fstab et ajouter “,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0” à la partition avec le point de montage “/” juste après “errors=remount-ro” comme il est démontré ci-dessous.

1
2
3
4
5
6
7
8
9
10
11
12
13
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/monserveur-root /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1
# /boot was on /dev/sda1 during installation
UUID=cb4afc02-4225-487e-904c-7fa495f9dcf2 /boot           ext2    defaults        0       2
/dev/mapper/monserveur-swap_1 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Activez les quotas avec les lignes de commandes suivantes

1
mount -o remount /
1
quotacheck -avugm

voici le résultat de cette commande

quotacheck: Parcours de /dev/mapper/monserveur-root [/] terminé
quotacheck: Cannot stat old user quota file //quota.user: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Cannot stat old group quota file //quota.group: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Cannot stat old user quota file //quota.user: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Cannot stat old group quota file //quota.group: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Vérifié 4017 répertoires et 48304 fichiers
quotacheck: Ancien fichier non trouvé.
quotacheck: Ancien fichier non trouvé.

1
quotaon -avug

/dev/mapper/monserveur-root [/] : quotas group activés
/dev/mapper/monserveur-root [/] : quotas user activés

Installez maintenant BIND DNS Server

1
apt-get install bind9 dnsutils

Installez Vlogger, Webalizer, et AWstats

1
apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Ouvrez le fichier /etc/cron.d/awstats

1
vi /etc/cron.d/awstats

Et commentez toutes les lignes de ce fichier

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Installation de Jailkit

Jailkit n’est nécessaire uniquement si vous souhaitez comme unique utilisateurs SSH chroot. (important: Jailkit doit être installé avant ISPConfig – il ne peut pas être installé par la suite!):
L’instalation ce fait comme suite.

1
apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold

Au moment de la rédaction de cet article, la dernière version de Jailkit est la 2.17

1
2
3
4
5
6
7
8
9
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./debian/rules binary
cd ..
dpkg -i jailkit_2.17-1_*.deb
rm -rf jailkit-2.17*
cd ..

Installez maintenant fail2ban

1
apt-get install fail2ban

Il faut créez les services à monitorer de PureFTPd and Dovecot,
Dans un premier temps créez le fichier /etc/fail2ban/jail.local:

1
vi /etc/fail2ban/jail.local

[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=”pop3,pop3s,imap,imaps”, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[sasl]
enabled = true
port = smtp
filter = sasl
logpath = /var/log/mail.log
maxretry = 3

Maintenant, il faut créer les 2 filtres suivants

1
vi /etc/fail2ban/filter.d/pureftpd.conf

[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =

1
vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Redémarrez le fail2ban

1
/etc/init.d/fail2ban restart

Installation le Web Mail client SquirrelMail

1
apt-get install squirrelmail

Configuration de squirremail

1
squirrelmail-configure

Nous devons configurer SquirrelMail de sort qu’il utilise Dovecot-IMAP/-POP3:
Les réponses que vous devez fournir sont :
Question 1 : D
Question 2 : dovecot
Question 3 : Entrer
Question 4 : S
Question 5 : Q

Comme vous pouvez le voir ci-dessous.

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> <--D SquirrelMail Configuration : Read: config.php --------------------------------------------------------- While we have been building SquirrelMail, we have discovered some preferences that work better with some servers that don't work so well with others. If you select your IMAP server, this option will set some pre-defined settings for that server. Please note that you will still need to go through and make sure everything is correct. This does not change everything. There are only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington's IMAP server gmail = IMAP access to Google mail (Gmail) accounts quit = Do not change anything Command >> <-- dovecot only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington's IMAP server gmail = IMAP access to Google mail (Gmail) accounts quit = Do not change anything Command >> dovecot

imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false

Press enter to continue…<-- Enter SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Main Menu -- 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> <-- S SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Main Menu -- 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> <-- Q

Après l’installation de ISPConfig avec port 8081, vous pouvez maintenant accéder à SquirrelMail via l’URL http://monserveur.example.com:8081/squirrelmail, http://monserveur.example.com:8081/webmail ou http://192.168.0.100:8081/webmail

Pareil que pour phpMyAdmin, ou Mailman,si vous voulez accéder directement via vos site internet aux alias /webmail or /squirrelmail il faut les définir pour chaque site. en modifiant les directives nginx

location /squirrelmail {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/squirrelmail/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/squirrelmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /webmail {
rewrite ^/* /squirrelmail last;
}

Si vous utilisez https au lieu de http pour votre serveur virtuel, vous devez ajouter la ligne fastcgi_param HTTPS on; ; à votre configuration SquirrelMail comme ceci:

location /squirrelmail {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/squirrelmail/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS on; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }

Si vous utilisez à la fois HTTP et HTTPS pour votre serveur virtuel, vous pouvez utiliser la variable $https, allez de nouveau dans les directives nginx et au lieu de fastcgi_param HTTPS on; mettez fastcgi_param HTTPS $https;

location /squirrelmail {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/squirrelmail/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS $https; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }

Instalation de ISPConfig

Ici il est important de revérifier si Apache est installer, même si nous avons pris le soin de ne pas le faire, il peut s’installer automatiquement en tant qu’application dépendante.

1
/etc/init.d/apache2 stop

Et supprimer les liens de démarrage du système d’Apache

1
update-rc.d -f apache2 remove

redémarrer nginx

1
/etc/init.d/nginx restart

Téléchargez et décompressez la dernière version de ISPConfig 3

1
2
3
4
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Maintenant lancez l’installation proprement dit

1
php -q install.php

Cela va démarrer le programme d’installation d’ISPConfig 3. Le programme d’installation configure tous les services comme Postfix, SASL, Courier, etc pour vous.

Dans la majorité des cas, il vous suffit de faire ENTER sans rien saisir. Sauf lorsque vous devez choisir le serveur, vous devez mettre “nginx”

Important : la questions sur l’utilisation de certificat SSL vous sera posée, la réponse par défaut est “yes” si vous faites “ENTER”.
Dans ce cas, lors du lancement de IPSConfig 3, les navigateurs vont vous avertir que votre certificat n’est pas authentifié.
Pour éviter ces avertissement, soit vous répondez “NO”, soit vous installer un certificat SSL gratuit Class1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
root@monserveur:/tmp/ispconfig3_install/install# php -q install.php
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0


--------------------------------------------------------------------------------
 _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: Debian or compatible, unknown version.

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.


Select language (en,de) [en]: <-- ENTER

Installation mode (standard,expert) [standard]: <-- ENTER

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: <-- ENTER

MySQL server hostname [localhost]: <-- ENTER

MySQL root username [root]: <-- ENTER

MySQL root password []: <-- yourrootsqlpassword

MySQL database to create [dbispconfig]: <-- ENTER

MySQL charset [utf8]: <-- ENTER

Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx

Generating a 4096 bit RSA private key
.......................................++
..++
writing new private key to '
smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '
.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- ENTER
State or Province Name (full name) [Some-State]: <-- ENTER
Locality Name (eg, city) []: <-- ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- ENTER
Organizational Unit Name (eg, section) []: <-- ENTER
Common Name (e.g. server FQDN or YOUR name) []: <-- ENTER
Email Address []: <-- ENTER
Configuring Jailkit
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring nginx
Configuring Vlogger
Configuring Apps vhost
Configuring Bastille Firewall
Configuring Fail2ban
Installing ISPConfig
ISPConfig Port [8080]: <-- ENTER

Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- ENTER

Generating RSA private key, 4096 bit long modulus
...............................................................................................++
................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '
.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- ENTER
State or Province Name (full name) [Some-State]: <-- ENTER
Locality Name (eg, city) []: <-- ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- ENTER
Organizational Unit Name (eg, section) []: <-- ENTER
Common Name (e.g. server FQDN or YOUR name) []: <-- ENTER
Email Address []: <-- ENTER

Please enter the following '
extra' attributes
to be sent with your certificate request
A challenge password []: <-- ENTER
An optional company name []: <-- ENTER
writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld ..
Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Restarting IMAP/POP3 mail server: dovecot.
Reloading PHP5 FastCGI Process Manager: php5-fpm.
Reloading nginx configuration: nginx.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -H -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -D -u 1000 -A -E -b -8 UTF-8 -B
Installation completed.
root@monserveur:/tmp/ispconfig3_install/install#

Le programme d’installation configure automatiquement tous les services sous-jacents, aucune configuration manuelle est nécessaire.

Ensuite, vous pouvez accéder à ISPConfig 3 via l’url dans http://monserveur.example.com:8080/ ou http://192.168.0.100:8080/. Connectez-vous avec le nom d’utilisateur admin et le mot de passe admin
Attention : vous devriez changer le mot de passe par défaut après votre première connexion, vous pouvez aussi changer la langue.

Serveur Dédié : un serveur parfait avec Debian Squeeze (Debian 6.0)
Accueil ISPConfig 3

N’hésitez à m’apporter vos remarques et commentaires ou rapportez un bug, même si j’ai effectué plusieurs tests

La réalisation de tel tuto prends du temps, même beaucoup de temps, n’hésitez pas à le partagé.

Système de base d’un serveur sous Debian Wheezy (Debian 7)

Système de base d’un serveur sous Debian Wheezy (Debian 7)

Nous allons voir dans ce tuto l’installation d’un système de base pour un serveur avec Debian Wheezy. Il montre une installation simple qui nous servira de dénominateur commun à d’autre tuto.

Remarques :

Pour le bon déroulement du tuto, je prends la liberté de prendre la configuration fictive suivante :

Nom du serveur : monserveur.example.com
Adresse :  IP 192.168.0.100

Aller hop !! Au boulot.

Etape N°1 : installation du système de base.

Téléchargez l’image la bonne version de Debian Wheezy selon votre architecture, 32 ou 64 bit directement sur le site debian.org. Puis graver l’image *.iso sur un CD.

Bootez votre machine sur le CD d’installation fraichement gravé, puis choisissez « install »

Accueil installation debian
Accueil installation debian

Choisissez votre langue, ici « Français »

Choisir le pays "France"
Choisir le pays “France”

Choisissez le pays, ici « France »

Choisir la langue française
Choisir la langue française

Maintenant vous devez choisir la configuration du clavier

Configuration du clavier
Configuration du clavier

Dans cette étape, le système vérifie l’intégrité du CD que vous venez de graver, il vérifie aussi le matériel, les paramètres réseaux, et l’existence d’un serveur DHCP pour la configuration du réseau.

Configuration DHCP
Configuration DHCP

Maintenant entrez le nom du serveur. Comme indiqué plus haut, j’ai pris monserveur.example.com, et de ce fait je saisie “monserveur”

Nom du serveur
Nom du serveur

Saisissez maintenant le nom du domaine, dans notre cas « example.com »

Nom du domaine
Nom du domaine

Choisissiez un bon mot de passe pour l’utilisateur « root »

Mot de passe pour root
Mot de passe pour root

Confirmez le mot de passe pour vérifier si tous est Ok.

Confirmation du mot de passe
Confirmation du mot de passe

Maintenant créez un utilisateur « normal », c’est-à-dire sans pouvoir. Comme je suis modeste, j’ai choisie comme nom de compte « Zenzla ».
Attention, vous pouvez choisir ce que vous voulez, sauf « admin », car c’est un nom réservé par le système.

Création d'un nouvel utilisateur
Création d’un nouvel utilisateur

Je donne un login « zenzla » à cet utilisateur.

Login du compte
Login du compte

Choisir un mot de passe pour cet utilisateur, qui doit être différent de celui que vous avez choisi pour « root »

Mot de passe pour l'utilisateur
Mot de passe pour l’utilisateur

Confirmez le mot de passe

Confirmation du mot de passe
Confirmation du mot de passe

Arrive l’étape de partitionnement du disque dur de votre serveur. Vous avez deux solutions :

1) Soit vous prenez la solution la plus simple « Assisté – utiliser tout un disque avec LVM » que je recommande vivement pour les débutants.

2) Si vous avez un peu plus de bouteille, faite le en manuel.

Dans ce tuto, je vais choisir la première solution, car plus simple et sur tout moins longue (oui je suis un gros feignant). Ce choix va créer deux volumes logiques, la racine du système « / » et le « swap »

Choisissez « Assisté – utiliser tout un disque avec LVM »

Assisté – utiliser tout un disque avec LVM
Assisté – utiliser tout un disque avec LVM

Sélectionnez le disque à partitionner, dans mon cas j’en il y en a un seul.

Choix du disque à partitionner
Choix du disque à partitionner

Comme mentionné précédemment, nous allons installer tout dans la même partition pour des raisons de facilité.

Choisissez « Tout dans une seule partition (recommandé pour les débutants) »

Tout dans une seule partition
Tout dans une seule partition

Pour confirmer notre choix de configuration, choisissez « oui »

Confirmation du choix de configuration
Confirmation du choix de configuration

Sélectionnez « Terminer le partitionnement et appliquer les changements » pour terminer

Terminer le partitionnement
Terminer le partitionnement

Et enfin sélectionnez « Oui » pour l’application définitive des changements sur les disques. Après cette étape, vous n’aurez plus la possibilité de revenir en arrière, car les novelles partition seront créées

Ecriture définitive
Ecriture définitive

Le système de base s’installe alors

Installation du système de base
Installation du système de base

Pour l’installation et la gestion des paquets il vous faut choisir un miroir du pays ou se trouve notre serveur, dans notre cas c’est en « France »

Choix du miroir
Choix du miroir

Maintenant, il faut choisir le miroir, je choisie celui donné par défaut ftp.fr.debian.org

Miroir ftp.fr.debian.org
Miroir ftp.fr.debian.org

Si vous utilisez un proxy http saisissez les paramètres, sinon laissez vide et continuer

Configuration du proxy
Configuration du proxy

Une mise-à-jour des paquets s’effectue, elle est plus ou moins longue selon votre connexion internet et la version de Debian.

mise-à-jour des paquets
mise-à-jour des paquets

Ensuite, il est demandé si vous voulez participer aux statistiques sur les paquets, c’est à vous de choisir. Dans ce tuto je mets « non ».

statistiques Debian
statistiques Debian

Lors de cette étape, même si nous allons mettre en place un serveur Web, je recommande de faire l’installation des différents paquets manuellement. Je sélectionne uniquement, « serveur SSH » et « Utilitaires usuels du système » pour pouvoir me connecter au système directement après l’installation.

Pour rappel : pour sélectionner/désélectionner vous devez utiliser la barre « espace » de votre clavier

Choix des logiciels
Choix des logiciels

Les paquets sélectionnés sont téléchargés puis installés

Installation des paquets
Installation des paquets

Maintenant nous devons installer le programme de démarrage ; le GRUB. Choisissez « Oui »

Installation du GRUB
Installation du GRUB

C’est fini !! ouffff  (Enfin la 1ère étape ^^), il vous suffit de retirer le CD d’installation de Debian Wheezy et de sélectionner « Continuer » pour redémarrer votre serveur.

redémarrer votre serveur
redémarrer votre serveur

Voilà, nous avons notre système de base installé, vous pouvez vous y connecter en ssh

Si vous n’aviez pas installé le serveur OpenSSH lors de l’installation basique, vous pouvez toujours le faire maintenant :

1
aptitude install ssh openssh-server

Désormais, vous pouvez utiliser un client SSH tel que PuTTY et vous connecter depuis votre poste de travail vers votre serveur.

1
ssh root@192.168.0.100 -p 22

Il n’est pas obligatoire de préciser le port (-p), mais comme nous allons changer le port par défaut par mesure de sécurité, il vaut mieux prendre l’habitude de le mettre.

Lors de votre première connexion, il faut accepter la clé d’authentification du serveur distant : yes

1
2
3
4
5
ssh root@192.168.0.100 -p 22
The authenticity of host '[root@192.168.0.100]:22 ([192.168.0.100]:22)' can't be established.
RSA key fingerprint is ad:39:10:ee:a7:7g:56:10:sb:4c:65:ad:22:89:44:aa.
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.0.100'
s password:

La première chose à faire est d’installer vim-nox, car vi à quelque fois des comportement bizarre sous Debian et Ubuntu

1
apt-get install vim-nox

Pour plus de convivialité, il est intéressant de mettre vim en couleur, pour cela je vous recommande mon super tuto ^^ vi : Coloration syntaxique.

Mettez à jour votre serveur

1
2
apt-get update
apt-get upgrade

Le port par défaut de SSH est le 22, donc il est vivement recommander de le modifier par mesure de sécurité pour éviter les attaques par brute force.
Le nouveau port doit être supérieur à 1024 et inférieur à 65535. Dans notre cas nous choisissons le port 7070.

Ouvrez le fichier /etc/ssh/sshd_config avec vi

1
vi /etc/ssh/sshd_config

Changer le port par défaut 22, par le nouveau 7070, et vérifié que vous êtes bien en protocole ssh 2

1
2
3
4
5
6
7
8
...
# What ports, IPs and protocols we listen for
Port 7070
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
...

Profitons-en, pour modifier d’autres paramètres de sécurité, nous allons interdire la connexion ssh à root, et l’autorisé uniquement à l’utilisateur zenzla que nous avons crée plus haut.

Mettez PermitRootLogin à “no” et ajouter la ligne AllowUsers zenzla, comme ci-dessous

1
2
3
4
5
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers zenzla

redémarrez ssh pour la prise en compte des modifications

1
/etc/init.d/ssh restart

Avant de rebooter le système, nous allons corriger l’affichage des caractères accentués une fois pour toute.

Ouvrez le fichier /etc/default/locale

1
vi /etc/default/locale

modifiez la ligne LANG en y ajoutant UTF-8

1
LANG=fr_FR.UTF-8

Ensuite pour avoir une coloration du contenu (commande ls par exemple), modifiez le fichier /root/.bashrc

1
vi /root/.bashrc

Et décommentez les ligne suivant

[…]
# You may uncomment the following lines if you want `ls’ to be colorized:
export LS_OPTIONS=’–color=auto’
eval “`dircolors`”
alias ls=’ls $LS_OPTIONS’
alias ll=’ls $LS_OPTIONS -l’
alias l=’ls $LS_OPTIONS -lA’
[…]

Par mesure de sécurité (Oui encore une foie), nous allons envoyer une alerte par mail à l’administrateur à chaque connexion de root en ssh, cela et d’autant plus intéressant aujourd’hui avec la multiplication des smartphones, et donc la possibilité de lire les mails partout ou nous nous trouvons.

dans le même fichier /root/.bashrc ajouter les lignes suivantes, en changeant l’email par le votre.

1
echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d"(" -f2 | cut -d")" -f1` votre@mail.tld

sauvegarder puis redémarrer votre serveur

1
reboot

Et voilà, vous avez à présent un serveur de base optimisé.

Vous pouvez poursuive en installant un serveur avec Nginx et ISPConfig 3

La série “un serveur parfait” et fortement inspiré, voir copier coller et traduit  de l’excellent Howtoforge

Suppression accidentelle d’une partition GNU/Linux

Suppression accidentelle d’une partition GNU/Linux

Comment récupérer une partition supprimée par erreur via l’interface des gestions des disques de Windows.

Une mésaventure au dénouement heureux !! Ça fait cliché, mais cela résume bien ma situation.
En voulant rendre service à une amie, dont le disque dur externe « WD » n’était plus reconnu sur son PC, ni sur le mien d’ailleurs, que ce soit sur Ubuntu ou Windows, j’ai supprimé par erreur ma partition Ubuntu sur laquelle je travaille à plein temps.

Donc, vous l’avez compris, je suis en Double boot, une partition Windows 7 et une partition GNU/Linux sous Ubuntu.
Cette suppression accidentelle est due au fait que j’ai vue dans la « Gestion des disques » sous W7 une partition sans aucune lettre attribuée (exp c :, d : etc..) et sans vraiment réfléchir je l’ai supprimé O_o.

Suppresion de ma partition Ubuntu
Suppresion de ma partition Ubuntu

Je me suis rendu compte en même temps que je cliquais sur « supprimer le volume… » que c’était ma partition Ubuntu que je supprimé, mais le mal était fait.

La partition suprimmée
la partition n’est plus reconnue

Voilà pour le contexte, maintenant le fond du sujet :
Comment récupérer cette partition Ubuntu supprimée ?

Ce qui est important à retenir, c’est que j’ai supprimé la partition uniquement (c’est déjà assez ^^), mais je ne l’ai pas formaté, car si je l’avais formaté, la récupération aurait été nettement plus compliqué, voire très compliqué.

Via les screens précédents, vous pouvez remarquer que ma partition est dans une partition logique. /dev/sda3, et la partition qui manque est /dev/sda7

Nous allons utilisez la commande fdisk via un LiveCD, ou Live USB.
Dans le terminal tapez

1
2
sudo fdisk /dev/sda
Command (m for help):

Si vous voulez avoir de l’aide sur cette commande mettez “m”, sinon “n” pour new

1
Command (m for help): n

A ce moment là il vous sera demander le choix des secteurs, comme nous voulons la plus large partition possible en faites “entrée”. fdisk ne touchera pas les partition déjà montées, mais uniquement les partitions libres.

1
2
3
4
5
First sector (15130080-15131635, default 15130080): <-- entrée
Using default value 15130080
Last sector, +sectors or +size{K,M,G} (15130080-15131635, default 15131635): <-- entrée
Using default value 15131635
Command (m for help):

Pour valider notre commande mettez : “w” pour Write

1
Command (m for help): w

Et là, comme par magie, ma partition supprimée réparait : /dev/sda7

Ensuite nous remontons les fichiers systèmes (filesystems)

1
2
3
sudo mount /dev/sda7 /mnt
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
sudo chroot /mnt

Nous réinstallons le GRUB

1
2
grub-install /dev/sda
update-grub

Puis redémarrer le machine.

Si au démarrage, le Grub ne vous propose plus de booter sur Windows, pas de panique, il suffit de le réparer avec Boot-Repair, pour cela vous pouvez suivre le tuto réparer le Grub avec Boot-Repair

Et voilà!! tous est entré dans l’ordre

Cependant, un petite remarque : En générale, quand vous lancez fdisk, il est demandé quelle type de partition nous voulons, étendue “e” ou primaire “p”, dans notre cas vue que la partition est déjà dans une partition étendue (voir les screen plus haut), et qu’il est impossible de monter une partition étendue dans une partition étendue, le choix se fait automatiquement.

Si cette article vous a dépanné, n’hésitez pas à la partagé ^^

3ème édition du café vie privée @numaparis

3ème édition du café vie privée @numaparis

cryptoparty
cryptoparty

Hello all,

Café vie privée ou Chiffrofête! la troisième édition se tiendra le samedi 22 février pour la première fois Numaparis au 39, rue du Caire à Paris. Pour rappel les deux premières éditions se sont tenues à Simplon,

Alors le Café vie privée, c’est quoi? C’est un joyeux rassemblement où échangent des personnes de tout âge, de tous sexes, de tous niveaux techniques dont la préoccupation principale est la protection de la vie privée et des données personnelles.

Alors venez apprendre à protéger vos communications et vos données en ligne, l’entrée est gratuite!!

Pour cela ;

– Amenez votre ordinateur portable.
– Amenez, si possible, quelques douceurs salées ou sucrées; bonbons, gâteaux, chips etc.. car tous va bien quand le ventre est plein!!
– Si vous hésitez, car vous n’y connaissez rien.. bah c’est l’occasion d’apprendre, vous y repartirez bien plus informé que lors de votre arrivée, c’est une certitude.

Au menu de ce Café Vie privée 3.0 :

– navigation anonyme et sécurisée,
– messagerie instantanée “off the record”.
– comment chiffrer ses données
– comment gérer ses mots de passe

J’y serai certainement, donc venez nombreux ^^

Café vie privée 3.0
39, rue du Caire
75002 Paris

Utopie du logiciel libre de Sébastien Broca

Utopie du logiciel libre de Sébastien Broca

Utopie du logiciel libre
Utopie du logiciel libre
Rassurez-vous, Je ne vais pas faire une critique littéraire, d’une part, parce que ce n’est pas dans mes compétences, et d’autre part, ce n’est pas du tout mon point fort.

Je viens de lire ce livre, plutôt je viens de le dévorer. Et de surplus c’est le premier livre numérique que je lis entièrement sur support numérique.

Par où commencer ?

Il est évident que Sébastien Broca maitrise son sujet, et cela n’a rien d’étonnant, vu que ce livre est tiré en grande partie de sa thèse de Doctorat en sociologie soutenue en janvier 2012 à l’École doctorale de philosophie (Université Paris 1) et dont le sujet est «L’Utopie du logiciel libre, la construction de projets de transformation sociale en lien avec le mouvement du Free Software ».

Sébastien Broca est un sociologue voir philosophe, détail très important, vous allez le comprendre par la suite. Donc, ce livre est à l’origine une thèse, et qui dit thèse, dit 3 ans minimum de recherche et de rédaction. Donc oui, Sébastien Broca connait son sujet.

De ce fait ce livre est « naturellement » très bien documenté, et très riches en enseignement ; histoire, sociologie, philosophie et économie du libre, ainsi que ces influence sur le monde d’aujourd’hui et certainement celui de demain, et l’utopie qu’il alimente sans pour autant la souhaiter.

Utopie concrète d’un changement social et économique qui repose sur le développement personnel dans un collectif sans réel hiérarchie directive. Ou la propriété intellectuelle et la rétention de l’information seraient bannies. Et l’émergence d’un nouveau mode économique, basé sur la Communauté et non plus l’individu.

L’auteur revient sur l’histoire du libre depuis la création de la « Free Software Fondation » par Richard Stallman, en passant par l’émergence de l’open source et le développement du premier noyau Linux par Linus Torvalds, et en finissant par les combat d’aujourd’hui sur la libre circulation de l’information et la protection de la vie privée.

Mais le livre ne se limite pas à relater des faits historiques, fort heureusement, il est accompagné d’analyses fines et de réflexions sur les effets du libre sur la société et le système économique dans le quel il se déploie et qu’il influence. Et tous cela appuyés sur des exemples concrets sur les pratiques de collaboration et l’organisation du travail que ce soit Debian, Wikipedia ou développement du noyau linux, ainsi que l’influence de cette organisation sur les techniques de management des grands groupes de la Silicon Valley comme Google, Facebook, Apple.

La question que je me pose, est sur l’accessibilité du livre ; est-il fait pour le grand publique ? Pour les libristes ou les sociologues ?

Etant moi-même passionné du monde libre, la lecture de ce livre fut facilité par mes quelques connaissances sur le sujet, mais il faut dire que certains chapitres plus philosophiques et/ou sociologiques furent moins accessibles à un non initié comme moi, ils furent parfois « barbant ». Notamment les passages sur le « general intellec », ou il faut vraiment s’accrocher. Néanmoins le livre reste accessible dans sa majorité, et il serait dommage de s’arrêter sur ce point.

La seule critique que je porte, (si je peux me le permettre) c’est l’absence d’un évènement important lié au mouvement libre et des hackeurs, c’est l’éclosion du Partie Pirate suédois en 2006 et surtout son entrée au parlement européen en 2009.
Cet évènement est à mon avis un tournant dans le mouvement libre, une implication direct dans la vie politique, et de ce fait faire entendre la voie du libre dans divers hémicycles et au plus haut niveau des états. Même si dans le livre il est noté que les différentes organisations du libre préfèrent s’impliquer indirectement via du lobbying auprès des différentes formations politiques. Et à leurs yeux, une formation politique comme le Partie Pirate, perdrait de son influence, car elle serait vue comme un concurrent direct.

En conclusion,

De temps à autre, il y a des documents, qui, au hasard d’une lecture ou d’un visionnage nous rappellent que le monde d’aujourd’hui, ou le libéralisme et le capitalisme règne en maître, qu’il existe des alternative viable et solide, et le monde du libre en est l’exemple par excellence.
Un monde LIBRE pour un monde meilleur, alors pourquoi pas.

Enfin, si vous avez la possibilité et l’envie, achetez le livre, même si celui-ci est disponible gratuitement en version numérique, sous licence Creative Commons CC-By-NC-ND.

Utopie du logiciel libre: Du bricolage informatique, à la réinvention sociale
Éditions le passager clandestin
1, rue de l’église, 72240 Neuvy-en-Champagne
www.lepassagerclandestin.fr

Mes résolutions pour 2014

Mes résolutions pour 2014

Bonne année 2014
Bonne année 2014

Avant tous, je vous souhaite une bonne et libre année 2014.

Cette année, contrairement aux précédentes, je vais prendre des résolutions ! Enfin des résolutions numériques, et j’espère bien les tenir, même si je sais que cela sera de la tarte.

Les voici :

1 – Il faut absolument que je me libère de ma Google-dépendance. Facile vous allez-dire !! Oui, mais pas pour un Webmaster et référenceur !! Car dans ce métier, tous est basé sur Google & CO; Google Adsence, Google Adword, Google pour les Webmasters, Google analytics…. En plus de cela vient Gmail et Google agenda. Donc c’est un vrai défi que je me lance.

2 – Mettre en avant la protection de la vie privées et des données personnelles dans mon utilisation au quotidien du numérique, et de sensibiliser mon entourage à ce problème qui devient de plus en plus inquiétant.

3 – Utiliser le plus possible les logiciels libres et en faire la promotion autour de moi, c’est ce que je fais actuellement, mais je pense que je peux faire plus.
Le but n’est pas de bannir à 100% les logiciels propriétaires, ça serait un douce utopie :(, mais 99% reste un objectif abordable ^^.

4 – Prendre le temps de monter mon serveur maison avec Owncloud, ce qui est une suite logique à ma première résolution, pour un agenda et Cloud 100% Made in Home.

5 – Ecrire plus d’article sur mon blog et partager encore plus mes découvertes, mes opinions, mes coup de gueule.

Bon, je m’arrête à 5, je pense que c’est raisonnable, car trop de résolution tue la résolution.

[Hors sujet]

Enfin, ce matin, une amie m’envoie un petit SMS pour me souhaiter la bonne année, ce fut le premier que je lis et qui m’a fait rire ;
– Toc, toc !!
– C’est qui ?
– C’est Lapinou
– Lapinou qui ?
– Lapinouyear 🙂

[/Hors sujet]

Aller bonne année !!!

Script Shell pour sauvegarder vos bases MySQL et vos fichiers Web

Script Shell pour sauvegarder vos bases MySQL et vos fichiers Web

Hello,

Aujourd’hui, je vous propose un Script Shell qui vous permettra de sauvegarder vos sites internets, base de données et fichiers compris.

Il y a certainement des améliorations à y apporter, car je suis loin d’être un AS en programmation BASH.

Ce script est libre de droit, vous pouvez le modifier, le copier, l’améliorer, pensez quand même à mettre la source, c’est a dire l’URL du site svp, et le partager si vous le voulez.

Allons y!!

Je précise que je suis toujours en profil “root” (prompt ~#)

Par habitude je dépose mes scripts dans un répertoire /usr/mes_scripts. j’utiliserai donc ce répertoire dans ce billet.

Dans un premier temps il faut créer le fichier “exclude.txt” qui contiendra les noms des répertoires dont nous ne voulons pas sauvegarder, par exemple les fichiers temporaires et de caches.

1
~# touch /usr/mes_scripts/exclude.txt

Ceci fait, il ne reste plus qu’à copier le script ci-dessous dans la même répertoire.

Mais avant, je vous explique la fonction des différentes “function”

1) Fonction “parametrage” : Regroupe les paramètres nécessaires (FTP, MySQL…) pour le bon fonctionnement du script, normalement, c’est la seule partie que vous devez modifier.

2) Fonction “creation_log” : cette fonction crée un fichier de suivi étape par étape de la sauvegarde, chaque étape sera inscrite sur le fichier log, cela nous permettra d’identifier en cas de dysfonctionnement, la fonction qui cause problème, il est possible de recevoir le récapitulatif par mail.

3) Fonction “verif_ncftp” : cette fonction vérifie si l’application ncftp qui est nécessaire pour notre script est installée, si ce n’est pas, elle l’installe.

4) Fonction “creation_backup” : Cette fonction sert à la création d’un répertoire /tmp/backup, qui regroupera tous les fichiers sauvegardés

5) Fonction “sauvegarde_bdd” : comme son nom l’indique, cette fonction sert à sauvegarder toutes les bases de données MySQL de votre serveur Web.

6) Fonction “sauvegarde_rep” : Après la sauvegarde des base de données il est nécessaire de sauvegarder tous les fichiers WEB, c’est ce que fait cette fonction

7) Fonction “sauvegarde_letout” : cette fonction archive toutes nos sauvegardes précédentes et les compresse avec gzip en lui donnant un nom unique exp “(date)-sauvegarde.gz”

8) Fonction “envoi_ftp” : Avec cette fonction, nous envoyons notre fichier (date)-sauvegarde.gz sur notre serveur FTP.

9) Fonction “sup_ftp” : Cette fonction supprime les anciennes versions de votre sauvegarde, supérieur à 30 jours par défaut.

10) Fonction “envoi_mail” : En fin de sauvegarde, le fichier log est envoyé par mail, si vous avez choisi cette option dans les paramétrages de la fonction N°1

Maintenant voici le Script backup.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
#! /bin/bash

#*******************************************************************************************#
#         Sauvegarde des données sur le FTP d'OVH  par Zenzla - zenzla.com                 #
#             ------------------------------------------------------------                  #
# Ce script permet de sauvegarder vos bases de données MySQL ainsi que les fichiers webs de    #
# vos sites.                                                                                #
# Vous pouvez l'utiliser comme tel (en changeant bien sur les paramètres).                 #
# N'hésitez pas à me contacter via mon blog zenzla.com pour toutes éclaicissements           #
#*******************************************************************************************#

#*******************************************************************************************#
#                           /!\ ATTENTION SVP  /!\                                          #
#                        *---------------------------*                                      #
#   Ce script est est libre de droit, vous pouvez le modifier, le copier, l’améliorer,       #  
#   pensez quand même à mettre la source c’est a dire l’URL du site svp. ainsi que            #
#   partager l'article sur vos réseaux sociaux. MERCI                                      #
#                                                                                           #
#*******************************************************************************************#

#
#  Nom de la fonction: parametrage
#  Fonction : Renseignement des paramètres du serveur FTP et de MySQL
#  

parametrage(){
   
#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
# Editez ces paramètres
#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
SERVEURFTP=""                                               # Serveur ftp
FTPUSER=""                                                  # Votre nom POUR LE ftp
FTPMDP=""                                                   # Mot de passe FTP
MYSQLUSER=""                                                # Utilisateur Mysql
MYSQLMDP=""                                                 # Mot de passe MySQL  
MYSQLHOST=""                                                # Hôte MySQL (localhost dans la majorité des cas)
EMAIL=""                                                    # Pour envoi mail si backup echoue ou OK
MAILSIOK="O"                                                # Mettre "O" si on veut un mail aussi si backup ok
TEMPDIR="/tmp/backup"                                       # repertoire temporaire ou seront mis les fichier compréssé
SAVEDIR1="/var/www/*"                                       # Backup SANS slash a la fin des fichiers web ()
EXCLUDEFILE="/usr/mes_scripts/exclude.txt"                  # Ce fichier doit contenir les repétoires a exclure du backup (fichiers log, temporaires, cache)
OLD_BACKUP="30"                                             # Par défaut je mets "30", donc je garderai les 30 dernières sauvegardes (voir DATE_ULTERIEUR ligne 48)

# Autre Paramètres (A éditer uniquement si utilisateur avancé )

FILENAME=`date +%Y-%m-%d`_backupsite.tar                    # Nom du fichier "[ANNEE-MOIS-JOUR]_backupsite.tar.gz"
DATE_FORMAT=`date +%F`                                      # Format de la date en aaaa-mm-dd
DATE_ULTERIEUR=`date -d "$OLD_BACKUP days ago" +%F`         # La date qui nous servira à supprimer les anciennes sauvegarde.

# Ne plus rien toucher plus bas, sauf si vous conaissez~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~

GZIP="$(which gzip)"
MYSQLDUMP="$(which mysqldump)"
TAR="$(which tar)"
DEBUT=`date +%s`
NCFTP="$(which ncftp)"

#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*

creation_log                                                # Appel de la fonction creation_log
}

##
#  Nom de la fonction: creation_log
#  Fonction : crée un fichier de suivi étape par étape de la sauvegarde, chaque étape sera inscrite sur ce
#  fichier, cela nous permettra d'identifier en cas de disfonctionnement, la fonction qui cause problème,
#  il est possible de recevoir le récapitulatif par mail
##
creation_log () {
   
SUIVILOG="/tmp/suiviscrip.log" # Notre fichier log

if [ ! -f $SUIVILOG ]; then  # Si il existe pas, il faut le créer avec la fonction touch

  touch $SUIVILOG                                  

 
    if [ ! $? -eq  0 ]; then

        echo "Impossible de créer $SUIVILOG"

    else        
        echo "**************************sauvegarde $(date)***********************" > $SUIVILOG  # Mise en page du fichier Log avec la date
        echo "1- Création de fichier $SUIVILOG  Ok $(pwd)" >> $SUIVILOG
       
        verif_ncftp                                 # Appel de la fonction verif_ncftp
    fi
else                                                 # Si il existe, nous écrasons le contenu précédent (Je me pose la question sur la pertinence de garder ou non les anciens fichiers log ?)
   
  echo "**************************sauvegarde $(date)***********************" > $SUIVILOG
  echo "1- Fichier $SUIVILOG  Ok dans $(pwd)" >> $SUIVILOG
 
  verif_ncftp # Appel de la fonction verif_ncftp
fi
}

##
#  Nom de la fonction: verif_ncftp
#  Fonction : Vérifie si ncftp est installé, sinon l'instal
##
 
verif_ncftp(){
if [ -z $NCFTP ]; then

       apt-get install ncftp && echo "2- instalation ncftp Ok de ncftp" >> $SUIVILOG ||  echo "2- impossible d'installer ncftp" >> $SUIVILOG
       
       creation_backup
else
       creation_backup
fi
}



##
#  Nom de la fonction: creation_backup
#  Fonction : crée le répertoire /tmp/backup, qui regroupera tous les fichiers
#  sauvegardés
##
creation_backup(){
   
if [ ! -d $TEMPDIR ]; then                  # si /tmp/backup n'existe pas, alors il le créé
    mkdir -p $TEMPDIR
    if [ ! $? -eq  0 ]; then        
       echo "3- Impossible de créer la repertoire /tmp/backup." >> $SUIVILOG
    else
        echo "3- Création du repertoire /tmp/backup. Ok" >> $SUIVILOG
        cd $TEMPDIR && sauvegarde_bdd
    fi
else                                        # sinon /tmp/backup existe, alors il le vide
    echo "3- Repertoire /tmp/backup. Ok" >> $SUIVILOG
    rm -rf $TEMPDIR/* && cd $TEMPDIR && sauvegarde_bdd
fi
}

##
#  Nom de la fonction: sauvegarde_bdd
#  Fonction : sauvegarde de toutes les bases MySQL
#  ATTENTION : le nom des bases de ne doivent pas contenir d'espace (Je vous rassure, en générale dans MySQL il y en a pas)
##
sauvegarde_bdd (){

echo "4- Debut de la boucle sauvegarde base de données" >> $SUIVILOG
DBS="$(mysql -u $MYSQLUSER -h $MYSQLHOST -p$MYSQLMDP -Bse 'SHOW DATABASES')"  #  Liste les noms des base de données présentes
for db in $DBS                                                          # Boucle, pour chaque base de données dans DBS
do
    echo "Database : $db"
        FILE=$TEMPDIR/mysql-$db-$DATE_FORMAT.gz   # FILE est le nom que portera le fichier de sauvagarde de cette base
        touch $FILE
        `$MYSQLDUMP -l -u $MYSQLUSER -h $MYSQLHOST -p$MYSQLMDP $db | $GZIP > $FILE`   # Dump de la base, puis compression dans FILE
        echo "*****tour de $db dans $FILE***" >> $SUIVILOG # A chaque passage de la boucle, il est noté la base sur laquelle nous sommes
done
echo "4- Fin de la boucle" >> $SUIVILOG

sauvegarde_rep

}

##
#  Nom de la fonction: sauvegarde_rep
#  Fonction : Compression d'un ou plusieurs repertoires choisi en parametre $SAVEDIR1
##
sauvegarde_rep (){
   
echo "5- Commence la sauvegarde des fichiers web">> $SUIVILOG
$TAR -cvzf $FILENAME.gz $SAVEDIR1 -X $EXCLUDEFILE   # Compression du repertoires $SAVEDIR1 en excluant les fichier présent dans $EXCLUDEFILE

if [ ! $? -eq  0 ]; then
    echo "6- Erreur TAR $SAVEDIR1" >> $SUIVILOG
    exit $?
else
    echo "6 - Tar $SAVEDIR1 Ok " >> $SUIVILOG
   
    sauvegarde_letout
fi

}
##
#  Nom de la fonction: sauvegarde_letout
#  Fonction : Compression de tous les fichiers précédents dans un seul fichier $DATE_FORMAT-sauvegarde.gz
##
sauvegarde_letout (){
echo "7- Commence la sauvegarde de tout les fichier">> $SUIVILOG

cd /tmp  # accès /tmp, là ou se trouve le répertoir backup qui contient tous nos fichiers

    echo "INFO : je suis dans $(pwd)" >> $SUIVILOG
   
    $TAR -cvzf $DATE_FORMAT-sauvegarde.gz $TEMPDIR # Compression du fichier Backup
   
    if [ ! $? -eq  0 ]; then
   
        echo "8 -Erreur TAR de la totalité  $TEMPDIR" >> $SUIVILOG
        exit $?
    else
        echo "8 -Tar $TEMPDIR Oki" >> $SUIVILOG
       
        envoi_ftp
       
    fi
}

##
#  Nom de la fonction: envoi_ftp
#  Fonction : Envoi le fichier $DATE_FORMAT-sauvegarde.gz sur le serveur FTP d'OVH
##
envoi_ftp() {
DATE=`date +%H:%M:%S`
echo "9 - Envoi FTP en cours" >> $SUIVILOG
ncftpput -m -u $FTPUSER -p $FTPMDP $SERVEURFTP "/" $DATE_FORMAT-sauvegarde.gz   # Envoi du fichier $DATE_FORMAT-sauvegarde.gz sur le serveur FTP
RESULT=$?
FILESIZE=`ls -l $DATE_FORMAT-sauvegarde.gz | awk '{print $5}'`   # Récupération de la taille du backup
FILESIZE=$(($FILESIZE/1000000))  # Mis een forme de la taille en Mega Octet

if [ "$RESULT" != "0" ]; then # Si Erreur lors de transfert FTP


    echo " 10 - [$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué." >> $SUIVILOG # Type de l'erreur dans le fichier de suivi
    echo "[$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué." | mail -s 'ERREUR BACKUP FTP OVH' $EMAIL < $SUIVILOG  # Envoi du fichier
    exit $RESULT
else
    TOTALTIME=$(((`date +%s`-$DEBUT)/60)) # Si Ok lors de l'envoi FTP
    echo "10 - [$0] -->Fin de backup normal de $SAVEDIR a $DATE.  Durée: $TOTALTIME mn. Taille: $FILESIZE Mb" >> $SUIVILOG
   
    sup_ftp
fi 
   
    }
   
##
#  Nom de la fonction: sup_ftp
#  Fonction : supprime le fichier $DATE_ULTERIEUR-sauvegarde.gz de votre serveur FTP
##
sup_ftp() {
echo "11 - Suppression du fichier $DATE_ULTERIEUR-sauvegarde.gz du FTP " >> $SUIVILOG
ftp -n << EOF
open $SERVEURFTP
user $FTPUSER $FTPMDP
delete $DATE_ULTERIEUR-sauvegarde.gz
quit
EOF


  envoi_mail
    }
   
##
#  Nom de la fonction: envoi_mail
#  Fonction : Envoi du rapport final
##  
envoi_mail (){

    rm -rf /tmp/$DATE_FORMAT-sauvegarde.gz  #  Supression de la sauvegarde local
   
        echo "12 - Suppression du fichier $DATE_FORMAT-sauvegarde.gz du de /tmp " >> $SUIVILOG
   
    if [ "$MAILSIOK" = "O" ]; then
    echo "mail envoyer" >> $SUIVILOG
    mail -s 'BACKUP FTP OVH OK' $EMAIL < $SUIVILOG      
    fi
}
# lancement de backup
if [ ! `id -u` = 0 ]; then  #Nous vérifions que l'utilisateur est root            
    echo "Vous devez être ROOT pour exécuter ce Sript"
else
    parametrage
fi

Voici le lien pour télécharger le fichier directement [wpdm_file id=1] (empreinte MD5 788799c7b823cc733810f7c5a5b68393)

Comme indiqué plus haut, je dépose ce script dans le répertoire “/usr/mes_scripts/”

Ensuite il faut le rendre exécutable

1
~# chmod u+x /usr/mes_scripts/backup.sh

Maintenant, il faut le faire exécuter tous les jours à des périodes de faible influence, par exemple 3h33 du Matin ^^.

Editer votre crontab

1
~# crontab -e

Puis ajouter la ligne ci-dessous, puis sauvegarder.

1
33 03 * * * /usr/mes_scripts/backup.sh > /dev/null

Vous avez aimé cet article ? Alors partagez-le ^^

Installe Partie à Maurepas le 18 mai

Association Linux Versailles L’association de promotion des logiciels libres  ROOT66, organise une Installe Partie à Maurepas le samedi 18 mai de 10h-18h.

Je donne donc rendez-vous à tous les amoureux du libre ou les curieux qui veulent découvrir linux au local prêté par La Mairie de Maurepas ;  Le Mulot 4 Rue de la Beauce à Maurepas.

Lors de cette installe Partie, les membres de l’association Root66  apporterons leurs compétences soit pour installer une distribution Linux, ou répondre tout simplement aux questions des visiteurs qui s’intéressent au libres.

Donc si vous avez un ordinateur que vous pensez à tort, qu’il est bon pour la casse ! Venez lui donner une nouvelle vie lors de cette occasion.

A qui s’adresse cette journée :

  •  Aux curieux quel que soit leurs âges femmes ou homme
  • A tous ceux qui veulent découvrir Linux, mais qui pensent à tort que c’est pour les Geeks.
  • A ceux qui veulent redonnez vie à un ordinateur mourant (sous Windows), mais qui retrouvera sa jeunesse sous Linux (j’exagère un peu, mais pas beaucoup !!)
  • Aux curieux tous simplement

Quand je dis un ordinateur mourant, je ne veux pas dire un PC avec 128 Mo de RAM ou 10 Go de Disque dur, même si il est tout à fait possible d’installer un Linux dessus, mais c’est l’usage qui posera problème.

Donc, si vous n’êtes pas très loin, passez nous voir !!

Je profite de ce poste pour vous informer que je ferais une présentation sur le référencement le Samedi 25 mai à la Cyber-base de Jouy-en-Josas.