Outils personnels
Vous êtes ici : Accueil GNU / Linux Debian Installer Tiny Tiny RSS sur Debian
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer Tiny Tiny RSS sur Debian

Par Pierre-Yves Landuré - Dernière modification 19/12/2012 20:04

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. Je suis tombé dessus car l'un des visiteurs de mon site utilise cette solution. S'il se reconnaît, je le salue :D

Ce guide est obsolète. Utilisez la nouvelle version sur le Help Desk Biapy:

Installer le lecteur de flux Tiny Tiny RSS sur Debian

Ce guide a été testé avec les distributions suivantes :

  • 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 ou sera disponible l'application :

DOMAIN="rss.domaine-exemple.fr"

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

Redémarrez votre serveur HTTP pour prendre en compte les modifications :

test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload

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"

Configuration

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

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

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 cat /etc/mailname)' '${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"

Il vous faut maintenant modifier la configuration de Tiny Tiny RSS. Cela se fait par les lignes de commandes suivantes :

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"

Mettez en place le dossier cache :

command mkdir --parent "/var/cache/tt-rss"
command mv "/opt/${DOMAIN}/cache" "/var/cache/tt-rss/${DOMAIN}"
command ln -s "/var/cache/tt-rss/${DOMAIN}" "/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}"

Mettez en place le dossier lock :

command mkdir --parent "/var/lock/tt-rss"
command mv "/opt/${DOMAIN}/lock" "/var/lock/tt-rss/${DOMAIN}"
command ln -s "/var/lock/tt-rss/${DOMAIN}" "/opt/${DOMAIN}/lock"
command chown -R www-data:www-data "/var/lock/tt-rss/${DOMAIN}"

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 de Tiny Tiny RSS devrait maintenant être disponible sur votre nom de domaine.

Mise en place d'une page d'identification

Pour mettre en place une page d'identification, en premier lieu, activez le mode multi-utilisateurs :

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

Vous pouvez alors utiliser les informations suivantes pour vous connecter à Tiny Tiny RSS :

  • Identifiant : admin
  • Mot de passe : password

Utiliser SimplePie à la place de Magpie pour parser les fichiers RSS

SimplePie est un parseur de flux RSS plus puissant que Magpie. Cependant il lui faut utiliser curl afin de pouvoir lire les flux en HTTPS ou ceux nécessitant un mot de passe.

Commencez par installer l'extension curl de php :

command apt-get install php5-curl

Et configurez Tiny Tiny RSS pour utiliser SimplePie :

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

Mise à jour régulière des flux

Il est souhaitable que vos flux soient mis à jour même si vous ne vous connectez pas régulièrement à Tiny Tiny RSS. Pour ce faire, installez la ligne de commande PHP :

command apt-get install php5-cli

Modifiez la configuration de façon à ce que la mise à jour des flux par un démon soit possible :

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

Et changez l'emplacement des fichiers verrou :

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

Créez le dossier destiné à contenir les fichiers lock :

command mkdir --parent "/var/run/tt-rss"

Téléchargez le fichier de configuration du script init.d de Tiny Tiny RSS :

command wget "http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-tiny-tiny-rss-sur-debian-4-0-etch/tt-rss-default" \
    --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 Tiny Tiny RSS :

command wget "http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-tiny-tiny-rss-sur-debian-4-0-etch/tt-rss-initd" \
    --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}"

Vous pouvez maintenant lancer le script de mise à jour avec la commande :

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

et l'arrêter avec :

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

Si vous souhaitez que cette commande soit lancée au démarrage de votre ordinateur, exécutez la commande :

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

De plus, le démon de mise à jour n'étant pas très stable et ayant tendance à planter régulièrement, il est recommandé de créer un script cron pour le redémarrer si nécessaire :

command echo "#\!/bin/sh
# Start tt-rss-${DOMAIN} udpate daemon if necessary :

if [ -x '/etc/init.d/tt-rss-${DOMAIN}' ]; then
        /etc/init.d/tt-rss-${DOMAIN} start
fi" > "/etc/cron.hourly/tt-rss-${DOMAIN}"
command chmod +x "/etc/cron.hourly/tt-rss-${DOMAIN}"

