Pour mettre en place rapidement un serveur Jabber sous Debian, je préconise la solution ejabberd, codé en Erlang.

Installez le paquet ejabberd. Pour une configuration basique, il y a très peu de choses à modifier dans la configuration (/etc/ejabberd/ejabberd.cfg) :

  1. %% Admin user
  2. {acl, admin, {user, "admin", "votredomaine.org"}}.
  3.  
  4. %% Hostname
  5. {hosts, ["votredomaine.org"]}.

Puis ajoutez l’utilisateur admin avec ejabberdctl (en tant que root) :

  1. ejabberdctl register admin votredomaine.org pouet

Vous pouvez à présent vous connecter à l’interface d’administration de votre serveur à l’adresse suivante : http://votredomaine.org:5280/admin avec l’identifiant admin@votredomaine.org et le mot de passe pouet.

Je vous conseille de faire un tour par les Règles d’accès pour passer le paramètre register en allow all ; ainsi, n’importe qui pourra créer un compte sur votre serveur.

Amusez-vous comme des petits fous \o/ !

Une clef USB 16 Go c’est bien, une clef USB 16 Go qui sert à quelque chose c’est mieux. D’où cette idée de miroir local Arch Linux, qui fonctionne plutôt… très bien !

Pour commencer, j’ai formaté la clef en ext2, avec « mirror » comme label pour la partition.
Maintenant l’idée, c’est d’avoir [core] et [extra] constamment à jour et à disposition. On va utiliser un script pour faire fonctionner rsync à ces fins. Notez l’intérêt du label pour la partition :

  1. #!/bin/bash
  2. #
  3. # The script to sync a local mirror of the Arch Linux repositories and ISOs
  4. #
  5. # Copyright (C) 2007 Woody Gilk <woody@archlinux.org>
  6. # Modifications by Dale Blount <dale@archlinux.org>
  7. # and Roman Kyrylych <roman@archlinux.org>
  8. # Licensed under the GNU GPL (version 2)
  9.  
  10. # Filesystem locations for the sync operations
  11. SYNC_HOME="/media/mirror"
  12. SYNC_LOGS="$SYNC_HOME/logs"
  13. SYNC_FILES="$SYNC_HOME/files"
  14. SYNC_LOCK="$SYNC_HOME/mirrorsync.lck"
  15.  
  16. # Select which repositories to sync
  17. # Valid options are: core, extra, testing, community, iso
  18. # Leave empty to sync a complete mirror
  19. SYNC_REPO=(core extra)
  20.  
  21. # Set the rsync server to use
  22. # Only official public mirrors are allowed to use rsync.archlinux.org
  23. SYNC_SERVER=distro.ibiblio.org::distros/archlinux
  24.  
  25. # Set the format of the log file name
  26. # This example will output something like this: sync_20070201-8.log
  27. LOG_FILE="pkgsync_$(date +%Y%m%d-%H).log"
  28.  
  29. # Do not edit the following lines, they protect the sync from running more than
  30. # one instance at a time
  31. if [ ! -d $SYNC_HOME ]; then
  32.   echo "$SYNC_HOME does not exist, please create it, then run this script again."
  33.   exit 1
  34. fi
  35.  
  36. [ -f $SYNC_LOCK ] && exit 1
  37. touch "$SYNC_LOCK"
  38. # End of non-editable lines
  39.  
  40. # Create the log file and insert a timestamp
  41. touch "$SYNC_LOGS/$LOG_FILE"
  42. echo "=============================================" >> "$SYNC_LOGS/$LOG_FILE"
  43. echo ">> Starting sync on $(date –rfc-3339=seconds)" >> "$SYNC_LOGS/$LOG_FILE"
  44. echo ">> —" >> "$SYNC_LOGS/$LOG_FILE"
  45.  
  46. if [ -z $SYNC_REPO ]; then
  47.   # Sync a complete mirror
  48.   rsync -rptlv –delete-after –delay-updates $SYNC_SERVER "$SYNC_FILES" >> "$SYNC_LOGS/$LOG_FILE"
  49. else
  50.   # Sync each of the repositories set in $SYNC_REPO
  51.   for repo in ${SYNC_REPO[@]}; do
  52.     repo=$(echo $repo | tr [:upper:] [:lower:])
  53.     echo ">> Syncing $repo to $SYNC_FILES/$repo" >> "$SYNC_LOGS/$LOG_FILE"
  54.  
  55.     # If you only want to mirror i686 packages, you can add
  56.     # " –exclude=os/x86_64" after "–delete-after"
  57.     #
  58.     # If you only want to mirror x86_64 packages, use "–exclude=os/i686"
  59.     # If you want both i686 and x86_64, leave the following line as it is
  60.     #
  61.     rsync -rptlv –delete-before –delay-updates $SYNC_SERVER/$repo "$SYNC_FILES" >> "$SYNC_LOGS/$LOG_FILE"
  62.  
  63.     # Create $repo.lastsync file with timestamp like "2007-05-02 03:41:08+03:00"
  64.     # which may be useful for users to know when the repository was last updated
  65.     # date –rfc-3339=seconds > "$SYNC_FILES/$repo.lastsync"
  66.  
  67.     # Sleep 5 seconds after each repository to avoid too many concurrent connections
  68.     # to rsync server if the TCP connection does not close in a timely manner
  69.     sleep 5
  70.   done
  71. fi
  72.  
  73. # Insert another timestamp and close the log file
  74. echo ">> —" >> "$SYNC_LOGS/$LOG_FILE"
  75. echo ">> Finished sync on $(date –rfc-3339=seconds)" >> "$SYNC_LOGS/$LOG_FILE"
  76. echo "=============================================" >> "$SYNC_LOGS/$LOG_FILE"
  77. echo "" >> "$SYNC_LOGS/$LOG_FILE"
  78.  
  79. # Remove the lock file and exit
  80. rm -f "$SYNC_LOCK"
  81. exit 0

