[{"data":1,"prerenderedAt":197},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-freshrss-ma-fr":6,"promo-bar-likely":196},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-heberger-freshrss-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":137,"ctaBody":138,"ctaButton":139,"ctaUrl":140,"relatedPosts":141},86,"heberger-freshrss",{"fr":10,"en":12,"ar":13,"es":14},"host-freshrss-on-your-own-vps","استضافة-freshrss-على-خادمك-الافتراضي-الخاص-vps","alojar-freshrss-en-un-vps","Héberger FreshRSS sur votre propre VPS","Reprenez le contrôle de votre veille : déployez FreshRSS sur votre VPS avec Docker, SSL et accès mobile. Guide complet self-hosting.",10,2,false,"2026-03-26T00:00:00+00:00","2026-10-13T14:10:29+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-freshrss-poster.svg",{"categorySlug":25,"appSlug":34},"freshrss","Les agrégateurs RSS commerciaux ferment, changent de tarif ou revendent vos centres d'intérêt. FreshRSS renverse la logique : un lecteur de flux léger, multi-utilisateurs, que vous hébergez vous-même. Voici comment le déployer proprement sur un VPS, avec base de données, reverse proxy et certificat HTTPS.",[37,41,51,54,85,88,91,94,128,131,134],{"type":38,"title":39,"body":40},"h2","Pourquoi auto-héberger FreshRSS sur un VPS","FreshRSS est un agrégateur de flux RSS\u002FAtom écrit en PHP, conçu pour être discret en ressources tout en gérant des milliers d'articles. Le self-hosting sur VPS résout trois problèmes que les services fermés ne traitent pas : la pérennité (votre veille ne disparaît pas du jour au lendemain), la confidentialité (personne ne profile vos abonnements) et la fraîcheur (vous définissez la fréquence de rafraîchissement via cron, sans quota imposé). Un VPS, contrairement à un hébergement mutualisé, vous donne un accès SSH complet, le droit de lancer un conteneur Docker et de planifier des tâches — exactement ce dont FreshRSS a besoin pour rafraîchir les flux en arrière-plan.",{"type":42,"title":43,"items":44},"ul","Bénéfices concrets du FreshRSS auto-hébergé",[45,46,47,48,49,50],"API native compatible Fever et Google Reader : synchronisez avec Reeder, FeedMe ou Fluent Reader sur mobile.","Extension GReader \u002F scraping : récupérez le contenu complet d'articles tronqués grâce aux filtres XPath.","Multi-utilisateurs avec quotas par compte : idéal pour partager une instance au sein d'une agence.","Empreinte mémoire minime (200 à 300 Mo) : tourne sur le plus petit des VPS sans broncher.","Rafraîchissement piloté par cron : vous décidez si les flux se mettent à jour toutes les 5 minutes ou toutes les heures.","Sauvegarde triviale : une base SQLite\u002FMySQL et un dossier de données suffisent à tout restaurer.",{"type":38,"title":52,"body":53},"Prérequis techniques","FreshRSS est l'une des applications les plus frugales du self-hosting. Comptez 1 vCPU et 1 Go de RAM pour une instance personnelle à quelques utilisateurs ; 10 Go de disque suffisent largement, l'essentiel étant occupé par l'historique d'articles. Côté logiciel : Docker et le plugin Docker Compose installés sur le VPS, un nom de domaine (ou sous-domaine type `rss.votredomaine.com`) pointé en A vers l'IP du serveur, et un port 80\u002F443 ouvert pour le reverse proxy. PHP n'a pas à être installé sur l'hôte : l'image officielle `freshrss\u002Ffreshrss` embarque tout.",{"type":55,"title":56,"steps":57},"steps","Déployer FreshRSS pas à pas",[58,61,64,67,70,73,76,79,82],{"title":59,"body":60},"Préparer le VPS et Docker","Connectez-vous en SSH, mettez à jour le système (`apt update && apt upgrade -y`), puis installez Docker : `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Ajoutez votre utilisateur au groupe docker : `usermod -aG docker $USER`. Vérifiez avec `docker compose version`. Créez le dossier projet : `mkdir -p \u002Fopt\u002Ffreshrss && cd \u002Fopt\u002Ffreshrss`.",{"title":62,"body":63},"Écrire le docker-compose.yml","Créez le fichier `docker-compose.yml` avec le contenu suivant :\n\n```yaml\nservices:\n  freshrss:\n    image: freshrss\u002Ffreshrss:latest\n    container_name: freshrss\n    restart: unless-stopped\n    environment:\n      CRON_MIN: \"*\u002F20\"\n      TZ: \"Europe\u002FParis\"\n    volumes:\n      - .\u002Fdata:\u002Fvar\u002Fwww\u002FFreshRSS\u002Fdata\n      - .\u002Fextensions:\u002Fvar\u002Fwww\u002FFreshRSS\u002Fextensions\n    ports:\n      - \"127.0.0.1:8080:80\"\n```\n\nLe port est lié uniquement à `127.0.0.1` : seul le reverse proxy local y accède, le port n'est jamais exposé sur l'IP publique.",{"title":65,"body":66},"Configurer nginx comme reverse proxy","Installez nginx : `apt install -y nginx`. Créez `\u002Fetc\u002Fnginx\u002Fsites-available\u002Ffreshrss` :\n\n```nginx\nserver {\n    listen 80;\n    server_name rss.votredomaine.com;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\nActivez le vhost : `ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Ffreshrss \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F && nginx -t && systemctl reload nginx`.",{"title":68,"body":69},"Obtenir le certificat TLS avec Certbot","Installez Certbot et le plugin nginx : `apt install -y certbot python3-certbot-nginx`. Émettez le certificat : `certbot --nginx -d rss.votredomaine.com`. Certbot modifie automatiquement le vhost nginx pour écouter sur 443 et rediriger HTTP vers HTTPS. Le renouvellement automatique est activé d'office via le timer systemd certbot.",{"title":71,"body":72},"Lancer le conteneur","Démarrez la stack depuis `\u002Fopt\u002Ffreshrss` : `docker compose up -d`. Suivez l'initialisation : `docker compose logs -f`. Le conteneur applique les migrations et crée l'arborescence de données au premier démarrage. Vérifiez ensuite que FreshRSS répond : `curl -I https:\u002F\u002Frss.votredomaine.com`.",{"title":74,"body":75},"Terminer l'installation web","Ouvrez `https:\u002F\u002Frss.votredomaine.com` dans votre navigateur. L'assistant vous demande de choisir le backend de base de données : sélectionnez **SQLite** pour un usage personnel (fichier unique, pas de service à gérer), ou **MySQL** si plusieurs dizaines d'utilisateurs sont prévus. Créez le compte administrateur avec un mot de passe fort.",{"title":77,"body":78},"Activer l'API","Rendez-vous dans **Profil → Gestion de l'API**. Cochez « Activer l'API GReader\u002FFever » et définissez un mot de passe d'API distinct de votre mot de passe principal (il sera transmis en clair par certains clients). Notez l'URL de base de l'API : `https:\u002F\u002Frss.votredomaine.com\u002Fapi\u002Fgreader.php`. Vous pouvez tester immédiatement avec `curl -X POST https:\u002F\u002Frss.votredomaine.com\u002Fapi\u002Fgreader.php\u002Faccounts\u002FClientLogin -d Email=admin@votredomaine.com&Passwd=\u003Capipass>`.",{"title":80,"body":81},"Importer votre OPML","Exportez vos abonnements depuis votre ancien lecteur (Feedly, Inoreader…) au format OPML. Dans FreshRSS, allez dans **Abonnements → Import\u002FExport → Importer un fichier OPML**. Vos catégories et flux sont recréés en quelques secondes. Vérifiez le premier rafraîchissement manuel : `docker compose exec freshrss php .\u002Fcli\u002Factualize.php`.",{"title":83,"body":84},"Vérifier le cron automatique","La variable `CRON_MIN=*\u002F20` configure le cron interne du conteneur pour rafraîchir tous les flux toutes les 20 minutes. Confirmez qu'il tourne : `docker compose exec freshrss crontab -l`. Si vous préférez piloter depuis l'hôte, désactivez le cron interne (`CRON_MIN=` vide) et ajoutez un crontab système : `*\u002F15 * * * * docker exec freshrss php \u002Fvar\u002Fwww\u002FFreshRSS\u002Fapp\u002Factualize_script.php 2>&1 | logger -t freshrss`.",{"type":86,"body":87},"tip","Pour les sites qui ne publient qu'un extrait dans leur flux, installez l'extension officielle « FreshRSS Content Selector » : configurez un sélecteur CSS (ex : `article.post-content`) par abonnement et FreshRSS ira récupérer le texte intégral à chaque rafraîchissement. Combinez-la avec l'extension de filtres pour masquer automatiquement les articles sponsorisés détectés par mot-clé.",{"type":38,"title":89,"body":90},"Configuration avancée de FreshRSS","Une fois l'instance de base opérationnelle, trois axes d'optimisation font passer FreshRSS d'un simple lecteur à un véritable outil de veille :\n\n**Extensions : RSS-Bridge et FullTextRss.** Copiez l'extension dans `\u002Fopt\u002Ffreshrss\u002Fextensions\u002F`, puis activez-la dans **Extensions** dans l'interface. RSS-Bridge génère un flux RSS pour des sites qui n'en proposent pas (Twitter\u002FX public, Instagram, LinkedIn), sous forme d'un bridge exécuté sur votre VPS. FullTextRss (version auto-hébergée de la bibliothèque FiveFilters) complète les articles tronqués en extrayant le corps HTML selon des règles de site prédéfinies — plus de 2 000 sites sont déjà configurés dans la base de règles communautaire.\n\n**Fréquence de rafraîchissement.** La valeur `CRON_MIN=*\u002F20` convient pour la majorité des veilles. Pour des sources critiques (alertes de sécurité, cours de bourse), descendez à `*\u002F5`. Pour réduire la charge sur votre VPS avec beaucoup d'abonnements inactifs, montez à `*\u002F60`. FreshRSS respecte aussi les en-têtes `ETag` et `Last-Modified` des serveurs HTTP : si un flux n'a pas changé, le rafraîchissement est quasi gratuit en bande passante.\n\n**SQLite vs MySQL.** SQLite suffit jusqu'à quelques centaines de milliers d'articles et une poignée d'utilisateurs ; sa simplicité (un seul fichier) en fait la option adaptée pour un usage personnel. Au-delà de 5 utilisateurs simultanés ou de 500 000 articles, MySQL (ou MariaDB) offre de appropriées performances sur les requêtes de lecture. La migration SQLite → MySQL est possible via l'outil CLI `convert-db.php` fourni dans le conteneur.",{"type":38,"title":92,"body":93},"L'API FreshRSS pour vos agents IA et automatisations","FreshRSS est l'un des rares agrégateurs auto-hébergés à implémenter deux API standard : l'**API Google Reader** (`\u002Fapi\u002Fgreader.php`) et l'**API Fever** (`\u002Fapi\u002Ffever.php`). Ces API, documentées publiquement, permettent une intégration sans friction avec des dizaines d'outils d'automatisation.\n\n**Intégration n8n.** Dans un workflow n8n, utilisez le nœud HTTP Request avec l'authentification Basic (identifiants API FreshRSS). Déclenchez le workflow sur les nouveaux articles non lus en interrogeant le endpoint GReader : `GET \u002Fapi\u002Fgreader.php\u002Freader\u002Fapi\u002F0\u002Fstream\u002Fcontents\u002Fuser\u002F-\u002Fstate\u002Fcom.google\u002Freading-list?n=20&xt=user\u002F-\u002Fstate\u002Fcom.google\u002Fread`. Chaînez avec un nœud OpenAI pour résumer chaque article, puis envoyez le résumé dans Slack ou par email. Le tout sans quitter votre infrastructure.\n\n**Intégration Make (ex-Integromat).** Le module HTTP de Make permet les mêmes appels REST. Un scénario typique : toutes les heures, récupérer les articles étoilés, les enrichir avec un LLM via un webhook, et les pousser dans Notion ou Airtable pour constituer une base de connaissance structurée.\n\n**Agents IA.** Les frameworks d'agents comme LangChain ou LlamaIndex peuvent interroger directement l'API FreshRSS pour alimenter un RAG (Retrieval-Augmented Generation) sur votre veille personnelle. Votre instance devient une source de données privée, structurée et fraîche, inaccessible aux modèles publics.",{"type":95,"title":96,"rows":97,"headers":123},"comparison","FreshRSS vs Miniflux vs Tiny Tiny RSS",[98,103,108,113,118],[99,100,101,102],"Langage \u002F stack","PHP + SQLite\u002FMySQL","Go (binaire unique)","PHP + PostgreSQL",[104,105,106,107],"RAM minimale","~50 Mo (sans Docker)","~20 Mo","~100 Mo",[109,110,111,112],"API standard","Google Reader + Fever","Miniflux REST + Fever","Google Reader (plugin)",[114,115,116,117],"Extensions \u002F plugins","Riche (>30 officielles)","Limitées (filtres natifs)","Plugins tiers nombreux",[119,120,121,122],"Licence","AGPL-3.0","Apache-2.0","GPL-3.0",[124,125,126,127],"Critère","FreshRSS","Miniflux","Tiny Tiny RSS",{"type":38,"title":129,"body":130},"Sauvegarder et migrer FreshRSS","L'un des avantages du self-hosting est la maîtrise complète de vos données. Deux niveaux de sauvegarde couvrent tous les scénarios :\n\n**Export OPML (abonnements).** Depuis **Abonnements → Import\u002FExport → Exporter en OPML**, vous générez un fichier XML portant tous vos flux et catégories. C'est la sauvegarde minimale : elle vous permet de réimporter votre liste de flux sur n'importe quelle instance FreshRSS ou tout autre lecteur RSS compatible. Automatisez-la avec un crontab : `0 3 * * * docker exec freshrss php \u002Fvar\u002Fwww\u002FFreshRSS\u002Fcli\u002Fexport-opml-file.php > \u002Fopt\u002Fbackups\u002Ffreshrss-opml-$(date +%F).xml`.\n\n**Sauvegarde complète (base + données).** Pour conserver aussi l'historique de lecture et les étoiles, sauvegardez le volume Docker entier : `rsync -a \u002Fopt\u002Ffreshrss\u002Fdata\u002F \u002Fopt\u002Fbackups\u002Ffreshrss-data-$(date +%F)\u002F`. Si vous utilisez SQLite, la base est dans `data\u002Fusers\u002F\u003Cuser>\u002Fnon_default_feeds.sqlite` et `data\u002Fusers\u002F\u003Cuser>\u002Fdefault.sqlite`. Pour MySQL, un `mysqldump` suffit.\n\n**Migration entre VPS.** Le processus est linéaire : (1) arrêtez le conteneur source (`docker compose stop`) ; (2) copiez le dossier `data\u002F` sur le nouveau VPS via rsync ou scp ; (3) déployez la même `docker-compose.yml` sur le nouveau VPS et démarrez ; (4) mettez à jour le DNS A record vers la nouvelle IP. Temps total pour une instance personnelle : moins de 10 minutes, zéro perte de données.",{"type":38,"title":132,"body":133},"Dépannage : 4 erreurs fréquentes","**1. Cron inactif — les flux ne se mettent plus à jour.** Symptôme : la colonne « Dernière mise à jour » reste figée. Vérifiez d'abord que le cron interne tourne : `docker compose exec freshrss crontab -l`. Si la sortie est vide, la variable `CRON_MIN` est absente ou vide dans votre `docker-compose.yml`. Ajoutez `CRON_MIN: \"*\u002F20\"` sous `environment:` et relancez le conteneur (`docker compose up -d --force-recreate`).\n\n**2. Flux qui ne se met jamais à jour malgré un cron actif.** Cause la plus fréquente : le flux retourne systématiquement une erreur HTTP 429 (rate-limit) ou 403. Vérifiez dans **Abonnements → Gérer → Dernière erreur**. Pour un site qui bloque les requêtes sans User-Agent, ajoutez dans la configuration avancée du flux un User-Agent explicite (ex : `FreshRSS\u002F1.24 (+https:\u002F\u002Frss.votredomaine.com)`). Pour un flux derrière Cloudflare, RSS-Bridge avec le bridge `CloudFlare` contourne le challenge JS.\n\n**3. Erreur SSL « certificate verify failed ».** Survient quand le conteneur FreshRSS tente de joindre un flux HTTPS dont le certificat est auto-signé ou expiré. Deux options : ignorer la vérification SSL pour ce flux spécifique (case à décocher dans les options avancées de l'abonnement), ou mettre à jour les CA du conteneur si toute la pile SSL est cassée (`docker compose exec freshrss update-ca-certificates`).\n\n**4. Extension FullTextRss muette — le contenu reste tronqué.** Vérifiez que l'extension est bien activée dans **Extensions** et que l'URL du service FullTextRss est correcte dans sa configuration. Si vous utilisez la version auto-hébergée, testez l'URL directement dans le navigateur : `https:\u002F\u002Fvotre-ftr.domain.com\u002Fextract.php?url=\u003Curl_article>`. Une réponse JSON vide indique que le sélecteur du site n'est pas dans la base de règles — créez un fichier de règles custom dans `site_patterns\u002F` et montez-le comme volume Docker.",{"type":38,"title":135,"body":136},"Cas d'usage : veille technologique pour développeur","Ajoutez les flux GitHub releases de chaque dépendance de votre projet (`https:\u002F\u002Fgithub.com\u002F\u003Cowner>\u002F\u003Crepo>\u002Freleases.atom`), le flux Hacker News (`https:\u002F\u002Fnews.ycombinator.com\u002Frss`), les blogs des mainteneurs principaux de votre écosystème, et les feeds CVE de votre runtime et OS.\n\nFreshRSS livre la timeline brute — sans tri algorithmique, sans posts sponsorisés. Créez une règle de marquage automatique : tout article contenant « security advisory » ou « breaking change » reçoit une étoile et déclenche une notification ntfy sur votre téléphone. Vous obtenez le signal, sans le bruit des plateformes sociales.","Lancez votre veille en quelques minutes","Le VPS Cloud ServOrbit arrive avec Docker préinstallé et un reverse proxy prêt à l'emploi : déployez votre template FreshRSS et reprenez la main sur vos flux, sans dépendre d'aucun service tiers.","Déployer sur VPS Cloud","\u002Fvps-cloud",[142,161,178],{"id":143,"slug":144,"slugs":145,"title":149,"excerpt":150,"readTime":151,"views":152,"isPinned":19,"noindex":19,"publishedAt":153,"updatedAt":154,"category":155,"categories":156,"featuredImage":30,"bgImage":31,"posterImage":158,"relatedSolution":159},71,"heberger-nextcloud",{"fr":144,"en":146,"ar":147,"es":148},"hosting-nextcloud-on-your-own-vps","استضافة-nextcloud-على-خادمك-الـvps-الخاص","alojar-nextcloud-en-su-propio-vps","Héberger Nextcloud sur VPS : guide NC 35, PHP 8.3 et MariaDB 11","Hébergez Nextcloud sur VPS : Docker Compose, Redis, sauvegarde MariaDB, envois de plus de 40 Go derrière Cloudflare et alternative à Office 2021.",20,1,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[157],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":25,"appSlug":160},"nextcloud",{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":17,"views":152,"isPinned":19,"noindex":19,"publishedAt":170,"updatedAt":171,"category":172,"categories":173,"featuredImage":30,"bgImage":31,"posterImage":175,"relatedSolution":176},72,"heberger-ghost",{"fr":163,"en":165,"ar":166,"es":167},"hosting-ghost-on-your-own-vps","استضافة-ghost-على-خادمك-الـvps-الخاص","alojar-ghost-en-un-vps","Héberger Ghost sur VPS : guide complet 2026","Déployez Ghost v6 sur votre VPS avec Caddy, MySQL, Ghost CLI et Stripe Tax : installation, reverse proxy TLS, mise à jour et dépannage des erreurs fréquentes.","2026-04-09T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[174],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":25,"appSlug":177},"ghost",{"id":179,"slug":180,"slugs":181,"title":185,"excerpt":186,"readTime":23,"views":187,"isPinned":19,"noindex":19,"publishedAt":188,"updatedAt":189,"category":190,"categories":191,"featuredImage":30,"bgImage":31,"posterImage":193,"relatedSolution":194},73,"heberger-wordpress",{"fr":180,"en":182,"ar":183,"es":184},"host-wordpress-on-your-own-vps","استضافة-wordpress-على-خادم-vps-الخاص-بك","alojar-wordpress-en-un-vps","Héberger WordPress sur votre propre VPS","Hébergez WordPress sur votre VPS pour des performances et un contrôle maximaux : Docker, MariaDB, cache, reverse proxy et SSL.",0,"2026-04-08T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[192],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":25,"appSlug":195},"wordpress",true,1794270717652]