Le démon ne sera lancé que s'il n'est pas démarrer, grâce à la vérification de la présence d'un fichier verrou. Ce script cron ne pose donc aucun problème.

Modifier l'emplacement de stockage des icônes des flux

Par défaut, les icônes des flux sont cachées dans le dossier icons. Si vous souhaitez modifier ce comportement (par exemple parceque Tiny Tiny RSS est installé sur une partition en lecture seule), voici la procédure à suivre.

En premier lieu, créez le dossier destiné à contenir les icônes :

command mkdir --parent "/var/lib/tt-rss/${DOMAIN}/icons"

Modifiez ses permissions :

command chown -R www-data:www-data "/var/lib/tt-rss/${DOMAIN}/icons"

Ensuite, supprimez dossier icons de Tiny Tiny RSS :

command rm -r "/opt/${DOMAIN}/icons"

Et remplacez le par un lien symbolique vers votre nouveau dossier d'icônes :

command ln -s "/var/lib/tt-rss/${DOMAIN}/icons" "/opt/${DOMAIN}/feeds-icons"

Si vous le souhaitez, vous pouvez aussi modifier la configuration de Tiny Tiny RSS :

command sed -i \
    -e "s|\(define('ICONS_DIR', \).*|\1'/var/lib/tt-rss/${DOMAIN}/icons');|" \
    -e "s|\(define('ICONS_URL', \).*|\1'feeds-icons');|" \
    "/opt/${DOMAIN}/config.php"

Sauvegardes

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

Installer et configurer Backup Manager sur Debian

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

command update-bm-folders add "/opt/${DOMAIN}"
command update-bm-folders 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 mon article MySQL sur Debian.

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.

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 :

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 cp -a "/opt/${DOMAIN}.old/feeds-icons" "/opt/${DOMAIN}"
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/feeds-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.
Attachements

salut

Posté par mdrolo le 11/01/2008 09:12
ha je croie donc me reconnaitre :) salut !
J'avoue connaitre http://howto.landure.fr depuis peut et j'y trouve plein de bonnes infos :)
Merci donc de nous faire partager tout ceci.

Merci Mdrolo

Posté par Pierre-Yves Landuré le 11/01/2008 09:28
Merci merci merci :D Je cherchais un outil comme Tiny Tiny RSS depuis un certain temps déjà, et c'est vraiment exactement ce dont j'avais besoin :D J'avoue que quand je suis tombé sur ton site de flux en regardant mes statistiques, (c'était hier) j'ai fait "Faut que j'installe ça vite fait". Et je suis séduit.

Donc merci de tes visites :D

problème de connection hors lan.

Posté par pollux le 11/03/2010 14:22
Bonjour,

j'ai réussi à installer tinytinyrss sur mon serveur perso, et il fonctionne parfaitement en lan. Cependant, bien que je puisse l'utiliser et y accéder presque normalement depuis le web, j'ai l'erreur récurrente qui revient : " Session failed to validate (incorrect IP) ".
Et qui m'oblige à me relogguer presque toutes les 2 minutes.

Une idée de la raison ? Merci d'avance.

/opt : Repertoire WEB

Posté par franck le 02/11/2011 09:05
Bonjour,

