Maniatux's Blog

Welcome to the internet

Migration du serveur sous FreeBSD 9.2

Rédigé par Xavier -

EDIT : Oui je sais, FreeBSD 10 vient de sortir, je suis d'ailleurs l'un des auteurs de cette dépêche sur Linuxfr. Mais quand j'ai commencé à migrer mon serveur, c'était encore la 9.2 qui était stable. Et avec les jails et les ports je préfère éviter de tourner sur les versions non stables...

Puisque mon serveur perso n'est pas critique (je peux me permettre une coupure d'une journée) j'en profite changer l'OS assez souvent, en quête de la perle rare ou tout simplement pour apprendre de nouvelles choses. Actuellement mon serveur ne sert que pour Jabber et la messagerie, mais à terme j'aimerai récupérer l'hébergement de mon blog (web). Or je souhaite séparer la partie web et messagerie pour la sécurité. Pour cela plusieurs solutions :

  • Utiliser 2 serveurs : très consommateur en énergie et prend plus de place.
  • Utilisez Linux + KVM (virtualisation) : incompatible avec mon serveur (Atom 32 bits).
  • Utiliser Linux + LXC ou Linux + OpenVZ : LXC déjà exploré j'ai envie d'autre chose.
  • Utiliser FreeBSD + Jails : Ouais !!!

Schéma cible

Compilation vs packages binaires

Bien que mon serveur soit de faible puissance, j'ai choisi de compiler moi-même les ports. Pourquoi ? Simplement parce que les packages binaires sont trop basiques et n'incluent pas les options sont j'ai besoin. Exemple : pour le serveur web, j'avais besoin du support fpm pour php. Or le seul moyen pour avoir cela c'est de compiler soi-même le paquet php55 et activer l'option fpm. Avec le package binaire officiel, pas de fpm.

Hôte : TARDIS

L'hôte est FreeBSD 9.2 i386 installé en UFS, avec les rôles d'hôte pour les jails et serveur DNS (named). Pour l'instant uniquement du cache, on verra ultérieurement s'il y a besoin de déclarer des zones. Named est installé dans le système de base, donc aucune manipulation particulière à faire à part l'activer dans le rc.conf et commenter la petite ligne dans /var/named/etc/namedb/named.conf qui spécifie qu'il ne faut écouter qu'en 127.0.0.1. Pour gérer mes jails, j'utilise ezjail, un outil de fainéant qui permet non seulement de tout gérer très facilement, mais en plus de générer un template avec des montages dynamiques.

root@TARDIS:~ # jls

   JID  IP Address      Hostname                      Path

     1  192.168.0.4     xmpp                          /usr/jails/xmpp

     2  192.168.0.3     www                           /usr/jails/www

     3  192.168.0.2     mail                          /usr/jails/mail

Pour que toutes mes nouvelles jail utilisent le bon serveur DNS, il faut éditer le fichier /usr/jails/newjail/etc/resolv.conf et ajouter l'IP qui va bien.

Jail : mail

La jail mail est destinée à recevoir, stocker, envoyer des mails. J'utilise un backend sqlite que j'ai mis en place en suivant ce tutoriel très complet (légère adaptation à faire pour utiliser sqlite à la place de mysql). Il faut commencer par installer dovecot2 en activant le support sqlite. Puis on installe Postfix en activant aussi le support sqlite mais également l'authentification SASL via dovecot. Je voulais que mon serveur de messagerie puisse gérer plusieurs domaines, d'où mon choix d'une structure plus complexe avec un backend sql.

Lorsqu'un mail est reçu, il est traité par Postfix qui vérifie dans la base sqlite si le domaine existe bien. Si oui il le transmet alors à Dovecot qui va se charger de le stocker à l'emplacement qui va bien. Lorsqu'un utilisateur veut envoyer un mail, il le soumet à Postfix (submission 587) qui demande à Dovecot si l'utilisateur est authentifié. Tous les échanges sont sécurisés en STARTTLS.

Jail : www

La jail www est destinée à faire office de serveur web. Pour l'installation de php, il faut compiler php55 avec le support de fpm, mais aussi php55-extensions qui permet de supporter session, gd (requis par pluxml), et d'autres si besoin.

C'est sur cette jail que mon blog (maniatux.fr) sera bientôt rapatrié. L'adresse e-mail de contact sera elle rapatriée sur la jail précédente (mail) car comme je l'ai indiqué, je peux gérer plusieurs domaines. Pluxml étant très léger et sans base de données, le serveur devrait tenir.

Jail : xmpp

La jail xmpp est destinée à faire office de serveur Jabber. J'utilise une fois de plus Prosody, que j'ai couplé avec sqlite pour le stockage des comptes (je n'aime pas le stockage en clair dans /var/lib/prosody qui est utilisé par défaut). La mise en place a été assez compliquée car en cas d'erreur, Prosody refuse de démarrer mais n'indique pas pourquoi. J'ai du spécifier un emplacement pour les logs et mettre les bons droits dessus (chown -R prosody:wheel) afin d'avoir un debug. En fait il n'arrivait pas à écrire le pid. Pour pouvoir utiliser sqlite il faut installer le port luadbi avec l'option sqlite. Après avoir un peu bataillé, ça marche.

Charge système

root@TARDIS:~ # df -h

Filesystem             Size    Used   Avail Capacity  Mounted on

/dev/ada0p2            140G    2.5G    126G     2%    /

devfs                  1.0k    1.0k      0B   100%    /dev

devfs                  1.0k    1.0k      0B   100%    /var/named/dev

/usr/jails/basejail    140G    2.5G    126G     2%    /usr/jails/xmpp/basejail

devfs                  1.0k    1.0k      0B   100%    /usr/jails/xmpp/dev

fdescfs                1.0k    1.0k      0B   100%    /usr/jails/xmpp/dev/fd

procfs                 4.0k    4.0k      0B   100%    /usr/jails/xmpp/proc

/usr/jails/basejail    140G    2.5G    126G     2%    /usr/jails/www/basejail

devfs                  1.0k    1.0k      0B   100%    /usr/jails/www/dev

fdescfs                1.0k    1.0k      0B   100%    /usr/jails/www/dev/fd

procfs                 4.0k    4.0k      0B   100%    /usr/jails/www/proc

/usr/jails/basejail    140G    2.5G    126G     2%    /usr/jails/mail/basejail

devfs                  1.0k    1.0k      0B   100%    /usr/jails/mail/dev

fdescfs                1.0k    1.0k      0B   100%    /usr/jails/mail/dev/fd

procfs                 4.0k    4.0k      0B   100%    /usr/jails/mail/proc

L'espace disque utilisé est de 2,5GB, sachant que l'on compte le système de base, le template, et l'arbre de ports. C'est assez intéressant. Voyons maintenant la charge CPU et mémoire :

last pid: 12938;  load averages:  0.00,  0.00,  0.00    up 0+22:54:08  13:14:23

48 processes:  1 running, 47 sleeping

CPU:  1.1% user,  0.0% nice,  1.5% system,  0.2% interrupt, 97.2% idle

Mem: 55M Active, 216M Inact, 113M Wired, 69M Buf, 589M Free

Swap: 4096M Total, 4096M Free

En gros même avec 3 VPS le système est très peu sollicité : 55Mo de mémoire utilisé, et CPU à 3% de charge.

Supervision

Pour assurer la supervision j'utilise tout simplement logwatch. C'est un script qui génère un rapport et envoie régulièrement un mail qui indique l'espace disque, les connexions ssh, les tentatives infructueuses d'accès à certain services. Logwatch peut être installé à partir de /usr/ports/sysutils/logwatch. Ensuite il faut spécifier Output = mail dans le logwatch.conf et ajouter un cron (@daily /usr/local/sbin/logwatch.pl).

On peut soit installer logwatch sur l'hôte uniquement, soit le mettre sur chaque jail. J'ai choisi la deuxième option pour avoir plus de détails.

Sur le serveur mail, c'est Postfix qui est utilisé pour l'envoi du rapport. Par contre sur les autres jail, j'ai laissé sendmail. Il faut éditer le fichier /etc/mail/freebsd.mc puis spécifier :

define(`SMART_HOST', `192.168.0.2')

Sauvegarder puis entrer :

m4 /etc/mail/freebsd.mc > /etc/mail/freebsd.cf

Sendmail va ensuite utiliser notre relay. Pas besoin de l'activer dans le rc.conf car il ne fonctionne pas comme un daemon dans ce cas là.

Sauvegarde

Pour les sauvegardes on parle beaucoup de bacula ou rsync. Dans mon cas j'ai choisi de faire plus simple car : 1) bacula est adapté pour les grosses infra avec plusieurs serveurs et du stockage dédié 2) rsync nécessite un support de stockage distant que je n'ai pas (mon NAS ne tourne pas 24/24). Donc je me contente d'un simple script sh :)

#!/bin/sh

tar -zcvf /root/"sauvegarde-`date -v-1d +%B-%Y`".tar.gz \

/etc \

/var/named/etc \

/usr/jails/mail/etc \

/usr/jails/mail/home \

/usr/jails/mail/usr/local/etc \

/usr/jails/www/etc \

/usr/jails/www/home \

/usr/jails/www/usr/local/etc \

/usr/jails/xmpp/etc \

/usr/jails/xmpp/home \

/usr/jails/xmpp/usr/local/etc

Et dans crontab -e :

@monthly /root/sauvegarde.sh

Le 1er du mois à minuit le script sera exécuté, et dans son nom il sera indiqué le mois (précédent). Ainsi une sauvegarde exécutée le 1er Fevrier 2014 sera nommée January-2014.tar.gz si tout se passe bien.

Je n'ai pas de bases de données dont pas besoin d'arrêter les jail avant la sauvegarde. Je sauvegarde les /etc qui contiennent la configuration et les /home qui contiennent les données. Pas besoin du reste.

Note : ezjail-admin permet de sauvegarder les jails, mais je ne l'utilise pas en raison de deux inconvénients majeurs : 1) ça sauvegarde tout incluant l'arbre des ports, ce qui est long et inutile 2) ça nécessite d'arrêter la jail, et je n'ai pas envie d'avoir des interruptions de service à chaque sauvegarde, on est pas sur Windows Server.

Conclusion

FreeBSD ça envoie du rêve, c'est très puissant, ezjail-admin est un outil qui m'a fait franchir le pas. On gère ses jails avec une facilité déconcertante. Je suis volontairement resté vague sur cet article, car le but était de présenter un retour d'expérience, et non un tutoriel qui aurait été de toutes manières trop long. Si vous vous lancez dans l'aventure et souhaitez obtenir mes fichiers de configuration ou des explications, n'hésitez pas !

htc one : la grangrène de la surcouche constructeur

Rédigé par Xavier -

Comme je le disais dans mon précédent article sur la 4G, j'ai eu l'occasion de tester un htc one.

Il faut bien avouer que d'un point de vue matériel, il est assez intéressant. Grand écran, beau, performances correctes, support 4G, et surtout il se distingue sur un point : le son. On a pas l'impression d'écouter de la musique sur un smartphone, le rendu est presque aussi bon qu'une vraie paire de hauts-parleurs. Par contre, côté logiciel, c'est la catastrophe.

C'est un système Android 4.2 qui est livré, ce qui est en soit n'est pas un mal, mais avec la surcouche constructeur htc, et surtout tout une suite d'applications dont on se passerait bien : facebook, deezer, dropbox, une application sociale orange dont j'ai oublié le nom, et même un antivirus ! Et bien sûr, tout ceci est impossible à désinstaller.

Au premier lancement vous devez accepter tout une suite de contrats utilisateur pour pouvoir avancer, ce qui n'est pas acceptable. Bordel, j'achète un smartphone parce que je veux un ordinateur déguisé en téléphone, j'ai pas envie de souscrire à 3 réseaux sociaux et 2 assurances vie juste pour ouvrir un navigateur ! C'est pas possible !

Et je ne parle même pas des nombreuses notifications qui inondent l'appareil. "Machin doit être mis à jour, truc n'a pas pu se connecter (j'ai rien demandé), veuillez souscrire à notre service..." STOP !!!

Il est scandaleux de penser que dans le prix de l'appareil, on paye tous ces logiciels qui sont nuisibles et dont on ne se servira jamais. C'est exactement la raison de la mauvaise réputation d'Android : les constructeurs ont eu trop de libertés et n'ont pas joué franc jeu, ils en ont abusé. On a d'un côté ceux qui vendent du matériel dépassé ce qui amène à penser que Android est lent, et de l'autre côté ceux qui mettent leur surcouche constructeur et tous leurs logiciels qui dénaturent le produit et surtout l'expérience utilisateur.

Aucun ingénieur ne s'est posé la question du pourquoi Cyanogen et toutes les ROM alternatives ont autant de succès. Les surcouches constructeur sont un véritable cancer, continuez comme ça et vous détruirez votre produit au profil des concurrents (les Nokia Lumia se vendent bien et ont une excellente réputation).

Je ne suis pas prêt de lâcher mon Nexus4, même s'il ne supporte pas la 4G, et quand viendra le temps de le remplacer, je choisirai un autre Nexus. Je ne veux pas être harcelé, matraqué, je ne veux pas qu'on choisisse pour moi, je veux quelque chose de simple et intuitif, bref un Android stock.

Un raz le bol général des jeux vidéos ?

Rédigé par Xavier -

J'ai lu avec attention cet article de PCINpact : EA va introduire un mode hors ligne pour Sim City. Alors déjà, je déteste et boycotte EA. Ce sont les spécialistes du massacre de licences, dont certaines que j'adorais (Mass Effect et Dragon Age). Mais quand je vois le virage à 180° qu'ils font avec Sim City, je me dis qu'ils ont du prendre un sacré revers de la part des joueurs.

Le raz le bol que je décrivais par rapport au cinéma, je le ressens aussi pour les jeux vidéos. L'originalité est morte, les éditeurs ont tous été rachetés par les gros, et les contraintes de rentabilité les ont amené à dénaturer les jeux, pourrir les licences, mettre en place de nouveaux modèles économiques abusifs afin de traire la vache à lait qu'est le joueur (dlc, season pass...). Toujours les mêmes jeux, tirés par la mitrailleuse à étrons, qualité et durée de vie en baisse, etc.

2013 a été l'année des jeux indépendants, qui ont pris leur envol grâce à internet et à la naissance de plateformes collaboratives. La preuve de ce succès est que maintenant les gros éditeurs se mettent à porter eux-même des projets indépendants. Et oui il vaut mieux tenter de contrôler la concurrence, plutôt que d'attendre et se faire manger. Les joueurs sont lassés des gros jeux et cherchent des repères dans le old school, les bons vieux jeux 2D, moins chers, plus originaux, parfois magiques.

A la manière des youtubeurs qui s'auto-produisent sans passer par le circuit sélectif de la télévision, les développeurs de jeux indépendants n'ont plus à courber l'échine devant les gros éditeurs qui vont dénaturer leur style. Alors qu'on pensait que les utilisateurs de PC ne débourseraient plus un sou pour du contenu, on voit que beaucoup n'hésitent pas à financer des projets encore en développement.

La question que je me pose est : les gros éditeurs sont-ils allés trop loin ? 2014 sera-t-elle l'année où nous verrons beaucoup de volte-face comme le mode hors-ligne de Sim City pour tenter de regagner le cœur des joueurs partis chercher leur bonheur ailleurs ?

Aperçu de la 4G Sosh

Rédigé par Xavier -

Sosh a ouvert les vannes de la 4G pour son forfait à 24,90€, dont je suis l'heureux bénéficiaire. Au début j'étais plutôt sceptique, car le H+ permet déjà d'obtenir des débits bien supérieurs à l'ADSL et suffisant pour tous les usages (regarder des vidéos en HD par exemple).

Mon Nexus 4 n'est pas compatible 4G, mais au travail j'ai eu l'occasion de tester deux téléphones : le Ultym4 et le htc one. Le premier est un smartphone Alcatel vendu sous la marque Bouygues et plutôt intéressant, le second est un modèle surchargé qui m'a marqué en mal, j'y reviendrai dans un prochain article. Concernant la 4G, je pense que je me suis trompé. La différence est bien là. Elle ne se ressent pas sur le débit, mais sur la latence. En H+, j'ai pu atteindre des débits de 25Mbps, ce qui est très intéressant mais la réactivité laisse à désirer. Certaines requêtes vont nécessiter pas loin de 1 seconde, et cela se ressent par exemple sur la navigation web. En 4G j'ai mesuré un débit de 31Mbps, ce qui est à peine plus que le H+, en revanche la latence est presque nulle. A chaque requête sur le web, le playstore ou l'application deezer, la réponse est instantanée.

J'ai vraiment ressenti la rupture entre la génération 3G et 4G, une navigation plus fluide, plus naturelle, qui le mène à conclure que oui, la 4G est intéressante.

Classé dans : Telephony - Mots clés : aucun

Je ne consomme (presque) plus de films

Rédigé par Xavier -

On me demande souvent "hé, tu utilises quoi pour télécharger les films toi ?". Ma réponse est "rien du tout". En fait le cinéma me blase. Les films sont nuls. Chaque long métrage vu, chaque ticket de cinéma payé me déprime. Depuis des années je n'a pas vu de vrai film intéressant. Du coup, je n'achète et ne télécharge aucun film.

Tous les films se ressemblent, utilisent des codes communs. On sait qui va mourir, on prévoit la suite, on écoute le blabla sans queue ni tête quand un scientifique parle, et au final on a un peu l'impression de regarder de la télé réalité. Lorsque j'ai vu Thor 2 au cinéma, je suis parti volontairement avant la fin, et me suis juré de ne plus jamais verser 1 centime dans un cinéma. Marre de ces "œuvres" prémâchées, marre d'être pris pour un débile, marre de voir les mêmes qui tirent les ficelles avec un modèle économique usé, marre de les voir se plaindre du "piratage". VOUS NE TÉLÉCHARGERIEZ PAS UNE VOITURE : si si j'aimerai bien, par contre je ne télécharge plus les étrons.

Je suis fan des Youtubers, ces indépendants qui ont commencé avec une webcam a 15 images par seconde et ont atteint aujourd'hui le million d'abonnés pour certains. C'est rafraîchissant, c'est original, et surtout c'est authentique. AVGN, Joueur du Grenier, What The Cut, Speedgames, Crossed, USUL, Fossoyeur de films... on trouve un humour plus familier et une grande proximité avec les spectateurs. Au final c'est ça la télévision 2.0.

J'aime regarder quelques séries TV, mais bien peu retiennent mon intérêt. Futurama, Les Simpson, South Park, des séries humoristiques qui ne se prennent pas au sérieux pour notre plus grand plaisir. Question science fiction, je suis peut-être vieux jeu, mais je n'ai rien trouvé d'aussi bien que Stargate (SG1, les 8 premières saisons... :P ) . Doctor Who est assez intéressant, surtout pour son background, mais reste derrière Stargate à mon goût.

J'ai parfois du mal à dire si c'est moi qui vieillit en me disant que "c'était mieux avant", ou si tout est réellement pire aujourd'hui. Mes résolutions pour 2014 : taper dans les contenus indépendants : jeux, films. J'espère y trouver un nouveau souffle, de l'originalité, de authenticité. A bientôt !