Documentación
AliothPress es un CMS autohospedado diseñado específicamente para sitios web multilingües. Todos los contenidos — publicaciones, páginas, formularios, menús, boletines, páginas legales — pueden crearse en un idioma y traducirse a cualquiera de los 31 idiomas compatibles, con soporte completo para SEO, AEO y hreflang listo para usar.
Toda la interfaz de administración también está traducida a los 31 idiomas, de modo que cada miembro del equipo pueda trabajar en su idioma preferido.
Desarrollado con Python/Flask. Funciona con SQLite o PostgreSQL. Se instala en 5 minutos sin necesidad de tocar una terminal.
El núcleo cubre por sí solo un sitio web completo — los plugins nunca son necesarios para llenar huecos. Para proyectos que quieran ir más allá, AliothPress incluye un sistema de plugins instalables y soporte para temas personalizados, ambos gestionados por completo desde el panel de administración.
Aspectos destacados
- CMS multilingüe: 31 idiomas — contenidos, panel de administración, páginas legales, asistente de configuración e interfaz pública, todo completamente traducido
- Asistente de IA — generar contenido, traducir, optimizar SEO — compatible con Anthropic Claude, DeepSeek y Google Gemini
- No se requiere terminal — pegar un script cloud‑init al crear el servidor, abrir el navegador y listo
- Constructor visual de páginas — 21 tipos de bloques: texto, imágenes, columnas, galerías, presentaciones, ticker de logotipos, tablas, acordeones, formularios y más
- SEO y AEO integrados — Schema.org
@graph, esquema FAQPage, Speakable,/llms.txt, contenido de IA orientado a respuestas — optimizado para motores de búsqueda y motores de respuesta por IA - Optimización automática de imágenes — cada carga genera variantes WebP + AVIF responsivas, recortes para OG/Redes sociales y marcadores de color dominante
- 15 temas de diseño — cada uno con modo oscuro y claro, intercambiable desde el panel de administración
- Plugins y temas personalizados — instala plugins y temas desde un ZIP en el panel de administración; actualizaciones de plugins en un clic con changelog, los plugins de pago llevan su propia licencia y el desarrollo por terceros es abierto y está documentado
- Protección inteligente del contenido — limpieza automática de referencias al eliminar contenido, redirecciones 301 automáticas al cambiar el slug
- Seguridad integrada — CSRF, limitación de tasa, protección contra fuerza bruta, autenticación de dos factores opcional, saneamiento de HTML/SVG, cabeceras de seguridad, credenciales cifradas
- Privacidad primero y preparado para GDPR — cero solicitudes a terceros por defecto, fuentes autohospedadas y un editor integrado (AliothEditor), patrón de fachada para incrustaciones de vídeo (no se requiere banner de cookies para la configuración predeterminada)
- Accesibilidad verificada — puntuación 100/100 en Accesibilidad en Google PageSpeed Insights en los 15 temas, tanto en modo claro como oscuro
- Totalmente responsivo — diseño mobile‑first en el panel de administración y el sitio público
Características
Gestión de contenidos
- Publicaciones y páginas con AliothEditor — un editor de texto enriquecido integrado con tres pestañas sincronizadas (Visual / Markdown / HTML)
- Flujo de trabajo de estado Borrador / Publicado, con vista previa en vivo antes de publicar
- Etiquetas y categorías con páginas de resumen dedicadas
- Extractos e Imágenes destacadas con texto alternativo y pies de foto
- Perfiles de autor con nombre mostrado, biografía y avatar (compatible con Schema.org)
- URLs canónicas para evitar contenido duplicado
- Editor de preguntas frecuentes por publicación/página — genera un acordeón de preguntas frecuentes visible y el esquema FAQPage para citas de IA
- Ocultar/mostrar autor y fecha por publicación/página — los metadatos siempre están presentes en el HTML para los motores de búsqueda
Sistema multilingüe
- 31 idiomas: inglés, alemán, francés, español, portugués, italiano, neerlandés, sueco, danés, noruego, finés, polaco, checo, eslovaco, húngaro, rumano, croata, búlgaro, griego, turco, ucraniano, ruso, árabe, hebreo, hindi, tailandés, vietnamita, indonesio, chino, japonés, coreano
- Grupos de traducción — vincular publicaciones, páginas, formularios y boletines entre idiomas mediante un sistema basado en UUID
- Menús por idioma — los menús de cabecera y pie de página se resuelven automáticamente al idioma del visitante
- Etiquetas hreflang en el HTML y en el mapa del sitio para un SEO internacional adecuado
- Selector de idioma en el sitio público
- Idioma de administración por usuario — cada miembro del equipo elige su propio idioma de interfaz
- Páginas legales predeterminadas creadas en el idioma seleccionado durante la configuración (Política de privacidad, Aviso legal, Accesibilidad)
Constructor visual de páginas
Page Builder con Drag-and-Drop en bloques para páginas con vista previa en vivo. 21 tipos de bloques:
- Básicos: Título, Texto, Imagen, Botón, Divisor, Espaciador
- Estructura: Columnas (1–4), Sección con fondo
- Medios: Vídeo, Galería, Videogalería, Audio, Presentación de diapositivas, Ticker de logotipos
- Avanzados: Cita, Tabla, Acordeón/FAQ, Pestañas, HTML, Código, Formulario
- La IA puede generar diseños de página completos como bloques a partir de una indicación de texto
Asistente de IA
Asistente de IA compatible con tres proveedores — configurar uno o todos, cambiar entre ellos en cualquier momento:
- Anthropic Claude (predeterminado)
- DeepSeek
- Google Gemini
Capacidades de IA desde el panel de administración:
- Generar contenido — describir lo que se necesita, obtener una publicación o página completa con metadatos SEO y pares de FAQ para citas de IA
- Traducir contenido — traducción asistida por IA enlazada como una nueva versión en otro idioma
- Optimizar SEO — generar títulos meta, descripciones, palabras clave y datos Open Graph
- Generar diseños de página — la IA crea bloques del constructor de páginas a partir de una descripción
- Modo conversacional — refinar los resultados mediante instrucciones adicionales
- Las claves API se almacenan cifradas (cifrado simétrico Fernet)
Acceso para agentes (WebMCP)
Opcionalmente, los agentes de IA mediante WebMCP — como los navegadores agénticos — pueden usar el sitio como herramientas estructuradas e invocables, en lugar de adivinar a partir de la página. Basado en el estándar de navegador WebMCP (navigator.modelContext / document.modelContext). Desactivado por defecto: el propietario lo activa desde la página del Asistente de IA, y en navegadores sin la API simplemente no hace nada.
- Búsqueda pública de contenido — un
/api/public/searchlegible por máquinas: el agente pregunta «qué tenéis sobre X» y recibe títulos, URLs y fragmentos en una sola llamada; cubre entradas, páginas, bloques del constructor (incluidos acordeón/FAQ), categorías y etiquetas. Abierto a cualquier agente sin token, igual que/llms.txty el sitemap; con límite de peticiones - Herramientas públicas de formularios — los agentes pueden leer los campos de un formulario, rellenarlo y enviarlo, reutilizando el endpoint de envío existente (el honeypot, el límite de peticiones y la validación siguen en el servidor)
- Herramientas de administración — generar, traducir, optimizar el SEO, listar y buscar contenido, crear entradas, páginas y páginas del constructor visual, montar menús y navegar — todo dentro de la sesión del usuario autenticado, de modo que los permisos existentes y el CSRF siguen aplicándose
- Human in the loop — toda acción de escritura pide confirmación antes de ejecutarse; las lecturas nunca
- Inactivo por defecto — no se renderiza nada hasta activarlo; desactivarlo revoca el acceso al instante. Los envíos de formularios y otros datos personales de los visitantes nunca se exponen a los agentes
- Listo para Origin Trials — pega tu token de Chrome Origin Trial y funciona en producción con visitantes reales
- Manifiesto de descubrimiento —
/.well-known/webmcpanuncia lo que el sitio puede hacer
Biblioteca de medios
- Procesamiento automático de imágenes al cargar: redimensionar a una dimensión máxima, eliminar metadatos EXIF, rotación automática
- Variantes responsivas: WebP y AVIF en múltiples puntos de ruptura (400w, 800w, 1200w, 1920w)
- Recortes para OG/Redes sociales: variantes de 1200×630 en WebP, AVIF y JPG para Facebook, LinkedIn, Twitter
- Extracción de color dominante para marcadores de posición CSS (evita el desplazamiento acumulativo del diseño)
- Generación de srcset para elementos
<picture>— servir el formato y tamaño adecuados a cada dispositivo - Saneamiento de SVG — se eliminan etiquetas script, manejadores de eventos y elementos peligrosos al cargar
- Edición de metadatos: título, pie de foto, descripción, texto alternativo
- Vista en cuadrícula con búsqueda y paginación
File Manager
Separado de la biblioteca de medios — para documentos y descargas:
- Formatos compatibles: PDF, DOC/DOCX, XLS/XLSX, ZIP, RAR, TXT, CSV
- URLs de descarga limpias mediante slugs (ej.
tusitio.com/informe.pdf) - Metadatos de título y descripción
- Iconos de tipo de archivo y tamaños legibles
- Búsqueda y paginación
Form Builder
- Tipos de campo: texto, correo electrónico, teléfono, número, área de texto, selección, radio, casilla de verificación, fecha, URL, oculto, valoración, consentimiento
- Protección antispam con honeypot
- Confirmación por correo electrónico de doble opt‑in con enlaces tokenizados
- Notificaciones por correo electrónico al enviar (SMTP)
- Gestión de envíos: ver, filtrar por estado (nuevo/leído/archivado/spam), eliminar en masa
- Exportación CSV de los envíos
- Límite de tasa basado en IP por formulario
- Los formularios son multilingües — mismo sistema de grupos de traducción que publicaciones/páginas
- Incrustar formularios en páginas mediante el constructor de páginas o HTML personalizado
Newsletter
- Editor HTML enriquecido para el contenido de las campañas
- Segmentación de audiencia: por idioma, por formulario de origen, con exclusiones de correo electrónico
- Importación CSV para listas de suscriptores externos
- Envío de prueba antes de la difusión
- Las campañas se envían solo a los suscriptores que hayan verificado su dirección de correo electrónico
- Enlaces de cancelación de suscripción con tokens firmados con HMAC (a prueba de manipulaciones)
- Campañas multilingües — mismo sistema de grupos de traducción
- Los suscriptores provienen de los envíos de formularios — no se necesita un modelo de suscriptor separado
SEO, AEO y rendimiento
- Control total de las etiquetas meta por publicación/página: título meta, descripción, palabras clave
- Etiquetas Open Graph: og:title, og:description, og:image, og:type
- Etiquetas Twitter Card: twitter:card, twitter:title, twitter:description, twitter:image
- Schema.org
@graph— entidades interconectadas de Organization, Person y Article con enlacessameAsa Wikipedia, Wikidata, LinkedIn y perfiles sociales para la verificación de entidades por parte de la IA - Esquema FAQPage — generado automáticamente a partir del editor de preguntas frecuentes y los bloques de acordeón del constructor de páginas
- Esquema Speakable — marca el contenido clave como adecuado para asistentes de voz y extracción de respuestas por IA
/llms.txt— resumen del sitio generado automáticamente y amigable para la IA siguiendo el estándar llmstxt.org, con contenido multilingüe agrupado por idioma- Contenido de IA orientado a respuestas — el Asistente de IA genera contenido con respuestas directas en las primeras 150 palabras, optimizado para citas por IA
- Mapa del sitio XML automático con enlaces alternativos hreflang y hoja de estilo XSL
- robots.txt editable desde el panel de administración (rastreadores de IA permitidos por defecto, llms.txt enlazado automáticamente)
- Fuentes RSS/Atom con soporte multilingüe (
/feed,/feed/de,/feed/es) - Redirecciones 301 automáticas al cambiar el slug de una publicación o página — las cadenas de redirección se aplanan (A→B→C se convierte en A→C + B→C)
- Cabeceras de caché inteligentes: inmutable para archivos estáticos, caché corta con soporte CDN para páginas públicas, sin caché para el administrador
- Cache busting para archivos estáticos — parámetro automático
?v=con marca de tiempo en CSS/JS/imágenes - Limpieza automática de referencias rotas — al eliminar una imagen, archivo, formulario o página, se eliminan automáticamente todas las referencias a ellos en otros contenidos (publicaciones, páginas, bloques del constructor de páginas, menús)
Temas
- 15 temas de diseño incluidos, cada uno con modo oscuro y claro
- Modo de visualización predeterminado: oscuro, claro o automático (sigue la preferencia del sistema)
- Imágenes de vista previa de los temas en el panel de administración
- Los temas son CSS puro — sin paso de compilación, sin necesidad de un framework de JavaScript
- Las descripciones de los temas se traducen mediante i18n
- Temas personalizados: sube un ZIP de tema en el panel de administración — aparece en la galería al instante, sin reiniciar
- Los temas personalizados sobreviven a las actualizaciones del núcleo y pueden eliminarse desde la galería; los temas incluidos están protegidos contra el borrado accidental
Plugins
- Plugins Instalación desde un ZIP en el panel de administración — sin terminal, sin gestor de archivos
- Actualizaciones en un clic — el panel de administración comprueba una vez al día (y bajo demanda) si el servidor de actualizaciones tiene nuevas versiones de los plugins; la versión nueva muestra su changelog directamente en la tarjeta del plugin y se instala con un clic verificado por suma de comprobación, conservando configuración y datos
- Activa, desactiva, actualiza y elimina plugins desde la página de Plugins; los cambios de estado provocan el mismo reinicio automático y controlado que las actualizaciones del núcleo
- Los plugins funcionan en instalaciones con licencia — la licencia existente del CMS cubre todos los plugins gratuitos y de desarrollo propio
- Los plugins de pago llevan su propia clave de licencia (una clave por dominio, los dominios de desarrollo están exentos), validada contra el mismo servidor de licencias que el núcleo
- Abierto a desarrolladores externos — un plugin es una carpeta con un manifiesto y una función
register(ctx); puede añadir páginas de administración, tablas de base de datos, ajustes y traducciones bajo su propio namespace - Incluye un plugin de ejemplo Hello World documentado y una referencia
PLUGIN_DEV.md(guía de desarrollo de plugins) min_cms_versionse comprueba y muestra un mensaje claro en lugar de un fallo críptico- Las actualizaciones del núcleo nunca tocan los plugins instalados — el directorio de plugins está protegido, de modo que una actualización del CMS y una de un plugin son independientes; el formulario ZIP sigue disponible como vía manual de actualización
Menús
- Dos ubicaciones: cabecera, pie de página
- Menús jerárquicos con relaciones padre‑hijo (submenús)
- Enlazar a publicaciones, páginas o URLs personalizadas/externas
- Etiquetas por idioma — cada elemento del menú puede tener una etiqueta diferente por idioma (almacenado en JSON)
- Resolución automática de idioma — cuando un visitante ve una página en español, los enlaces del menú a publicaciones/páginas se resuelven a sus traducciones al español si están disponibles
- Ordenación por arrastrar y soltar
- Conmutador activo/inactivo, soporte para clases CSS, destino (
_self/_blank)
User Management
- Tres roles de usuario del CMS: Propietario (creador del sitio), Administrador (acceso completo), Editor (solo contenido)
- Invitaciones por correo electrónico con enlaces de registro tokenizados y fecha de caducidad
- Política de contraseñas: longitud mínima configurable, requisitos de mayúsculas, minúsculas y dígitos
- Restablecimiento de contraseña por correo electrónico con tokens de duración limitada
- Desactivación de cuenta sin eliminación
- Invalidación de sesión al cambiar la contraseña (un contador de versión fuerza el reinicio de sesión)
- Preferencia de tema de administración por usuario: claro, oscuro o sistema
- Perfiles de autor: nombre mostrado, biografía, URL de avatar, enlaces a LinkedIn/sitio web/GitHub (se utilizan en Schema.org
sameAspara la verificación de entidades por IA)
Seguridad
- Protección CSRF en todos los formularios (Flask‑WTF, el token es válido durante toda la sesión de 12 horas — las sesiones de edición largas nunca fallan al guardar)
- Limitación de tasa (Flask‑Limiter): 200 solicitudes/min globales, límites más estrictos en puntos finales de inicio de sesión, IA, SSL y formularios
- Protección contra fuerza bruta: 5 intentos fallidos por par IP+usuario o 20 por IP en 15 minutos bloquean nuevos intentos
- Autenticación de dos factores (opcional): códigos TOTP para cualquier aplicación de autenticación (RFC 6238, solo biblioteca estándar, sin servicios externos); desactivada de serie, el propietario la habilita para el sitio y cada usuario la activa desde su perfil
- Recuperación de 2FA: códigos de recuperación de un solo uso guardados como hash, códigos de inicio de sesión por correo como alternativa, restablecimiento por un administrador desde la página de usuarios y un archivo de emergencia (DISABLE_2FA) para un propietario único bloqueado
- Saneamiento de HTML en todo el contenido del editor (bleach — etiquetas y atributos permitidos)
- Saneamiento de SVG: elimina
<script>, manejadores de eventos, URLsjavascript:,<foreignObject>, referencias externas - Cabeceras de seguridad: X‑Frame‑Options, X‑Content‑Type‑Options, X‑XSS‑Protection, Referrer‑Policy, Permissions‑Policy, HSTS
- Prevención de redirecciones abiertas — validación de la siguiente URL en el inicio de sesión
- Almacenamiento cifrado de credenciales — contraseñas SMTP, claves API y claves de licencia cifradas con Fernet (derivado de SECRET_KEY)
- Verificación de integridad de la licencia — la firma HMAC evita la manipulación en la base de datos
- Registro de auditoría — cada acción administrativa importante se registra con usuario, IP, marca de tiempo y detalles traducidos
- Seguridad de sesión: cookies HTTP‑only, SameSite=Lax, duración de 12 horas
Copia de seguridad y restauración
- Copia de seguridad con un clic desde el panel de administración — crea un archivo ZIP que contiene:
- Volcado de la base de datos (archivo SQLite o
pg_dumpde PostgreSQL) - Todos los archivos cargados (imágenes, documentos, favicons)
- Plugins instalados (sus ajustes y datos van en el volcado de la base de datos)
- Configuración
.env(los valores sensibles se enmascaran automáticamente)
- Volcado de la base de datos (archivo SQLite o
- Restaurar desde una copia de seguridad — sube un ZIP y el sitio se restaura por completo: base de datos, archivos subidos y configuración
- Compatible con copia de seguridad/restauración tanto de SQLite como de PostgreSQL
Generador de favicons
- Cargar favicon desde el panel de administración
- Generación automática de todos los tamaños y formatos requeridos
- Compatible con archivos fuente ICO, PNG, SVG
SSL / HTTPS
- Configuración de Let's Encrypt con un clic desde el panel de administración
- Validación del dominio mediante comprobación DNS
- Delegado a un script de sistema seguro (Flask nunca escribe directamente la configuración de nginx)
- Con límite de tasa (5 por hora)
- Registrado en el registro de auditoría
Licencias y actualizaciones
- Gratuito para uso no comercial — sitios personales, blogs, proyectos educativos, organizaciones sin ánimo de lucro
- Se requiere clave de licencia para uso comercial — una clave por dominio
- Los sitios con licencia obtienen: sin atribución "Powered by", actualizaciones automáticas
- Sistema de actualización integrado: buscar actualizaciones y aplicarlas desde Configuración
- Validación de la licencia contra el servidor de actualizaciones con comprobaciones periódicas (cada 7 días)
- Almacenamiento de licencias a prueba de manipulaciones (firmado con HMAC)
Privacidad y GDPR
AliothPress está diseñado con privacidad desde el principio y no realiza solicitudes a terceros de forma predeterminada. Esta es una decisión de diseño deliberada para facilitar la implementación del CMS en jurisdicciones con estrictas normativas de protección de datos — en particular la UE (GDPR, ePrivacy), Alemania (TTDSG), el Reino Unido (UK GDPR) y Suiza (revDSG).
Cero solicitudes externas al cargar la página. Un sitio AliothPress predeterminado no realiza ninguna solicitud HTTP a ningún dominio de terceros cuando un visitante abre una página. Sin Google Fonts, sin scripts de CDN, sin rastreadores de análisis, sin iframes incrustados. Esto significa:
- No se comparten direcciones IP de visitantes con terceros sin consentimiento explícito
- No se requiere un banner de consentimiento de cookies para la configuración predeterminada
- No se necesitan acuerdos de procesamiento de datos (DPA) más allá de los de su propio proveedor de alojamiento
Recursos autohospedados:
- Fuentes web — 12 familias de fuentes se sirven por subconjunto desde
/static/fonts/como archivos WOFF2. Los navegadores descargan solo los subconjuntos de glifos realmente utilizados en cada página. Cero solicitudes a Google Fonts, Adobe Fonts o cualquier CDN de fuentes. Esto sigue la sentencia del LG München I sobre Google Fonts (Az. 3 O 17493/20, enero de 2022), que estableció que enviar direcciones IP de visitantes a Google Fonts sin consentimiento es una violación del GDPR. - Editor de texto enriquecido (AliothEditor) — el editor está integrado en el propio motor: tres pestañas sincronizadas (Visual / Markdown / HTML), conversión Markdown↔HTML mediante
marked+turndownautohospedados (static/js/vendor/), tematizado con la paleta activa del panel de administración. Cero solicitudes externas — sin CDN, sin telemetría, sin claves API. - Resaltado de sintaxis (Prism.js) — Autohospedado en
/static/js/prism/. Sin llamadas acdnjs. - Imágenes — Todas las imágenes cargadas a través de la biblioteca de medios se procesan en el servidor (redimensionadas, eliminación de EXIF, conversión a WebP/AVIF) y se sirven desde su propio dominio. Sin CDN de imágenes.
- Favicons e iconos de administración — SVG inline o autohospedados. Sin fuentes de iconos desde CDN.
Incrustaciones de vídeo (YouTube / Vimeo) — patrón de fachada. Los vídeos incrustados utilizan un enfoque de dos clics que preserva la privacidad:
- En la carga inicial de la página, el visitante ve una miniatura en caché local servida desde su propio dominio. Cero solicitudes a
youtube.com,youtube-nocookie.com,i.ytimg.com,vimeo.comoplayer.vimeo.com. - El iframe del vídeo se carga solo después de que el visitante haga clic explícitamente en el botón de reproducción, lo que constituye un consentimiento activo según el GDPR Art. 6(1)(a) y §25 TTDSG.
- Las miniaturas se obtienen una vez del lado del servidor desde el punto final oEmbed oficial del proveedor, se almacenan en caché en disco en
/static/uploads/video-thumbs/y se sirven como archivos estáticos normales con cabeceras de caché largas.
Los títulos de los vídeos que aparecen en el panel de administración (obtenidos automáticamente al pegar) también pasan por el servidor — el navegador del administrador nunca se comunica directamente con Google o Vimeo. Este enfoque sigue las recomendaciones de las autoridades de protección de datos alemanas (DSK, BayLDA, LfDI Baden‑Württemberg) para incrustar contenido de vídeo de terceros sin necesidad de un banner de cookies para el bloque de vídeo.
Asistente de IA — Cuando está activado, las solicitudes de IA se realizan de servidor a servidor desde su servidor al proveedor configurado (Anthropic Claude, DeepSeek o Google Gemini). Las direcciones IP de los visitantes y los datos del navegador nunca se reenvían al proveedor de IA. Las claves API se almacenan cifradas (cifrado simétrico Fernet derivado de SECRET_KEY).
Formularios — Sin CAPTCHA de terceros (sin Google reCAPTCHA, sin hCaptcha). La protección contra spam se maneja mediante campos honeypot y limitación de tasa basada en IP, ambos completamente autónomos. La confirmación por correo electrónico de doble opt‑in utiliza tokens firmados con HMAC generados en su propio servidor.
El análisis es opt‑in. Google Analytics, Tag Manager y el código de analítica personalizado están desactivados por defecto. Añade tu analítica en Configuración y activa el banner de consentimiento integrado con una sola casilla. Entonces Google Analytics y Tag Manager se cargan inertes como type="text/plain" y se ejecutan solo después de que el visitante acepte. La capa de consentimiento guarda la elección en localStorage y no establece ninguna cookie por sí misma. El código personalizado se inserta tal como lo introdujiste y no lo gestiona el banner, así que su consentimiento depende de ti. Con la analítica desactivada, el sitio predeterminado no muestra ningún banner ni rastreador.
Registro de auditoría — Registra acciones de administración (usuario, IP, marca de tiempo, descripción de la acción traducida) con fines de seguridad. No contiene datos de visitantes y solo es accesible para usuarios administradores.
Para operadores de sitios
AliothPress proporciona una garantía técnica sobre el comportamiento del software. La responsabilidad de publicar una política de privacidad precisa en su sitio en vivo sigue siendo suya como operador del sitio.
Nota: La descripción anterior es una declaración técnica sobre el comportamiento del software, no un asesoramiento legal. Para la implementación en producción en un contexto comercial, se recomienda una revisión única por parte de un abogado especializado en derecho de TI.
Accesibilidad
- Los 15 temas de diseño probados para accesibilidad en modo claro y oscuro
- Puntuación de Accesibilidad 100/100 en Google PageSpeed Insights en los 15 temas en ambos modos
- Fuentes e iconos autohospedados — sin CDN externos, sin cambios de diseño por font‑swap
- Se respeta
prefers-reduced-motion— desactiva la reproducción automática de presentaciones, el desplazamiento del ticker y las animaciones activadas por desplazamiento prefers-color-schemecontrola el modo oscuro/claro automático cuando el tema predeterminado es "auto"- Navegación por teclado en componentes personalizados — fachada de vídeo (botón
<button>nativo), presentación de diapositivas (teclas de flecha), lightbox (Escape), acordeón (elemento<details>nativo) <html lang="">se establece por página según el idioma del contenido; alternativashreflangen el HTML y en el mapa del sitio- Diseño RTL para contenido en árabe y hebreo
Instalación
AliothPress se instala sin necesidad de terminal. Crear un servidor en la nube (Hetzner, DigitalOcean, Linode, Vultr), pegar el script cloud‑init proporcionado y abrir el navegador. El asistente de configuración se encarga del resto:
- Elegir el idioma
- Elegir una base de datos (SQLite para simplicidad, PostgreSQL para escalabilidad)
- Crear la cuenta de administrador
- Nombrar el sitio e introducir la clave de licencia (opcional)
Consulte la Guía de instalación para obtener instrucciones detalladas paso a paso con capturas de pantalla.
Requisitos del servidor: Ubuntu Server (se recomienda LTS), 2 vCPU, 4 GB de RAM. Funciona en cualquier VPS estándar — por ejemplo, Hetzner, DigitalOcean, Linode o Vultr.
Estructura del proyecto
aliothpress/
├── app.py # Núcleo de la aplicación — rutas, lógica, API
├── config.py # Configuración (BD, cargas, procesamiento de imágenes, seguridad)
├── models.py # Modelos de base de datos (14 modelos)
├── block_renderer.py # Motor de renderizado de bloques del constructor de páginas
├── webmcp.py # WebMCP — manifiesto de descubrimiento de agentes, búsqueda de contenido público, endpoints de agentes
├── twofa.py # Autenticación de dos factores opcional (TOTP, códigos de recuperación)
├── schema_org.py # Constructores de gráficos Schema.org JSON‑LD (datos estructurados SEO)
├── i18n.py # Sistema de internacionalización
├── updater.py # Validación de licencia y sistema de actualizaciones
├── migrate.py # Migraciones acumulativas de base de datos (se ejecutan automáticamente al actualizar)
├── plugin_system.py # Sistema de plugins — detección, control de licencias, instalación ZIP, interfaz de administración
├── PLUGIN_DEV.md # Referencia de desarrollo de plugins (incluida en cada instalación)
├── install.py # Ayudantes de instalación
├── requirements.txt # Dependencias de Python
│
├── plugins/ # Plugins instalados (protegidos frente a las actualizaciones del núcleo)
│ └── hello_world/ # Plugin de ejemplo — cópialo para crear el tuyo
│ ├── plugin.json # Manifiesto
│ ├── __init__.py # Punto de entrada register(ctx)
│ └── i18n/ # Traducciones del plugin (en, de, es)
│
├── .env # Variables de entorno (secretos, URI de BD)
├── .env.example # Archivo de entorno de ejemplo
│
├── static/
│ ├── js/
│ │ ├── public.js # Scripts del sitio público
│ │ ├── page-builder-public.js # Renderizado frontend del constructor de páginas
│ │ ├── admin-image-picker.js # Selector compartido de la biblioteca de medios (admin)
│ │ ├── webmcp-core.js # Motor WebMCP — registro de herramientas, ciclo de vida, CSRF, i18n
│ │ ├── webmcp-admin.js # Herramientas de administración WebMCP (contenido, páginas del constructor, menús, búsqueda)
│ │ ├── webmcp-public.js # Herramientas públicas WebMCP (búsqueda en el sitio, rellenar y enviar formularios)
│ │ ├── alioth-editor.js # AliothEditor — editor de texto enriquecido integrado (Visual / Markdown / HTML)
│ │ ├── vendor/ # Librerías de terceros autohospedadas (marked, turndown + GFM, qrcode)
│ │ └── prism/ # Prism.js autohospedado (resaltado de sintaxis)
│ │
│ ├── css/
│ │ ├── core.css # Estilos principales
│ │ ├── admin.css # Estilos del panel de administración
│ │ ├── components.css # Componentes de la interfaz de usuario
│ │ ├── typography.css # Sistema tipográfico
│ │ ├── responsive.css # Puntos de ruptura responsivos y estilos móviles
│ │ ├── setup.css # Estilos del asistente de configuración
│ │ ├── page-builder-blocks.css # Estilos de bloques del constructor de páginas
│ │ ├── page-builder-editor.css # Interfaz de usuario del editor del constructor de páginas
│ │ ├── alioth-editor.css # Estilos de AliothEditor (tokens --adm-* del admin, claro y oscuro)
│ │ └── themes/ # 15 temas de diseño
│ │ ├── stellar-origin/
│ │ │ ├── theme.css # Estilos del tema (modo oscuro + claro)
│ │ │ └── preview.svg # Imagen de vista previa del tema
│ │ └── ... (14 temas más)
│ │
│ ├── i18n/
│ │ ├── en.json # Traducciones del administrador (inglés)
│ │ ├── public.json # Traducciones del sitio público
│ │ ├── setup.json # Traducciones del asistente de configuración
│ │ ├── default_pages.json # Contenido predeterminado de páginas legales
│ │ └── ... (30 archivos de idioma más — 31 idiomas en total)
│ │
│ ├── legal/
│ │ ├── eula_en.html # EULA en inglés
│ │ └── ... (30 idiomas más — 31 archivos EULA en total)
│ │
│ ├── img/
│ │ └── ... # Iconos de la interfaz de administración y recursos estáticos
│ │
│ ├── fonts/ # Fuentes web autohospedadas (WOFF2 por subconjunto, compatibles con GDPR)
│ │ ├── inter/
│ │ ├── outfit/
│ │ └── ... (12 familias de fuentes, divididas por subconjunto — los navegadores descargan solo lo que se usa)
│ │
│ ├── uploads/
│ │ ├── favicon/ # Archivos de favicon cargados
│ │ └── files/ # Documentos cargados (PDF, DOCX, etc.)
│ │
│ └── sitemap.xsl # Hoja de estilo XSL para el mapa del sitio XML
│
└── templates/
├── setup.html # Asistente de instalación
│
├── components/
│ └── admin-bar.html # Componente de barra de administración
│
├── admin/
│ ├── base.html # Plantilla base del diseño de administración
│ ├── dashboard.html # Panel de control con resumen de estadísticas
│ ├── login.html # Página de inicio de sesión
│ ├── login_2fa.html # Segundo paso de inicio de sesión (código 2FA)
│ ├── settings.html # Configuración del sitio (identidad, SEO, AEO, redes sociales, correo)
│ ├── themes.html # Navegador de temas y activación
│ ├── menus.html # Editor de menús (cabecera, pie de página, barra lateral)
│ ├── ai.html # Configuración y herramientas del Asistente de IA
│ ├── tools.html # Herramientas SEO y AEO (sitemap, robots.txt, llms.txt)
│ ├── users.html # Gestión de usuarios e invitaciones
│ ├── profile.html # Editor de perfil de usuario
│ ├── twofa_setup.html # Configuración de 2FA (código QR, primera comprobación)
│ ├── twofa_recovery.html # Códigos de recuperación mostrados tras la configuración
│ ├── audit_log.html # Visor del registro de auditoría de seguridad
│ ├── backup.html # Copia de seguridad y restauración
│ ├── accept_invite.html # Aceptación de invitación de equipo
│ ├── forgot_password.html # Solicitud de restablecimiento de contraseña
│ ├── reset_password.html # Formulario de restablecimiento de contraseña
│ │
│ ├── posts/
│ │ ├── list.html # Lista de publicaciones con búsqueda y filtros
│ │ ├── new.html # Crear nueva publicación
│ │ ├── edit.html # Editar publicación (con panel SEO)
│ │ └── translate.html # Editor de traducción
│ │
│ ├── pages/
│ │ ├── list.html # Lista de páginas
│ │ ├── new.html # Crear nueva página
│ │ ├── edit.html # Editar página
│ │ ├── translate.html # Editor de traducción
│ │ └── builder.html # Constructor visual de páginas
│ │
│ ├── forms/
│ │ ├── list.html # Lista de formularios
│ │ ├── new.html # Crear nuevo formulario
│ │ ├── edit.html # Editar formulario y campos
│ │ ├── submissions.html # Lista de envíos del formulario
│ │ └── submission_detail.html # Vista de un envío individual
│ │
│ ├── newsletter/
│ │ ├── list.html # Lista de campañas de boletín
│ │ ├── new.html # Crear nueva campaña
│ │ ├── edit.html # Editar contenido de la campaña
│ │ └── translate.html # Editor de traducción
│ │
│ ├── media/
│ │ ├── library.html # Biblioteca de medios – vista en cuadrícula
│ │ ├── upload.html # Cargar imagen
│ │ ├── edit.html # Editor de metadatos de imagen
│ │ └── favicon.html # Gestor de favicon
│ │
│ └── files/
│ ├── list.html # Gestor de archivos – lista
│ ├── upload.html # Cargar archivo
│ └── edit.html # Editor de metadatos de archivo
│
└── public/
├── base.html # Diseño base del sitio público
├── index.html # Página de inicio (lista de publicaciones)
├── post.html # Plantilla de publicación individual
├── page.html # Plantilla de página individual
├── tag.html # Publicaciones filtradas por etiqueta
├── tags_hub.html # Vista general de todas las etiquetas
├── categories_hub.html # Vista general de todas las categorías
├── message.html # Mensajes del sistema (confirmación, cancelación de suscripción)
└── 404.html # Página 404 personalizada
Licencia
AliothPress es software propietario. Gratuito para uso no comercial. Se requiere una clave de licencia para uso comercial. Consulte el Acuerdo de Licencia de Usuario Final para conocer los términos completos.
Pila tecnológica
- Backend: Python 3, Flask, SQLAlchemy, Flask‑Login, Flask‑WTF, Flask‑Limiter
- Base de datos: SQLite (predeterminado) o PostgreSQL
- Procesamiento de imágenes: Pillow (WebP, AVIF, redimensionado, eliminación de EXIF, extracción de color)
- Editor: AliothEditor (integrado; pestañas Visual / Markdown / HTML, conversión MD↔HTML, bloques de código listos para Prism)
- IA: APIs de Anthropic, DeepSeek, Google Gemini (HTTP, sin dependencia de SDK)
- Seguridad: bleach, cryptography (Fernet), HMAC, Werkzeug (hashing de contraseñas scrypt)
- Frontend: Vanilla JS, propiedades personalizadas de CSS, sin dependencia de frameworks
Idiomas compatibles
Interfaz de administración, interfaz pública, páginas legales y asistente de configuración — todo completamente traducido:
ar bg cs da de el en es fi fr he hi hr hu id it ja ko nb nl pl pt ro ru sk sv th tr uk vi zh