Je me permets de vous contacter car il y a quelque chose que j'ai du mal m'expliquer.
Pourquoi mettez vous les sites Web dans /OPT??
Peut etre une question bete, mais je ne comprend pas. (donc je m'interroge)

Je mets en place un petit server perso sous debian, et je souhaite faire les choses correctement.

J'ai cherche, mais je ne trouve pas d'explication.
Sur le site : (http://www.debianadmin.com/linux-directory-structure-overview.html), j'ai trouve cette descrition du /opt :
A rarely used directory in Linux for Optional Software Packages. This is extensively used in UNIX OS like Sun Solaris where the software packages are installed

Cordialement,

Franck.

/opt

Posté par Lone Wolf le 02/11/2011 09:49
Bonjour,

je les met dans /opt pour plusieurs raisons :

1- le contenu de /var/www est exposé au public par la configuration par défaut de Apache.
2- /opt est destiné à contenir des logiciels, et je considère les applications Web comme des logiciels.
3- /opt est rarement utilisé, et peut être préservé en écriture si l'on est un peu paranoiaque (d'ou le fait que je place les données des applications web dans /var/lib"

C'est une décision semi arbitraire de ma part, basée sur des exemples d'utilisation de /opt dans des cas similaires (bien que je ne saurais plus vous citer lesquels). L'avantage de /opt, c'est qu'il évite de méler les applications web aux fichiers installés par les packets Deb, tout en mettant en avant l'aspect applicatif de ces sites.

cela vous aide-t-il ?

Cordialement,
Pierre-Yves Landuré
ps: ce site est en cours de refonte sur http://howto.biapy.com/

/OPt

Posté par Franck le 07/11/2011 09:42
Bonjour,

Merci pour votre reponse, cela a eclaire ma lanterne.
Je comprends votre logique.

Cordialement,

Frnack.

Question complementaire

Posté par Franck le 14/11/2011 14:42
Bonjour,

je sais que ceic n'est pas un forum, mais puis je me permettre de vous demander votre avis?

je suis actuellement en cours de montage d'une machine pour etre autonome.
Est il raisonable selon vous de mettre tous les services (sites web/mail/etc ....) sur la machine qui fait office de Firewall ???
sous linux, cela est realisable sans probleme, mais est ce raisonable??

Merci par avance,

Franck.

Firewall + server

Posté par Lone Wolf le 14/11/2011 16:08
Bonjour,

basiquement, je dirais oui, c'est raisonnable.

personnellement, je complique les choses en mettant en place un hyperviseur Xen et en dédiant une machine virtuel par fonction (serveur mysql, serveur mail, serveur php, etc...) afin de cloisonner les fonctionnalités.

C'est assez complexe à mettre en place, mais cela permet de limiter la casse en cas de faille de sécurité sur l'un des services.

basiquement, utiliser le firewall comme serveur n'est pas rédibitoire.. Faite toutefois très attention à la sécurité de vos applications PHP.

Pour votre information, ce site est en cours de réécriture totale sur http://howto.biapy.com/ . Je vous invite à utiliser cette nouvelle adresse pour obtenir des informations à jour.

Bonne continuation.

Installation

Posté par Franck le 15/11/2011 06:43
Bonjour,

Merci pour votre réponse.
J'avais vu dans votre précédent commentaire la nouvelle URL.
Je l'utilise.

Si j'ai bien compris, vous utilisez une seule machine à 2 interfaces (1 wan et 1 lan)
Pour tous vos services. Je présume que les services écoutes sur l'interface Lan avec des règles de nat/fw pour les ouvrir sur l'extérieur.

Merci a vous.

À bientôt sur votre nouveau site.

Franck.

Page not found

Posté par Mat le 02/12/2011 00:21
Bonjour et merci pour vos précieux scripts!

Je ne comprend pas, j'ai suivi votre procédure à la lettre (jusqu'à "Modifier l'emplacement de stockage des icônes des flux")...je n'ai eu aucune erreur, et au final, lorque je tente d'accéder à rss.mondomaine.com, j'obtiens un "page not found".

J'ai pourtant vérifié que le site soit bien activé dans apache, j'ai relancé ce dernier, mais rien n'y fait.

Je n'ai rien modifié au fichier de configuration apache qui a été créé par vos commandes...auriez-vous une idée de ce qui pourrait clocher?

Merci d'avance!

Vieux guide, vieux site

Posté par Pierre-Yves Landuré le 02/12/2011 08:14
Bonjour,

ce guide n'est plus tenu à jour car je suis en train de réécrire complétement ce site. Je vous invite à suivre la nouvelle version de ce guide :

http://howto.biapy.com/debian-gnu-linux/applications-web/syndication-de-contenus/installer-le-lecteur-de-flux-tiny-tiny-rss-sur-debian

Pour ce qui est du page not found, vérifiez les valeurs "ServerName" et "DocumentRoot" dans la configuration du VirtualHost Apache 2. Je ne vois pas d'autre source possible pour l'erreur.

Bon courage

BlogBang
Navigation
 

Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio