Vous êtes ici : Accueil Debian GNU/Linux Applications Web Syndication de contenus Installer le lecteur de flux Tiny Tiny RSS sur Debian

Installer le lecteur de flux Tiny Tiny RSS sur Debian

Par Pierre-Yves Landuré Dernière modification 19/05/2012 12:07

Tiny Tiny RSS est un agrégateur de flux de syndication écrit en PHP et tirant parti des technologies AJAX. C'est une solution adéquate si vous souhaitez lire vos flux RSS depuis plusieurs ordinateurs.

Ce guide a été testé sur:

  • Debian 5.0 Lenny
  • Debian 6.0 Squeeze

Prérequis

Ce guide nécessite un serveur MySQL disposant du script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.

Ce guide nécessite un serveur HTTP avec support du PHP disposant au choix d'un des scripts suivant:

Paramètres

Renseignez le nom de domaine où sera disponible l'application:

DOMAIN="rss.domaine-exemple.fr"

Renseignez l'adresse mél utilisée pour l'envoi des messages par l'application:

FROM_EMAIL="no-reply@domaine-exemple.fr"

Renseignez l'email notifiée de l'inscription de nouveaux utilisateurs:

NOTIFY_EMAIL="firstname.lastname@google.com"

Renseignez le nom d'hôte de votre serveur MySQL (si vous ne savez pas de quoi il s'agit, ne modifiez pas cette valeur):

MYSQL_HOST="localhost"

Si votre serveur MySQL n'est pas local, ce guide effectuera une connexion SSH pour y créer la base de données.

Installation

Installez les modules PHP nécessaires au bon fonctionnement de l'application:

command apt-get install php5-mysql php5-xmlrpc mysql-client \
  php5-curl php5-cli

Récupérez l'URL de la dernière version de l'application:

TTRSS_URL=$(command wget --quiet --output-document=- "http://tt-rss.org/redmine/" \
    | command grep -e "http://tt-rss.org/download/tt-rss-.*.tar.gz" \
    | command sed -e 's|.*"\(http://tt-rss.org/download/tt-rss-.*.tar.gz\)".*|\1|')
VERSION=$(command echo "${TTRSS_URL}" | command sed -e 's/.*tt-rss-\(.*\).tar.gz/\1/')

Téléchargez les sources de l'application:

command wget "${TTRSS_URL}" \
    --output-document="/tmp/tt-rss-${VERSION}.tar.gz"

Décompressez l'archive:

command tar --directory="/tmp" -xzf "/tmp/tt-rss-${VERSION}.tar.gz"

Déplacez le dossier de l'application vers son emplacement final:

command mv "/tmp/tt-rss-${VERSION}" "/opt/${DOMAIN}"

Supprimez l'archive téléchargée:

command rm "/tmp/tt-rss-${VERSION}.tar.gz"

Création de la base de données

Créez la base de données:

if [ "${MYSQL_HOST}" = "localhost" ]; then
  MYSQL_PARAMS=$(command mysql-tools create-domain-db "${DOMAIN}")
else
  command echo "Saisissez le mot de passe de l'utilisateur root MySQL :"
  command read PASSWORD
  MYSQL_PARAMS=$(command ssh "root@${MYSQL_HOST}" "command mysql-tools create-domain-db '${DOMAIN}' '$(command hostname --fqdn)' '${PASSWORD}'")
fi

Récupérez les paramètres de la nouvelle base de données:

MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \
    | cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \
    | cut --delimiter="=" --fields="2-")"
echo "${MYSQL_PARAMS}"

Initialisez le contenu de la base de données:

command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
    --host="${MYSQL_HOST}" "${MYSQL_DB}" \
      < "/opt/${DOMAIN}/schema/ttrss_schema_mysql.sql"

Créez le fichier de configuration à partir du modèle:

command cp "/opt/${DOMAIN}/config.php-dist" "/opt/${DOMAIN}/config.php"

Mettez à jour le fichier de configuration:

command sed -i \
    -e "s/\(define('DB_TYPE', \).*/\1'mysql');/" \
    -e "s/\(define('DB_HOST', \).*/\1'${MYSQL_HOST}');/" \
    -e "s/\(define('DB_NAME', \).*/\1'${MYSQL_DB}');/" \
    -e "s/\(define('DB_USER', \).*/\1'${MYSQL_USER}');/" \
    -e "s/\(define('DB_PASS', \).*/\1'${MYSQL_PASSWORD}');/" \
    "/opt/${DOMAIN}/config.php"

Mise en conformité avec la LSB

Déplacez les dossiers cache, feed-icons et lock vers un emplacement en accord avec la LSB:

