[{"data":1,"prerenderedAt":197},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-freshrss-en-un-vps-ma-es":6,"promo-bar-likely":196},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-freshrss-en-un-vps-ma-es",{"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,"alojar-freshrss-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-freshrss","host-freshrss-on-your-own-vps","استضافة-freshrss-على-خادمك-الافتراضي-الخاص-vps","Alojar FreshRSS en su propio VPS","Recupere el control de su vigilancia informativa: despliegue FreshRSS en su VPS con Docker, SSL y acceso móvil. Guía completa de 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,"Autoalojamiento","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","Los agregadores RSS comerciales cierran, cambian de tarifa o revenden sus centros de interés. FreshRSS invierte la lógica: un lector de feeds ligero, multiusuario, que usted mismo aloja. Así se despliega correctamente en un VPS, con base de datos, reverse proxy y certificado HTTPS.",[37,41,51,54,85,88,91,94,128,131,134],{"type":38,"title":39,"body":40},"h2","Por qué autoalojar FreshRSS en un VPS","FreshRSS es un agregador de feeds RSS\u002FAtom escrito en PHP, diseñado para ser discreto en recursos y gestionar al mismo tiempo miles de artículos. El self-hosting en un VPS resuelve tres problemas que los servicios cerrados no abordan: la perdurabilidad (su vigilancia no desaparece de un día para otro), la confidencialidad (nadie perfila sus suscripciones) y la frescura (usted define la frecuencia de actualización mediante cron, sin cuota impuesta). Un VPS, a diferencia de un alojamiento compartido, le da un acceso SSH completo, el derecho a lanzar un contenedor Docker y a programar tareas: exactamente lo que FreshRSS necesita para actualizar los feeds en segundo plano.",{"type":42,"title":43,"items":44},"ul","Ventajas concretas de FreshRSS autoalojado",[45,46,47,48,49,50],"API nativa compatible con Fever y Google Reader: sincronice con Reeder, FeedMe o Fluent Reader en el móvil.","Extensión GReader \u002F scraping: recupere el contenido completo de los artículos truncados gracias a los filtros XPath.","Multiusuario con cuotas por cuenta: ideal para compartir una instancia dentro de una agencia.","Huella de memoria mínima (de 200 a 300 MB): funciona sin inmutarse en el más pequeño de los VPS.","Actualización controlada por cron: usted decide si los feeds se actualizan cada 5 minutos o cada hora.","Copia de seguridad trivial: una base SQLite\u002FMySQL y una carpeta de datos bastan para restaurarlo todo.",{"type":38,"title":52,"body":53},"Requisitos técnicos","FreshRSS es una de las aplicaciones más frugales del self-hosting. Cuente 1 vCPU y 1 GB de RAM para una instancia personal con unos pocos usuarios; 10 GB de disco bastan de sobra, ya que lo esencial lo ocupa el historial de artículos. En cuanto al software: Docker y el plugin Docker Compose instalados en el VPS, un nombre de dominio (o un subdominio del tipo `rss.sudominio.com`) apuntado con un registro A a la IP del servidor, y el puerto 80\u002F443 abierto para el reverse proxy. No hace falta instalar PHP en el host: la imagen oficial `freshrss\u002Ffreshrss` lo incluye todo.",{"type":55,"title":56,"steps":57},"steps","Desplegar FreshRSS paso a paso",[58,61,64,67,70,73,76,79,82],{"title":59,"body":60},"Preparar el VPS y Docker","Conéctese por SSH, actualice el sistema (`apt update && apt upgrade -y`) e instale Docker: `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Añada su usuario al grupo docker: `usermod -aG docker $USER`. Compruébelo con `docker compose version`. Cree la carpeta de proyecto: `mkdir -p \u002Fopt\u002Ffreshrss && cd \u002Fopt\u002Ffreshrss`.",{"title":62,"body":63},"Escribir el docker-compose.yml","Cree `docker-compose.yml` con el siguiente contenido:\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\u002FMadrid\"\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\nEl puerto está vinculado únicamente a `127.0.0.1`: solo el reverse proxy local puede acceder a él.",{"title":65,"body":66},"Configurar nginx como reverse proxy","Instale nginx: `apt install -y nginx`. Cree `\u002Fetc\u002Fnginx\u002Fsites-available\u002Ffreshrss`:\n\n```nginx\nserver {\n    listen 80;\n    server_name rss.sudominio.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\nActive el vhost: `ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Ffreshrss \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F && nginx -t && systemctl reload nginx`.",{"title":68,"body":69},"Obtener el certificado TLS con Certbot","Instale Certbot y el plugin de nginx: `apt install -y certbot python3-certbot-nginx`. Emita el certificado: `certbot --nginx -d rss.sudominio.com`. Certbot modifica automáticamente el vhost de nginx para escuchar en 443 y redirigir HTTP a HTTPS. La renovación automática se activa por defecto a través del timer systemd de certbot.",{"title":71,"body":72},"Arrancar el contenedor","Arranque la stack desde `\u002Fopt\u002Ffreshrss`: `docker compose up -d`. Siga la inicialización: `docker compose logs -f`. El contenedor aplica las migraciones y crea la estructura de datos en el primer arranque. A continuación, verifique que FreshRSS responde: `curl -I https:\u002F\u002Frss.sudominio.com`.",{"title":74,"body":75},"Finalizar la instalación web","Abra `https:\u002F\u002Frss.sudominio.com` en su navegador. El asistente le pide que elija el backend de base de datos: seleccione **SQLite** para un uso personal (archivo único, sin servicio que gestionar), o **MySQL** si se prevén decenas de usuarios. Cree la cuenta de administrador con una contraseña robusta.",{"title":77,"body":78},"Activar la API","Vaya a **Perfil → Gestión de la API**. Marque «Activar la API GReader\u002FFever» y defina una contraseña de API distinta de su contraseña principal. Anote la URL base de la API: `https:\u002F\u002Frss.sudominio.com\u002Fapi\u002Fgreader.php`.",{"title":80,"body":81},"Importar su OPML","Exporte sus suscripciones desde su lector anterior (Feedly, Inoreader…) en formato OPML. En FreshRSS, vaya a **Suscripciones → Importar\u002FExportar → Importar un archivo OPML**. Sus categorías y feeds se recrean en pocos segundos. Verifique la primera actualización manual: `docker compose exec freshrss php .\u002Fcli\u002Factualize.php`.",{"title":83,"body":84},"Verificar el cron automático","La variable `CRON_MIN=*\u002F20` configura el cron interno del contenedor para actualizar todos los feeds cada 20 minutos. Confirme que está activo: `docker compose exec freshrss crontab -l`. Si la salida está vacía, añada `CRON_MIN: \"*\u002F20\"` bajo `environment:` y vuelva a crear el contenedor.",{"type":86,"body":87},"tip","Para los sitios que solo publican un extracto en su feed, instale la extensión oficial «FreshRSS Content Selector»: configure un selector CSS (por ejemplo, `article.post-content`) por suscripción y FreshRSS irá a buscar el texto íntegro en cada actualización. Combínela con la extensión de filtros para ocultar automáticamente los artículos patrocinados detectados por palabra clave.",{"type":38,"title":89,"body":90},"Configuración avanzada de FreshRSS","Una vez operativa la instancia base, tres ejes de optimización convierten FreshRSS de un simple lector en una herramienta de monitorización profesional:\n\n**Extensiones: RSS-Bridge y FullTextRss.** Copie la extensión en `\u002Fopt\u002Ffreshrss\u002Fextensions\u002F` y actívela en la sección **Extensiones** de la interfaz. RSS-Bridge genera un feed RSS para sitios que no lo ofrecen (Twitter\u002FX público, Instagram, LinkedIn). FullTextRss completa los artículos truncados extrayendo el cuerpo HTML según reglas de sitio predefinidas — más de 2.000 sitios ya están configurados en la base de reglas comunitaria.\n\n**Frecuencia de actualización.** El valor `CRON_MIN=*\u002F20` es adecuado para la mayoría de las necesidades. Para fuentes críticas (alertas de seguridad), baje a `*\u002F5`. Para reducir la carga con muchas suscripciones inactivas, suba a `*\u002F60`. FreshRSS también respeta las cabeceras HTTP `ETag` y `Last-Modified`: si un feed no ha cambiado, la actualización casi no consume ancho de banda.\n\n**SQLite vs MySQL.** SQLite es suficiente para centenares de miles de artículos y un puñado de usuarios; su sencillez (archivo único) lo convierte en la mejor opción personal. Más allá de 5 usuarios simultáneos o 500.000 artículos, MySQL ofrece mejor rendimiento. La migración de SQLite a MySQL es posible con la herramienta CLI `convert-db.php` incluida en el contenedor.",{"type":38,"title":92,"body":93},"La API de FreshRSS para sus agentes IA y automatizaciones","FreshRSS es uno de los pocos agregadores autoalojados que implementa dos API estándar: la **API Google Reader** (`\u002Fapi\u002Fgreader.php`) y la **API Fever** (`\u002Fapi\u002Ffever.php`). Estas API, documentadas públicamente, permiten una integración sin fricciones con decenas de herramientas de automatización.\n\n**Integración con n8n.** En un flujo de trabajo n8n, use el nodo HTTP Request con autenticación Basic (credenciales de la API de FreshRSS). Active el flujo sobre nuevos artículos no leídos consultando el endpoint GReader. Encadene con un nodo OpenAI para resumir cada artículo y envíe el resumen a Slack o por correo. Todo dentro de su propia infraestructura.\n\n**Integración con Make (ex-Integromat).** El módulo HTTP de Make permite las mismas llamadas REST. Un escenario típico: cada hora, recuperar artículos destacados con estrella, enriquecerlos con un LLM y enviarlos a Notion o Airtable.\n\n**Agentes IA.** Marcos como LangChain o LlamaIndex pueden consultar directamente la API de FreshRSS para alimentar un pipeline RAG sobre su monitorización personal. Su instancia se convierte en una fuente de datos privada, estructurada y actualizada, inaccesible para los modelos públicos.",{"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],"Lenguaje \u002F stack","PHP + SQLite\u002FMySQL","Go (binario único)","PHP + PostgreSQL",[104,105,106,107],"RAM mínima","~50 MB (sin Docker)","~20 MB","~100 MB",[109,110,111,112],"API estándar","Google Reader + Fever","Miniflux REST + Fever","Google Reader (plugin)",[114,115,116,117],"Extensiones \u002F plugins","Rico (más de 30 oficiales)","Limitadas (filtros nativos)","Muchos plugins de terceros",[119,120,121,122],"Licencia","AGPL-3.0","Apache-2.0","GPL-3.0",[124,125,126,127],"Criterio","FreshRSS","Miniflux","Tiny Tiny RSS",{"type":38,"title":129,"body":130},"Hacer copias de seguridad y migrar FreshRSS","Una de las ventajas del self-hosting es el control total sobre sus datos. Dos niveles de copia de seguridad cubren todos los escenarios:\n\n**Exportación OPML (suscripciones).** Desde **Suscripciones → Importar\u002FExportar → Exportar como OPML**, genera un archivo XML con todos sus feeds y categorías. Automátice con crontab: `0 3 * * * docker exec freshrss php \u002Fvar\u002Fwww\u002FFreshRSS\u002Fcli\u002Fexport-opml-file.php > \u002Fopt\u002Fbackups\u002Ffreshrss-opml-$(date +%F).xml`.\n\n**Copia de seguridad completa (base de datos + datos).** Para conservar también el historial de lectura y las estrellas, haga una copia del volumen Docker completo: `rsync -a \u002Fopt\u002Ffreshrss\u002Fdata\u002F \u002Fopt\u002Fbackups\u002Ffreshrss-data-$(date +%F)\u002F`.\n\n**Migración entre VPS.** El proceso es lineal: (1) detenga el contenedor origen (`docker compose stop`); (2) copie la carpeta `data\u002F` al nuevo VPS mediante rsync o scp; (3) despliegue el mismo `docker-compose.yml` en el nuevo VPS y arranque; (4) actualice el registro DNS A a la nueva IP. Tiempo total para una instancia personal: menos de 10 minutos, sin pérdida de datos.",{"type":38,"title":132,"body":133},"Resolución de problemas: 4 errores frecuentes","**1. Cron inactivo — los feeds ya no se actualizan.** Síntoma: la columna «Última actualización» permanece congelada. Primero compruebe que el cron interno está activo: `docker compose exec freshrss crontab -l`. Si la salida está vacía, añada `CRON_MIN: \"*\u002F20\"` bajo `environment:` y vuelva a crear el contenedor.\n\n**2. Feed que nunca se actualiza pese a un cron activo.** Causa más frecuente: el feed devuelve sistemáticamente HTTP 429 (límite de tasa) o 403. Compruebe en **Suscripciones → Gestionar → Último error**. Para un sitio que bloquea peticiones sin User-Agent, añada uno explícito en los ajustes avanzados del feed.\n\n**3. Error SSL «certificate verify failed».** Ocurre cuando el contenedor intenta acceder a un feed HTTPS con certificado autofirmado o caducado. Opciones: deshabilitar la verificación SSL solo para ese feed (casilla en opciones avanzadas), o actualizar los CA del contenedor (`docker compose exec freshrss update-ca-certificates`).\n\n**4. Extensión FullTextRss silenciosa — el contenido sigue truncado.** Compruebe que la extensión está activada en **Extensiones** y que la URL del servicio FullTextRss es correcta en su configuración. Si usa la versión autoalojada, pruebe la URL directamente en el navegador. Una respuesta JSON vacía indica que el selector del sitio no está en la base de reglas — cree un archivo de reglas personalizado en `site_patterns\u002F` y móntelo como volumen Docker.",{"type":38,"title":135,"body":136},"Caso de uso: vigilancia tecnológica para desarrolladores","Añada los feeds de GitHub releases de cada dependencia de su proyecto (`https:\u002F\u002Fgithub.com\u002F\u003Cowner>\u002F\u003Crepo>\u002Freleases.atom`), el feed de Hacker News (`https:\u002F\u002Fnews.ycombinator.com\u002Frss`), los blogs de los principales mantenedores de su ecosistema y los feeds CVE de su runtime y sistema operativo.\n\nFreshRSS entrega la línea de tiempo en bruto, sin ordenación algorítmica y sin publicaciones patrocinadas. Cree una regla de marcado automático: todo artículo que contenga «security advisory» o «breaking change» recibe una estrella y desencadena una notificación ntfy en su teléfono. Obtiene la señal, sin el ruido de las plataformas sociales.","Lance su vigilancia informativa en unos minutos","El VPS Cloud ServOrbit llega con Docker preinstalado y un reverse proxy listo para usar: despliegue su plantilla FreshRSS y recupere el control de sus feeds, sin depender de ningún servicio de terceros.","Desplegar en 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,"alojar-nextcloud-en-su-propio-vps",{"fr":146,"en":147,"ar":148,"es":144},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","استضافة-nextcloud-على-خادمك-الـvps-الخاص","Alojar Nextcloud en VPS: guía NC 35, PHP 8.3 y MariaDB 11","Aloje Nextcloud en un VPS: Docker Compose, Redis, copia MariaDB, subidas de más de 40 GB tras Cloudflare y una alternativa a 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,"alojar-ghost-en-un-vps",{"fr":165,"en":166,"ar":167,"es":163},"heberger-ghost","hosting-ghost-on-your-own-vps","استضافة-ghost-على-خادمك-الـvps-الخاص","Alojar Ghost en un VPS: guía completa 2026","Despliegue Ghost v6 en su VPS con Caddy, MySQL, Ghost CLI y Stripe Tax: instalación, reverse proxy TLS, actualización y errores de arranque frecuentes.","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,"alojar-wordpress-en-un-vps",{"fr":182,"en":183,"ar":184,"es":180},"heberger-wordpress","host-wordpress-on-your-own-vps","استضافة-wordpress-على-خادم-vps-الخاص-بك","Alojar WordPress en su propio VPS","Aloje WordPress en su VPS para un rendimiento y un control máximos: Docker, MariaDB, caché, reverse proxy y 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,1794270524433]