Afin de l’utiliser de la manière la plus propre possible, on va modifier un peu notre /etc/pacman.conf. Le but est de faire comprendre à pacman qu’il doit d’abord regarder le miroir local, puis en cas d’échec un miroir distant :

[core]
Include = /etc/pacman.d/localmirror
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/localmirror
Include = /etc/pacman.d/mirrorlist

Et pour /etc/pacman.d/localmirror :

# Local mirror
Server = file:///media/mirror/files/$repo/os/i686 # i686 or x86_64

Si la partition mirror est montée, pacman ira donc voir si les paquets sont dispos sur votre miroir local ; sinon, il ira chercher sur votre miroir distant habituel.

Keep It Simple, Stupid ;) .

Plus couramment appelée « Et meeerde », l’opération de récupération de données dans une situation d’urgence que j’ai vécue hier fut édifiante. Pour en apprendre autant que moi, vous allez avoir besoin :

  • D’un disque dur sur lequel vous avez installé Mac OS X sans faire attention à l’étape de partitionnement ;
  • D’une table des partitions foutue en l’air par HFS+ ;
  • D’une partition /home de 125Go qui contient toutes les données auxquelles vous tenez et dont vous n’avez pas fait de sauvegarde préalable ;
  • D’un disque dur externe avec, au minimum, l’équivalent en espace libre de la taille du disque dur à récupérer ;
  • De patience, de sang-froid et de moi, évidemment.

C’est parti !

Lire le reste de cet article »

Dans un élan de geekerie, j’ai eu besoin (bon, d’accord, envie) de monter un répertoire distant accessible avec SSH. Je me suis donc renseigné, et parmi la foule de tutos tous plus dépréciés les uns que les autres, j’ai finalement réussi à faire ça correctement.

Les paquets et modules

Vous aurez besoin d’installer autofs, sshfs et fuse pour oser espérer monter un répertoire distant. Vous devrez également charger les modules autofs4 et fuse avec modprobe, ou dans un fichier qui va bien en fonction de votre distro (genre /etc/rc.conf pour les archers).

La configuration SSH

Le plus simple est de se connecter au serveur distant avec une paire de clefs RSA/DSA/whatever qui va bien ; pour cela je vous renvoie à quelque chose du genre le wiki archlinux.org.

Configurons autofs

Dans un premier temps, créez le répertoire /media/sshfs qui accueillera vos montages distants.

Puis, collez cela dans /etc/autofs/auto.master :

  1. /media/sshfs        /etc/autofs/auto.sshfs  –timeout=900,–ghost

Puis ceci dans /etc/autofs/auto.sshfs :

  1. votre_montage -fstype=fuse,port=22,rw,allow_other :sshfs\#login@serveur\:/chemin/distant

Enfin, lancez autofs à grand coup de /etc/rc.d/autofs start ou quelque chose de ce goût-là.

Si tout a bien fonctionné, vous devriez pouvoir accéder à votre montage distant dans le répertoire /media/sshfs/votre_montage ;) .

Encore un truc un peu lourd à configurer mais diablement efficace.

Si vous cherchez un colorscheme low-contrast à coller dans votre .Xdefaults, c’est gagné, c’est gagné.
Je suis ouvert à toute proposition, même des plus osées.

Low-contrast colorscheme 1.0

Low-contrast colorscheme 1.0

  1. ! colors (low-contrast by AddiKT1ve)
  2. *foreground: #ababab
  3. *background: #292929
  4. *color0: #1b1b1b
  5. *color1: #ff6b6b
  6. *color2: #a3d46e
  7. *color3: #eaca75
  8. *color4: #435e87
  9. *color5: #cf8243
  10. *color6: #789ec6
  11. *color7: #ababab
  12. *color8: #555753
  13. *color9: #ff8d8d
  14. *color10: #c8e7a8
  15. *color11: #ffd155
  16. *color12: #587aa4
  17. *color13: #f6a24f
  18. *color14: #46a4ff
  19. *color15: #ababab

Si Gmail possède un excellent webmail, j’ai été tenté d’utiliser mutt pour lire et envoyer mes mails depuis mon interface préférée : un terminal.

Avant tout, activez le support de l’IMAP pour votre compte Gmail dans les options sur gmail.com. Ça y est, vous venez d’utiliser le webmail pour la dernière fois :mrgreen: .

