[![Statut de la compilation ](https://travis-ci.org/FreshRSS/FreshRSS.svg )](https://travis-ci.org/FreshRSS/FreshRSS)
[![Dons Liberapay ](https://img.shields.io/liberapay/receives/FreshRSS.svg?logo=liberapay )](https://liberapay.com/FreshRSS/donate)
* Lire ce document sur [github.com/FreshRSS/FreshRSS/ ](https://github.com/FreshRSS/FreshRSS/blob/master/README.md ) pour avoir les images et liens corrects.
* [English version ](README.md )
# FreshRSS
FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de [Leed ](http://leed.idleman.fr/ ) ou de [Kriss Feed ](https://tontof.net/kriss/feed/ ).
Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable.
Il permet de gérer plusieurs utilisateurs, dispose d’un mode de lecture anonyme, et supporte les étiquettes personnalisées.
Il y a une API pour les clients (mobiles), ainsi qu’une [interface en ligne de commande ](cli/README.md ).
Grâce au standard [WebSub ](https://www.w3.org/TR/websub/ ) (anciennement [PubSubHubbub ](https://github.com/pubsubhubbub/PubSubHubbub )),
FreshRSS est capable de recevoir des notifications push instantanées depuis les sources compatibles, telles [Mastodon ](https://joinmastodon.org ), [Friendica ](https://friendi.ca ), [WordPress ](https://wordpress.org/plugins/pubsubhubbub/ ), Blogger, FeedBurner, etc.
Enfin, il permet l’ajout d’[extensions](#extensions) pour encore plus de personnalisation.
Les demandes de fonctionnalités, rapports de bugs, et autres contributions sont les bienvenues. Privilégiez pour cela des [demandes sur GitHub ](https://github.com/FreshRSS/FreshRSS/issues ).
Nous sommes une communauté amicale.
* Site officiel : https://freshrss.org
* Démo : http://demo.freshrss.org/
* Licence : [GNU AGPL 3 ](https://www.gnu.org/licenses/agpl-3.0.fr.html )
![Logo de FreshRSS ](docs/img/FreshRSS-logo.png )
# Avertissements
FreshRSS n’est fourni avec aucune garantie.
![Capture d’écran de FreshRSS ](docs/img/FreshRSS-screenshot.png )
# [Documentation](https://freshrss.github.io/FreshRSS/fr/)
* La [documentation utilisateurs ](https://freshrss.github.io/FreshRSS/fr/users/02_First_steps.md ) pour découvrir les fonctionnalités de FreshRSS.
* La [documentation administrateurs ](https://freshrss.github.io/FreshRSS/fr/users/01_Installation.md ) pour l’installation et la maintenance de FreshRSS.
* La [documentation développeurs ](https://freshrss.github.io/FreshRSS/fr/developers/01_First_steps.md ) pour savoir comment contribuer et mieux comprendre le code source de FreshRSS.
* Le [guide de contribution ](https://freshrss.github.io/FreshRSS/fr/contributing.md ) pour nous aider à développer FreshRSS.
# Prérequis
* Un navigateur Web récent tel que Firefox / IceCat, Internet Explorer 11 / Edge (sauf certains détails), Chromium / Chrome, Opera, Safari.
* Fonctionne aussi sur mobile (sauf certaines fonctionnalités)
* Serveur modeste, par exemple sous Linux ou Windows
* Fonctionne même sur un Raspberry Pi 1 avec des temps de réponse < 1s ( testé sur 150 flux , 22k articles )
* Serveur Web Apache2 (recommandé), ou nginx, lighttpd (non testé sur les autres)
* PHP 5.3.8+ (PHP 5.4+ recommandé, et PHP 5.5+ pour les performances, ou PHP 7+ pour d’encore meilleures performances)
* Requis : [cURL ](https://secure.php.net/curl ), [DOM ](https://secure.php.net/dom ), [XML ](https://secure.php.net/xml ), [session ](https://secure.php.net/session ), [ctype ](https://secure.php.net/ctype ), et [PDO_MySQL ](https://secure.php.net/pdo-mysql ) ou [PDO_SQLite ](https://secure.php.net/pdo-sqlite ) ou [PDO_PGSQL ](https://secure.php.net/pdo-pgsql )
* Recommandés : [JSON ](https://secure.php.net/json ), [GMP ](https://secure.php.net/gmp ) (pour accès API sur plateformes < 64 bits ), [IDN ](https://secure.php.net/intl.idn ) ( pour les noms de domaines internationalisés ), [mbstring ](https://secure.php.net/mbstring ) ( pour le texte Unicode ), [iconv ](https://secure.php.net/iconv ) ( pour conversion d ’ encodages ), [ZIP ](https://secure.php.net/zip ) ( pour import / export ), [zlib ](https://secure.php.net/zlib ) ( pour les flux compressés )
* MySQL 5.5.3+ (recommandé), ou SQLite 3.7.4+, ou PostgreSQL 9.2+
# Téléchargement
Voir la [liste des versions ](../../releases ).
## À propos des branches
* Utilisez [la branche master ](https://github.com/FreshRSS/FreshRSS/tree/master/ ) si vous souhaitez des versions moins fréquentes et stables.
* Utilisez [la branche dev ](https://github.com/FreshRSS/FreshRSS/tree/dev ) si vous vouler une publication continue (rolling release) avec les dernières nouveautés, ou bien aider à tester ou développer la future version stable.
# [Installation](https://freshrss.github.io/FreshRSS/fr/users/01_Installation.html)
## Installation automatisée
* [![Docker ](https://www.docker.com/sites/default/files/horizontal.png )](./Docker/)
* [![YunoHost ](https://install-app.yunohost.org/install-with-yunohost.png )](https://install-app.yunohost.org/?app=freshrss)
* [![Cloudron ](https://cloudron.io/img/button.svg )](https://cloudron.io/button.html?app=org.freshrss.cloudronapp)
## Installation manuelle
1. Récupérez l’application FreshRSS via la commande git ou [en téléchargeant l’archive ](../releases )
2. Placez l’application sur votre serveur (la partie à exposer au Web est le répertoire `./p/` )
3. Le serveur Web doit avoir les droits d’écriture dans le répertoire `./data/`
4. Accédez à FreshRSS à travers votre navigateur Web et suivez les instructions d’installation
* ou utilisez [l’interface en ligne de commande ](cli/README.md )
5. Tout devrait fonctionner :) En cas de problème, n’hésitez pas à [nous contacter ](https://github.com/FreshRSS/FreshRSS/issues ).
6. Des paramètres de configuration avancés peuvent être vus dans [config.default.php ](config.default.php ) et modifiés dans `data/config.php` .
7. Avec Apache, activer [`AllowEncodedSlashes` ](https://httpd.apache.org/docs/trunk/mod/core.html#allowencodedslashes ) pour une meilleure compatibilité avec les clients mobiles.
Plus d’informations sur l’installation et la configuration serveur peuvent être trouvées dans [notre documentation ](https://freshrss.github.io/FreshRSS/fr/users/01_Installation.md ).
### Exemple d’installation complète sur Linux Debian/Ubuntu
```sh
# Si vous utilisez le serveur Web Apache (sinon il faut un autre serveur Web)
sudo apt-get install apache2
sudo a2enmod headers expires rewrite ssl #Modules Apache
# Exemple pour Ubuntu >= 16.04, Debian >= 9 Stretch
sudo apt install php php-curl php-gmp php-intl php-mbstring php-sqlite3 php-xml php-zip
sudo apt install libapache2-mod-php #Pour Apache
sudo apt install mysql-server mysql-client php-mysql #Base de données MySQL optionnelle
sudo apt install postgresql php-pgsql #Base de données PostgreSQL optionnelle
## Redémarrage du serveur Web
sudo service apache2 restart
# Pour FreshRSS lui-même (git est optionnel si vous déployez manuellement les fichiers d’installation)
cd /usr/share/
sudo apt-get install git
sudo git clone https://github.com/FreshRSS/FreshRSS.git
cd FreshRSS
# Si vous souhaitez utiliser la branche développement de FreshRSS
sudo git checkout -b dev origin/dev
# Mettre les droits d’accès pour le serveur Web
sudo chown -R :www-data . & & sudo chmod -R g+r . & & sudo chmod -R g+w ./data/
# Si vous souhaitez permettre les mises à jour par l’interface Web
sudo chmod -R g+w .
# Publier FreshRSS dans votre répertoire HTML public
sudo ln -s /usr/share/FreshRSS/p /var/www/html/FreshRSS
# Naviguez vers http://example.net/FreshRSS pour terminer l’installation
# (Si vous le faite depuis localhost, vous pourrez avoir à ajuster le réglage de votre adresse publique)
# ou utilisez l’interface en ligne de commande
# Mettre à jour FreshRSS vers une nouvelle version par git
cd /usr/share/FreshRSS
sudo git pull
sudo chown -R :www-data . & & sudo chmod -R g+r . & & sudo chmod -R g+w ./data/
```
Voir la [documentation de la ligne de commande ](cli/README.md ) pour plus de détails.
## Contrôle d’accès
Il est requis pour le mode multi-utilisateur, et recommandé dans tous les cas, de limiter l’accès à votre FreshRSS. Au choix :
* En utilisant l’identification par formulaire (requiert JavaScript, et PHP 5.5+ recommandé)
* En utilisant un contrôle d’accès HTTP défini par votre serveur Web
* Voir par exemple la [documentation d’Apache sur l’authentification ](https://httpd.apache.org/docs/trunk/howto/auth.html )
* Créer dans ce cas un fichier `./p/i/.htaccess` avec un fichier `.htpasswd` correspondant.
# Rafraîchissement automatique des flux
* Vous pouvez ajouter une tâche Cron lançant régulièrement le script d’actualisation automatique des flux.
Consultez la documentation de Cron de votre système d’exploitation ([Debian/Ubuntu](https://doc.ubuntu-fr.org/cron), [Red Hat/Fedora ](https://doc.fedora-fr.org/wiki/CRON_:_Configuration_de_t%C3%A2ches_automatis%C3%A9es ), [Slackware ](https://docs.slackware.com/fr:slackbook:process_control?#cron ), [Gentoo ](https://wiki.gentoo.org/wiki/Cron/fr ), [Arch Linux ](https://wiki.archlinux.fr/Cron )…).
C’est une bonne idée d’utiliser le même utilisateur que votre serveur Web (souvent “www-data”).
Par exemple, pour exécuter le script toutes les heures :
```
8 * * * * php /usr/share/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>& 1
```
### Exemple pour Debian / Ubuntu
Créer `/etc/cron.d/FreshRSS` avec :
```
7,37 * * * * www-data php -f /usr/share/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>& 1
```
## Conseils
* Pour une meilleure sécurité, faites en sorte que seul le répertoire `./p/` soit accessible depuis le Web, par exemple en faisant pointer un sous-domaine sur le répertoire `./p/` .
* En particulier, les données personnelles se trouvent dans le répertoire `./data/` .
* Le fichier `./constants.php` définit les chemins d’accès aux répertoires clés de l’application. Si vous les bougez, tout se passe ici.
* En cas de problème, les logs peuvent être utile à lire, soit depuis l’interface de FreshRSS, soit manuellement depuis `./data/users/*/log*.txt` .
* Le répertoire spécial `./data/users/_/` contient la partie des logs partagés par tous les utilisateurs.
# F.A.Q. :
* La date et l’heure dans la colonne de droite sont celles déclarées par le flux, pas l’heure à laquelle les articles ont été reçus par FreshRSS, et cette colonne n’est pas utilisée pour le tri.
* En particulier, lors de l’import d’un nouveau flux, ses articles sont importés en tête de liste.
# Sauvegarde
* Il faut conserver vos fichiers `./data/config.php` ainsi que `./data/users/*/config.php`
* Vous pouvez exporter votre liste de flux au format OPML soit depuis l’interface Web, soit [en ligne de commande ](cli/README.md )
* Pour sauvegarder les articles eux-mêmes, vous pouvez utiliser [phpMyAdmin ](https://www.phpmyadmin.net ) ou les outils de MySQL :
```bash
mysqldump --skip-comments --disable-keys --user=< db_user > --password --host < db_host > --result-file=freshrss.dump.sql --databases < freshrss_db >
```
# Extensions
FreshRSS permet l’ajout d’extensions en plus des fonctionnalités natives.
Voir le [dépôt dédié à ces extensions ](https://github.com/FreshRSS/Extensions ).
# APIs et applications natives
FreshRSS supporte l’accès depuis des applications natives pour Linux, Android, iOS, et OS X, grâce à deux APIs distinctes.
## Via l’API compatible Google Reader
Voir notre [documentation sur l’accès mobile ](https://freshrss.github.io/FreshRSS/fr/users/06_Mobile_access.html ).
Tout client supportant une API de type Google Reader ; Sélection :
* Android
* [News+ ](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus ) avec [News+ Google Reader extension ](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus.extension.google_reader ) (Propriétaire)
* [FeedMe 3.5.3+ ](https://play.google.com/store/apps/details?id=com.seazon.feedme ) (Propriétaire)
* [EasyRSS ](https://github.com/Alkarex/EasyRSS ) (Libre, [F-Droid ](https://f-droid.org/fr/packages/org.freshrss.easyrss/ ))
* GNU/Linux
* [FeedReader 2.0+ ](https://jangernert.github.io/FeedReader/ ) (Libre)
* MacOS
* [Vienna RSS ](http://www.vienna-rss.com/ ) (Libre)
## Via l’API compatible Fever
Voir notre [documentation sur l’API Fever ](https://freshrss.github.io/FreshRSS/fr/users/06_Fever_API.html ) page.
Tout client supportant une API de type Fever ; Sélection :
* Android
* [Readably ](https://play.google.com/store/apps/details?id=com.isaiasmatewos.readably ) (Propriétaire)
* iOS
* [Fiery Feeds ](https://itunes.apple.com/app/fiery-feeds-rss-reader/id1158763303 ) (Propriétaire)
* [Unread ](https://itunes.apple.com/app/unread-rss-reader/id1252376153 ) (Propriétaire)
* [Reeder-3 ](https://itunes.apple.com/app/reeder-3/id697846300 ) (Propriétaire)
* MacOS
* [Readkit ](https://itunes.apple.com/app/readkit/id588726889 ) (Propriétaire)
# Bibliothèques incluses
* [SimplePie ](https://simplepie.org/ )
* [MINZ ](https://github.com/marienfressinaud/MINZ )
* [php-http-304 ](https://alexandre.alapetite.fr/doc-alex/php-http-304/ )
* [jQuery ](https://jquery.com/ )
* [lib_opml ](https://github.com/marienfressinaud/lib_opml )
* [flotr2 ](http://www.humblesoftware.com/flotr2 )
Decouple scrolling of feeds and articles (#2117)
* Remove Sticky Kit
Remove sticky-kit, as functionality is unsuitable for separate scrolling.
* Remove sticky-kit load in main.js
Further removing the sticky-kit kruft
* Finish removal of references to Sticky-kit
* CSS Changes to template for Independent Scrolling
* Addition of JS and supporting CSS and html
* More CSS fixes to establish expected behavior
Should be able to scroll navbar without it being in sticky mode now.
* Fix typo in main.js
sortcut.js -> shortcut.js
* Fix unexpected tree scrolling behavior
* Change name of generic JS function
* Improve sticky-aside
* CSS changes in themes to accommodate independent Scroll
In themes where .aside's width is not the standard 300px, .tree's width must be specified to be equal to .aside
* Remove Sticky-Kit from README files
* Updates to Sticky-Aside
* Update Template to fix screwup
* Make Recalculating height actually work
* Let sidebar fill height if nav buttons aren't visible
* Make accommodating for nav buttons actually work
* update Swage theme for Independent Scroll feature
* Integrate sticky_aside into main.js
* Add Simple Scrollbar
* Patch scrollbar color for themes with dark colored asides
* Increase Visibility of scrollbar on Dark Themes
* Improve async loading, events, and performance
* CSS typo
* Fix double scrollbar on mobile
* Fix regression causing sticky to not be removed
* No $ for non-jQuery variables
* Fix strange condition + option for nice scrollbar
* Initial attempt to use css sticky
* Add stickyfill
* make the correct element sticky
* re-add incorrectly removed sidebar code
* Continue fixing mistaken deletions
* decrease frequency of recalc
* use minified version of simple-scrollbar.
* Load stickyfill instead of injecting
* put recalc back where it belongs
* re-remove script injector
* remove padding
bottom padding was causing the last item in the feed to be hidden under the nav buttons
* Manual merge of css_scrollbar
Add auto-detection of -webkit-scrollbar-thumb, otherwise fall back to
simple-scrollbar.js
* Fix Regression
Sticky recalc is still needed when using css scrollbars
* Replace method of closing dropdowns
Changed from an overlay href to a javascript solution, for better compatibility
* Remove Treepadding
Treepadding was causing dropdown menus at the bottom of the tree to be obscured.
* Undo unnecessary move of dropdown-target
* Move Dropdown Handler to a sensibleish place
* Fix light Scrollbar color not picking up on Firefox
* Minor syntax
* Minor Clarification of CSS/ patch BlueLagoon
* Change logic for native WebKit scrollbar detection
Fix
https://github.com/FreshRSS/FreshRSS/pull/2117#issuecomment-444251419
Tested with Firefox 63, Firefox 65, Chrome 71, IE11, Edge 42
* Fixes for other views
E.g. reader view
* Cleaner way of generating hash for dropdowns
* Make dropdown-toggle an actual toggle
* Prepare for CSS Scrollbars Module Level 1
* Fix regression causing my labels dropdown not to appear
* remove unneeded dropdown-close css rule
* Re-apply some lost changes
https://github.com/FreshRSS/FreshRSS/pull/2117/commits/3c509989e890b88852e52c67c1c5507d1e0bf28c
* Add standard scrollbar compatibility
E.g. Firefox 64+
* Make All dropdowns click-to-close
* Remove BlueLagoon template
* Try to fix Firefox
https://github.com/FreshRSS/FreshRSS/pull/2117#discussion_r239539984
* Add CSS rules necessary for consistent function of scrollbar in Firefox
* Use inheritance to determine width
* Use overlay scrollbar where possible
* Test Reduced Listener
* Fix Firefox 62
And show subtle scrollbar even when not hovering
* Add margin at bottom
To allow opening the menus
https://github.com/FreshRSS/FreshRSS/pull/2117#issuecomment-444571218
* Minor - tab correction
* Spaces -> tabs
* Remove unneeded inheritance
* Fix indenting
* Revert bad merge
* Messy WIP to make dropdowns work
* Style Cleanup
* Break it down
* Lets try a move-it move-it
* Update p/scripts/main.js
Co-Authored-By: pattems <patrick@crandol.com>
* Update p/themes/BlueLagoon/BlueLagoon.css
Co-Authored-By: pattems <patrick@crandol.com>
* separate ALL THE THINGS
* erroneous commas
* and to or
* removing double condition that doesn't do what I want
* More breaking down
* fix var
* Fix variable name again
* Remove magic number
https://github.com/FreshRSS/FreshRSS/pull/2117#discussion_r240052598
* Suuuuper inelegant solution for dropdowns
* lets try that again
* Inelegant Fix For Dropdowns
Now with 100% more working dropdowns
* Make sidebar dropdowns work correctly?
* Fix reversion
* Make JS scrollbar always visible
* Remove unneeded CSS
Added early in this pull request, didn't get pulled out when it was obsolete
* Fix CSS removal I missed
* CSS comment update/consistency for dark themes
* Clean Up Duplicate code
* Make dropdowns properly hide
Downside: Can no longer click on header/nav buttons to close
* Strip unneeded if statement
* jshint -W018
https://github.com/FreshRSS/FreshRSS/pull/2117#discussion_r240392851
* Half-reversion to old dropdown
* make overlay href scale to sidebar width
* remove init of nonexistent method
* remove trailing tabs
* move #close href where it belongs in index.phtml
* Revert all changes to index.phtml
* remove whitespace
accidentally added in last commit
* Move var's in init_column categories
* Finish putting old style dropdowns back
* Make CSS changes to use support statements
* Cleanup Whitespace
* re-add missing class
* spaces -> tabs in main.js
* tabs -> spaces css
* Minor whitespace
* Cleanup per @Alkarex
* Second attempt to add bottom margin
https://github.com/FreshRSS/FreshRSS/pull/2117#discussion_r240820901
* Fix error in IE11
* Simple-scrollbar color match for dark themes
6 years ago
## Uniquement pour certaines options ou configurations
* [bcrypt.js ](https://github.com/dcodeIO/bcrypt.js )
* [phpQuery ](https://github.com/phpquery/phpquery )
* [Services_JSON ](https://pear.php.net/pepr/pepr-proposal-show.php?id=198 )
* [password_compat ](https://github.com/ircmaxell/password_compat )