command mkdir --parent "/var/cache/tt-rss/${DOMAIN}"
command mv "/opt/${DOMAIN}/cache" "/var/cache/tt-rss/${DOMAIN}/cache"
command ln -s "/var/cache/tt-rss/${DOMAIN}/cache" "/opt/${DOMAIN}/cache"
command mv "/opt/${DOMAIN}/lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer" "/var/cache/tt-rss/${DOMAIN}/Serializer"
command ln -s "/var/cache/tt-rss/${DOMAIN}/Serializer" "/opt/${DOMAIN}/lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer"
command chown -R www-data:www-data "/var/cache/tt-rss/${DOMAIN}"
command mkdir --parent "/var/lock/tt-rss/"
command mv "/opt/${DOMAIN}/lock" "/var/lock/tt-rss/${DOMAIN}"
command chown -R www-data:www-data "/var/lock/tt-rss/${DOMAIN}"
command ln -s "/var/lock/tt-rss/${DOMAIN}" "/opt/${DOMAIN}/lock"
command mkdir --parent "/var/lib/tt-rss/${DOMAIN}/"
command mv "/opt/${DOMAIN}/feed-icons" "/var/lib/tt-rss/${DOMAIN}/feed-icons"
command chown -R www-data:www-data "/var/lib/tt-rss/${DOMAIN}/feed-icons"
command ln -s "/var/lib/tt-rss/${DOMAIN}/feed-icons" "/opt/${DOMAIN}/feed-icons"

Mise à jour régulière des flux

Ajustez la configuration pour utiliser le démon de mise à jour des flux:

command sed -i \
    -e "s/\(define('ENABLE_UPDATE_DAEMON', \).*/\1true);/" \
    "/opt/${DOMAIN}/config.php"

Ajustez l'emplacement des fichiers lock du démon:

command mkdir --parent "/var/run/tt-rss/${DOMAIN}"
command sed -i \ -e "s|\(define('LOCK_DIRECTORY', \).*|\1'/var/run/tt-rss/${DOMAIN}');|" \ "/opt/${DOMAIN}/config.php"

Téléchargez le fichier de configuration du script init.d de l'application:

command wget "http://howto.biapy.com/fr/debian-gnu-linux/applications-web/syndication-de-contenus/installer-le-lecteur-de-flux-tiny-tiny-rss-sur-debian/tt-rss.default/at_download/file" \
    --output-document="/etc/default/tt-rss-${DOMAIN}"
command sed -i -e "s|^TTRSS_PATH=.*|TTRSS_PATH=\"/opt/${DOMAIN}\"|" "/etc/default/tt-rss-${DOMAIN}"

Téléchargez le script init.d de l'application:

command wget "http://howto.biapy.com/fr/debian-gnu-linux/applications-web/syndication-de-contenus/installer-le-lecteur-de-flux-tiny-tiny-rss-sur-debian/tt-rss.initd/at_download/file" \
    --output-document="/etc/init.d/tt-rss-${DOMAIN}"
command sed -i -e "s/DOMAIN/${DOMAIN}/g" "/etc/init.d/tt-rss-${DOMAIN}"
command chmod +x "/etc/init.d/tt-rss-${DOMAIN}"

Ajoutez le démon à l'initialisation du système:

command update-rc.d "tt-rss-${DOMAIN}" defaults

Fin de la configuration

Activez l'utilisation de SimplePie, activez le mode multi-utilisateurs et déclarez l'application configurée:

command sed -i \
-e "s|\(define('SELF_URL_PATH', \).*|\1'http://${DOMAIN}/');|" \
 -e "s/\(define('DEFAULT_UPDATE_METHOD', \).*/\11);/" \
-e "s/\(define('SIMPLEPIE_CACHE_IMAGES', \).*/\1true);/" \
-e "s/\(define('SINGLE_USER_MODE', \).*/\1false);/" \
-e "s/\(define('DIGEST_FROM_ADDRESS', \).*/\1'${FROM_EMAIL}');/" \
-e "s/\(define('REG_NOTIFY_ADDRESS', \).*/\1'${NOTIFY_EMAIL}');/" \
-e "s/\(define('ISCONFIGURED', \).*/\1true);/" \
"/opt/${DOMAIN}/config.php"

Démarrez le démon:

/etc/init.d/tt-rss-${DOMAIN} start

Créez la configuration du serveur HTTP pour votre domaine:

if [ -x "/usr/bin/a2tools" ]; then
  command a2tools add-vhost "${DOMAIN}" "/opt/${DOMAIN}/"
fi
if [ -x "/usr/bin/lighty-tools" ]; then
  command lighty-tools add-vhost "${DOMAIN}" "/opt/${DOMAIN}/"
fi

Votre installation devrait maintenant être disponible sur votre nom de domaine.

Utilisez les informations suivantes pour vous connecter à Tiny Tiny RSS :

  • Identifiant : admin
  • Mot de passe : password

Utilisation quotidienne

Paramétrer votre compte utilisateur

Voici les options que j'ai activé pour avoir un compte utilisateur adapté à mes besoins :

  • Purger les articles plus vieux que le nombre de jours donné (0 pour ne jamais purger) : 0 (je désactive la suppression des articles trop vieux)
  • Utiliser les catégories de flux : Yes (J'active la gestion des flux par catégories)
  • Activer la barre de recherche : Yes (J'active la possibilité de rechercher dans le contenu des flux)
  • Demander confirmation pour marquer un flux comme lu : No (Je désactive la confirmation lorsque je veux marquer l'ensemble d'un flux comme lu)
  • Éliminer les étiquettes non sûres des articles : No (Je désactive la simplification du code source HTML des articles des flux. C'est moins sécurisé, mais ca permet de conserver les balises <code>)

Intégration dans Mozilla Firefox

Tiny Tiny RSS s'intègre facilement dans Mozilla Firefox. Et ceci de 2 manières :

  • Vous pouvez utiliser Tiny Tiny RSS comme gestionnaire de flux dans Mozilla Firefox. Cela se configure à partir de vos préférences de flux.
  • Vous pouvez installer un plugin qui vérifie la présence de nouveaux articles régulièrement : Tiny Tiny RSS Notifier.

Sauvegardes

Pour sauvegarder votre installation, je vous propose d'utiliser Backup Manager. Pour l'installer, vous pouvez suivre le guide:

Installer et configurer Backup Manager sur Debian

Une fois Backup Manager installé, configurez la sauvegarde des fichiers de l'application:

command backup-manager-tools add "/opt/${DOMAIN}"
command backup-manager-tools add "/var/lib/tt-rss/${DOMAIN}"

Important: Sauvegarder les fichiers ne suffit pas ! Il faut aussi sauvegarder la base de données. La procédure pour ce faire est disponible dans l'article MySQL sur Debian.

Mise à jour de Tiny Tiny RSS

Si une nouvelle version est sortie, et que vous souhaitez mettre à jour votre installation de Tiny Tiny RSS, voici la procédure à suivre. En premier lieu, installez les outils nécessaires :

command apt-get install patch

Renseignez le domaine de votre installation :

DOMAIN="rss.domaine-exemple.fr"

Placez-vous dans le répertoire de votre installation de Tiny Tiny RSS :

cd "/opt/${DOMAIN}"

Créez un fichier de différence pour préserver votre configuration :

command diff -Nru config.php-dist config.php > "/tmp/tt-rss-config-diff.patch"

Récupérez le numéro de la nouvelle version de Tiny Tiny RSS :

TTRSS_URL=$(command wget --quiet --output-document=- "http://tt-rss.org/redmine/" \
    | command grep -e "http://tt-rss.org/download/tt-rss-.*.tar.gz" \
    | command sed -e 's|.*"\(http://tt-rss.org/download/tt-rss-.*.tar.gz\)".*|\1|')
VERSION=$(command echo "${TTRSS_URL}" | command sed -e 's/.*tt-rss-\(.*\).tar.gz/\1/')

Et lancez le téléchargement :

command wget "${TTRSS_URL}" \
    --output-document="/tmp/tt-rss-${VERSION}.tar.gz"

Une fois le téléchargement terminé, décompressez le fichier à l'emplacement adéquat :

command tar --directory='/tmp' -xzf "/tmp/tt-rss-${VERSION}.tar.gz"

Créez le fichier de configuration :

command cp "/tmp/tt-rss-${VERSION}/config.php-dist" "/tmp/tt-rss-${VERSION}/config.php"

Et patchez le afin de récupèrer votre configuration :

command patch --directory="/tmp/tt-rss-${VERSION}" --strip=0 < "/tmp/tt-rss-config-diff.patch"

Sauvegardez votre ancienne installation de Tiny Tiny RSS :

if [ -e "/opt/${DOMAIN}.old" ]; then
command rm -r "/opt/${DOMAIN}.old"
fi
command mv "/opt/${DOMAIN}" "/opt/${DOMAIN}.old"

Et mettez en place la nouvelle version :

command mv "/tmp/tt-rss-${VERSION}" "/opt/${DOMAIN}"

Enfin, nous récupérons le dossier icons de notre installation précédente:

command rm -r "/opt/${DOMAIN}/cache"
command cp -a "/opt/${DOMAIN}.old/cache" "/opt/${DOMAIN}"
command rm -r "/opt/${DOMAIN}/lock"
command cp -a "/opt/${DOMAIN}.old/lock" "/opt/${DOMAIN}"
command rm -r "/opt/${DOMAIN}/feed-icons"
command cp -a "/opt/${DOMAIN}.old/feed-icons" "/opt/${DOMAIN}"
command rm -r "/opt/${DOMAIN}/lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer"
command cp -a "/opt/${DOMAIN}.old/lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer" "/opt/${DOMAIN}/lib/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer"

Identifiez-vous en tant qu'admin pour mettre à jour la base de données si nécessaire. Vérifiez que tout fonctionne correctement. Une fois ceci fait, redémarrez le démon de mise à jour des flux:

/etc/init.d/tt-rss-${DOMAIN} restart

Vous pouvez supprimer l'archive téléchargée et la sauvegarde de l'ancienne installation :

command rm "/tmp/tt-rss-${VERSION}.tar.gz"
command rm -r "/opt/${DOMAIN}.old"

Remerciements

  • Merci aux développeurs de Tiny Tiny RSS (tout particulièrement à fox qui porte ce projet à bout de bras).
  • Merci à Mdrolo qui a inscrit le flux de ce site dans son Tiny Tiny RSS et me l'a ainsi fait découvrir.

Pièces jointes