Ensuite, eh bien vous installez mutt, et vous copiez ceci dans ~/.muttrc :

  1. # ~/.muttrc
  2. # AddiKT1ve <the.addikt1ve@gmail.com>
  3.  
  4. # Identification
  5. set imap_user = "LOGIN@gmail.com"
  6. set imap_pass = "PASSWORD"
  7. # Configuration Compte
  8. set smtp_url = "smtp://LOGIN@smtp.gmail.com:587/"
  9. set smtp_pass = "PASSWORD"
  10. set from = "LOGIN@gmail.com"
  11. set realname = "LOGIN"
  12. # Configuration Gmail
  13. set folder = "imaps://imap.gmail.com:993"
  14. set spoolfile = "+INBOX"
  15. set postponed="+[Gmail]/Drafts"
  16. # Utilisation du cache
  17. set header_cache=~/.mutt/cache/headers
  18. set message_cachedir=~/.mutt/cache/bodies
  19. set certificate_file=~/.mutt/certificates
  20. set record="~/.mutt/sent"
  21. # Une signature
  22. set signature="~/.mutt/.signature"
  23.  
  24. set move = no
  25.  
  26. set sort = ‘threads’
  27. set sort_aux = ‘last-date-received’
  28. set imap_check_subscribed
  29.  
  30. ignore "Authentication-Results:"
  31. ignore "DomainKey-Signature:"
  32. ignore "DKIM-Signature:"
  33. hdr_order Date From To Cc
  34.  
  35. # Heures et dates françaises
  36. set locale="fr_FR.UTF-8"
  37. set charset="utf-8"     # character set for your terminal
  38. set assumed_charset="utf-8"
  39. set send_charset="utf-8:iso-8859-15:us-ascii"
  40. set date_format="%A %d %b %Y à %H:%M:%S (%Z)"
  41. # Meilleure lisibilité des citations
  42. set attribution="Le %d, %n a écrit :"
  43. set forward_format="[Fwd: %s]"
  44. set forward_quote
  45.  
  46. # GPG (optionnel)
  47. set pgp_decode_command="gpg %?p?–passphrase-fd 0? –no-verbose –batch –output – %f"
  48. set pgp_verify_command="gpg –no-verbose –batch –output – –verify %s %f"
  49. set pgp_decrypt_command="gpg –passphrase-fd 0 –no-verbose –batch –output – %f"
  50. set pgp_sign_command="gpg –no-verbose –batch –output – –passphrase-fd 0 –armor –detach-sign –textmode %?a?-u %a? %f"
  51. set pgp_clearsign_command="gpg –no-verbose –batch –output – –passphrase-fd 0 –armor –textmode –clearsign %?a?-u %a? %f"
  52. set pgp_encrypt_only_command="pgpewrap gpg –batch –quiet –no-verbose –output – –encrypt –textmode –armor –always-trust –encrypt-to 0xVOTRECLEF_ID — -r %r — %f"
  53. set pgp_encrypt_sign_command="pgpewrap gpg –passphrase-fd 0 –batch –quiet –no-verbose –textmode –output – –encrypt –sign %?a?-u %a? –armor –always-trust –encrypt-to 0xVOTRECLEF_ID — -r %r — %f"
  54. set pgp_import_command="gpg –no-verbose –import -v %f"
  55. set pgp_export_command="gpg –no-verbose –export –armor %r"
  56. set pgp_verify_key_command="gpg –no-verbose –batch –fingerprint –check-sigs %r"
  57. set pgp_list_pubring_command="gpg –no-verbose –batch –with-colons –list-keys %r"
  58. set pgp_list_secring_command="gpg –no-verbose –batch –with-colons –list-secret-keys %r"
  59. set pgp_autosign=yes
  60. set pgp_sign_as=0xVOTRECLEF_ID
  61. set pgp_replyencrypt=yes
  62. set pgp_timeout=1800
  63. set pgp_good_sign="^gpg: Good signature from"
  64.  
  65. # Couleurs (meilleure lisibilité)
  66. color attachment magenta default            # attachments
  67. color body brightred default "(ftp|http)://[^ ]+"       # point out URLs
  68. color body brightcyan default [-a-z_0-9.]+@[-a-z_0-9.]+ # e-mail addresses
  69. color bold brightblue default               # boldface text
  70. color error brightwhite red                 # error messages
  71. color hdrdefault magenta default            # default color of message header
  72. color header brightmagenta default ^(From): # From and Subject header
  73. color header brightwhite default ^(Subject): # From and Subject header
  74. color header brightwhite default ^(Date): # Date header
  75. color header white default ^(In-Reply-To):
  76. color indicator brightred default                   # indicator bar
  77. color markers brightblue default            # wrapped line markers (+)
  78. color message brightblack green             # status messages
  79. color normal default default                # default
  80. color quoted yellow default                 # quoted text, 1st quote level
  81. color quoted1 green default                 # quoted text, 2nd quote level
  82. color quoted2 brightblue default            # quoted text, 3rd quote level
  83. color quoted3 blue default                  # quoted text, 4th quoet level
  84. color search black yellow                   # matched search patterns in pager
  85. color signature red default                 # the signature (after sigdashes)
  86. color status default blue                   # status lines
  87. color tilde brightblue default              # « ~ » used to pad blank lines
  88. color tree green default                    # thread tree in the index menu
  89. color underline brightgreen default         # underlined text
  90.  
  91. # Binding
  92. bind index "^" imap-fetch-mail
Mutt + Gmail + IMAP

Mutt + Gmail + IMAP

Et puis, quel plus grand plaisir que celui d’écrire ses mails avec vim ?

rOotix: avance tortue 2
rOotix: tourne 90
rOotix: lance hurd
rOotix: attend 100 ans
rOotix: ‘panne électrique’
rOotix: relance tortue

Je cherchais un compromis entre mon Openbox – que j’aime au plus haut point – et un tiling-WM tel que WMFS. A priori, vu l’utilisation relativement limitée que j’ai des capacités de tiling d’un tel WM, j’ai trouvé la solution !

Certes, elle est largement criticable par les puristes du tiling, mais ses avantages sont multiples : souplesse et légèreté principalement, puisque comme vous allez le voir, il suffit d’utiliser… les raccourcis clavier d’Openbox !

Ceci à rajouter dans la section <keyboard> de votre ~/.config/openbox/rc.xml :

    <!-- Keybindings for intelligent maximizing -->
    <keybind key="W-Right">
      <action name="GrowtoEdgeEast" />
    </keybind>
    <keybind key="W-Up">
      <action name="GrowtoEdgeNorth" />
    </keybind>
    <keybind key="W-Left">
      <action name="GrowtoEdgeWest" />
    </keybind>
    <keybind key="W-Down">
      <action name="GrowtoEdgeSouth" />
    </keybind>

Un petit coup de openbox --reconfigure, et vous pouvez à présent utiliser Windows + Droite/Haut/Gauche/Bas afin d’étirer vos fenêtres vers un bord – que ce soit celui du bureau ou celui d’une autre fenêtre, c’est ça l’astuce.

Du tiling avec Openbox

Du tiling avec Openbox

Ne me remerciez pas, je tiens ça de Jake Tolbert.

Truster un marché, c’est mal, c’est même très mal. Surtout quand ce n’est pas moi qui le fais !

Je n’ai rien contre le Site du Zéro, mais je ne suis pas d’accord pour qu’un site centralise des centaines de tutoriels sans laisser aux apporteurs du contenu le choix de leur plate-forme. Lorsque l’on a écrit des pages et des pages de howto et que l’on doit le réviser pour des raisons de style dans un premier temps, et de formatage dans un second temps, on risque assez rapidement de laisser tomber. Or, individuellement, comment un blogueur peut-il faire connaitre ses travaux, ses recherches ? À moins d’être de la haute-blogosphère… Difficilement.

Je ne prétends pas avoir eu l’idée du siècle, et surtout pas de l’avoir assez approfondie, mais je crois tenir quelque chose : un planet. C’est avantageux pour celui qui publie, car il gagne en visibilité, et c’est avantageux pour le lecteur, car il peut s’inscrire à un flux de tutoriels virtuellement centralisés. Enfin, c’est efficace du côté de l’administration. Pas de ligne éditoriale à tenir, pas de choix à faire : neutralité et rapidité ; puisque sans sélection préalable, la publication est presque immédiate.
Il suffit d’inscrire le flux de ses tutoriels, par exemple pour WordPress http://blog.com/tag/howto/feed/ (selon la structure de vos permaliens).
Et pour que ça fonctionne, il faudrait des testeurs ; plein de gens sympas pour me demander d’inscrire leurs feeds sur le planet.

Qui en est ?

Pour cette édition 2009 des RMLL, le groupe de feignasses que nous sommes s’est décidé à bouger jusqu’à Nantes, et mieux encore : à tenir un stand !

RMLL 2009 à Nantes

Le comité organisateur s’est engagé à offrir une 10e édition orientée sur la migration et la conduite au changement vers le Libre, des plus enrichissante. Comme chaque année, conférences, tables rondes, et ateliers seront proposés aux visiteurs durant 5 jours. Ceux-ci, qu’ils soient experts, novices, professionnels, ou simples curieux pourront trouver les interlocuteurs qui répondront à leurs questions au travers des nombreux thèmes abordés. Sans oublier bien entendu le village associatif où chacun pourra se promener.

Je serai présent sur le site – au camping, en tout cas – du Mardi 7 au Samedi 11, afin d’assiter à tout un tas de conférences chiantes et surtout d’organiser à l’arrache tout un tas d’install parties. Vous pourrez donc me retrouver aux stands Inter-GUL Ouest et, bien entendu, Arch Linux ;) .

Le lieu définitif est fixé (à un mois du départ, il était temps) : le mouvement de masse désorganisé se déroulera dans les locaux de Polytech’ Nantes.

Ça va être sympa tout plein, je n’hésiterai donc pas à reprendre mot pour mot herberts : viendez les gens !