SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor

BookStack, Wiki.js u Outline: qué wiki autoalojado elegir

Compara BookStack, Wiki.js y Outline por instalación, editores, inicio de sesión y búsqueda, con una recomendación clara para administradores individuales y equipos.

Qué wiki autoalojada debería ejecutar

Una wiki autoalojada reúne los documentos de tu equipo en un único lugar consultable, en un servidor que controlas. BookStack, Wiki.js y Outline cumplen esa función. La diferencia principal está en cuánto tienes que ensamblar antes de que se cargue la primera página y en quién puede iniciar sesión.

BookStack es la opción más sencilla de poner en marcha y la que impone una estructura más definida. Wiki.js ofrece la mayor variedad de editores dentro de un único árbol de páginas. Outline proporciona la mejor experiencia de escritura de las tres, y su configuración de producción documentada requiere un proveedor de identidad externo para crear el espacio de trabajo inicial.

Todo lo que sigue se basa en la documentación de los propios proyectos y en sus archivos de configuración publicados. Esta es una comparación de capacidades, no una prueba de rendimiento. Los números de versión y los requisitos incluyen una fecha porque los tres proyectos evolucionan.

La estructura es la verdadera elección

BookStack define la estructura de tu contenido. Una página está dentro de un libro, un libro puede contener capítulos y las estanterías agrupan libros. No puedes inventar un quinto nivel. Esa limitación es el producto: un autor nuevo sabe dónde colocar una página porque sólo hay un lugar posible. El coste es que el contenido que no encaja en la estructura debe adaptarse a ella.

Wiki.js usa un árbol de rutas, como las carpetas de un disco. Una página en ops/backup/restic queda donde la coloques y tú eliges la profundidad. Nada impide que dos personas archiven el mismo tema en ramas diferentes, por lo que una instancia de Wiki.js necesita que una persona sea responsable del árbol.

Outline usa colecciones con documentos anidados dentro de otros documentos. Para mover un documento, basta con arrastrarlo con el ratón. Es la opción más flexible de las tres y, por tanto, también la que se desordena con más facilidad.

BookStack: la instalación mínima

BookStack es una aplicación PHP respaldada por MySQL. En octubre de 2026, los requisitos documentados son PHP 8.2 o posterior y MySQL 8.0 o MariaDB 10.6 o posterior, además de Composer 2.2 o posterior si se instala desde el código fuente. La línea de versiones actual es 26.09, publicada el 24 de septiembre de 2026, y la versión estable más reciente es 26.09.2, una versión de seguridad del 20 de octubre de 2026. A partir de 26.09, es necesario establecer un valor de APP_KEY, algo que ya cubren los pasos del contenedor que aparecen más abajo. BookStack también publicó un aviso crítico de seguridad de PHP el 21 de octubre de 2026: actualice los paquetes de PHP subyacentes o descargue y vuelva a crear el contenedor con una imagen corregida, porque la versión de BookStack por sí sola no confirma que PHP esté corregido.

El proyecto admite oficialmente los scripts de instalación y las instrucciones para las versiones LTS de Ubuntu que figuran en su documentación: actualmente, 22.04, 24.04 y 26.04. En ocasiones también publica guías y scripts no compatibles para otros entornos. El script para 24.04 instala Apache, MySQL 8.0 y PHP 8.3. En 26.04, use installation-ubuntu-26.04.sh en los comandos siguientes; instala MySQL 8.4 y PHP 8.5.

wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.sh

Lea la advertencia de ese script antes de ejecutarlo. La documentación indica que es "ONLY FOR A FRESH OS, it will install Apache, MySQL 8.0 & PHP 8.3 and could OVERWRITE any existing web setup on the machine". El script para 24.04 comprueba si existe una configuración de Apache y si hay datos de MySQL, y cancela la instalación antes de iniciarla si encuentra cualquiera de los dos. Use contenedores en ese caso o instale BookStack manualmente sobre una pila LAMP existente en Ubuntu 24.04.

La opción con contenedores usa la imagen de LinuxServer.io, una de las dos configuraciones comunitarias de contenedores que aparecen en la documentación de BookStack. BookStack necesita una clave de cifrado de sesión y no servirá páginas sin ella, así que genérela primero.

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

Copie el valor mostrado en APP_KEY y escriba después el servicio. Este servicio también necesita una base de datos MySQL o MariaDB existente. Establezca los valores de DB_* para que coincidan con ella, porque el fragmento no crea un servicio de base de datos.

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - APP_URL=https://wiki.example.com
      - APP_KEY=paste_the_generated_key_here
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=change_me
      - DB_DATABASE=bookstackapp
    volumes:
      - ./config:/config
    ports:
      - 6875:80
    restart: unless-stopped

APP_URL debe coincidir con la dirección que los lectores escriben realmente, incluido el esquema y cualquier puerto. Establézcalo en http://localhost y sirva después el sitio mediante HTTPS; los enlaces generados y las redirecciones apuntarán al host incorrecto, y los lectores verán una página de inicio de sesión que vuelve a cargarse a sí misma. Si los archivos de Compose son nuevos para usted, empiece por los fundamentos de Docker Compose en un VPS antes de continuar con este ejemplo.

Inícielo y compruebe que la aplicación responde, no sólo que el contenedor está en ejecución:

docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login

Un 200 OK significa que la aplicación PHP se inició y llegó a la base de datos. Un 500 requiere revisar el registro de errores de la aplicación para diagnosticarlo. De forma predeterminada, BookStack escribe sus errores en un archivo de registro en lugar de hacerlo en la salida del contenedor. Abra ./config/log/bookstack/laravel.log en el host para ver la causa. docker compose logs bookstack muestra los mensajes de inicio del propio contenedor, que quizá no incluyan el error de la aplicación.

Wiki.js: un árbol, varios editores

Wiki.js es una aplicación de Node.js. La configuración documentada de Docker la combina con PostgreSQL, aunque el software también admite MySQL, MariaDB, MSSQL y SQLite. Este es el archivo compose de la página de Docker del proyecto:

services:
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: none
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    init: true
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"
volumes:
  db-data:

Cambie POSTGRES_PASSWORD y DB_PASS juntos antes de ejecutarlo, porque forman una sola credencial y el valor de ejemplo es público. La etiqueta está fijada en ghcr.io/requarks/wiki:2 intencionadamente. La documentación desaconseja latest, porque un salto de versión principal cambia el esquema de la base de datos con la instancia en ejecución.

La versión 2 es la línea que se debe ejecutar. Al 27 de octubre de 2026, la versión 2 más reciente es 2.5.317, una compilación de corrección de errores del 23 de octubre de 2026 que reconstruye la imagen con las actualizaciones de seguridad más recientes de Node. Las versiones 2 se publican ahora desde un repositorio requarks/wiki-v2 independiente, y la etiqueta de imagen :2 todavía las sigue. La versión 3 está en beta pública. Su documentación de instalación indica que sus imágenes llevan las etiquetas 3.0.0-beta y que las etiquetas simples 3 y 3.0 no funcionarán hasta que termine la fase beta. Trátela como una versión preliminar, no como un objetivo de producción. La versión anterior, 2.5.316 del 2 de octubre de 2026, añadió una utilidad de exportación para trasladar el contenido a la versión 3 más adelante.

En la primera carga, Wiki.js le guía mediante una configuración en el navegador que crea la cuenta de administrador. Hasta que la termine, cualquiera que alcance el puerto verá ese asistente, así que coloque el servicio detrás de su proxy inverso y TLS (seguridad de la capa de transporte) antes de abrir el firewall. Una wiki con su propio nombre de host encaja de forma natural detrás de Traefik delante de varias aplicaciones Docker cuando el servidor aloja más de este servicio.

La elección del editor es el motivo por el que muchas personas eligen Wiki.js. Una instancia puede contener páginas Markdown, páginas del editor visual, páginas HTML sin procesar y páginas AsciiDoc unas junto a otras. Esto resulta útil cuando importa contenido antiguo en un formato que preferiría no convertir. También puede acabar con cuatro estilos propios en una sola wiki, así que decida el editor predeterminado desde el primer día y deje constancia de esa decisión.

Esquema: el mejor editor, con los requisitos previos más exigentes

Outline es lo que normalmente quieren decir quienes buscan una herramienta de notas con una experiencia similar a la de un producto comercial. Es una aplicación Node.js, y la versión actual a fecha de October 27, 2026 es 1.12.0, publicada el October 23, 2026. Esa versión traslada su imagen Docker a una versión de Node que corrige varias vulnerabilidades de Node divulgadas recientemente, así que actualice las instalaciones antiguas. Su archivo de entorno de ejemplo indica lo que necesita: PostgreSQL mediante DATABASE_URL, Redis mediante REDIS_URL, dos secretos aleatorios y un URL accesible públicamente.

openssl rand -hex 32
openssl rand -hex 32

Ejecute ese comando dos veces y conserve ambos valores. El primero se convierte en SECRET_KEY y el segundo en UTILS_SECRET. La parte principal del archivo de entorno queda así:

NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data

PGSSLMODE=disable sólo es correcto cuando la base de datos está en la misma máquina o en la misma red Docker. Omítalo si accede a la base de datos a través de una red; de lo contrario, la conexión viaja sin cifrar. Los archivos adjuntos ya no obligan a usar almacenamiento de objetos: FILE_STORAGE=local escribe las cargas en el directorio indicado arriba, que debe ser un volumen en el que el contenedor pueda escribir y que esté incluido en sus copias de seguridad. Configure FILE_STORAGE=s3 con los valores de AWS_* si quiere guardar esos archivos en un bucket compatible con S3.

Ahora viene la parte que sorprende a muchos usuarios. Outline no incorpora un inicio de sesión con nombre de usuario y contraseña. Su propia configuración de ejemplo indica que se necesitan credenciales de inicio de sesión de terceros: "se requiere al menos UNO DE estos elementos para que la instalación funcione; de lo contrario, no tendrá opciones de inicio de sesión". Los proveedores documentados incluyen Google, Slack, Microsoft Entra, Discord y cualquier servidor genérico de OpenID Connect (OIDC) mediante OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI y OIDC_USERINFO_URI. Los espacios de trabajo existentes también pueden habilitar claves de acceso y enlaces o códigos enviados por correo electrónico; el inicio de sesión por correo necesita SMTP y no omite el SSO en las cuentas vinculadas a un proveedor SSO.

Por tanto, el coste real de la configuración de producción documentada de Outline es Outline más PostgreSQL, Redis y un proveedor de identidad. Si su equipo ya inicia sesión con Google Workspace o Microsoft Entra, Outline resulta muy atractivo. Si no es así, también tendrá que alojar por su cuenta algo como Keycloak o Authentik, que es un segundo servicio que debe actualizar y respaldar. Reserve memoria suficiente: la recomendación de Outline es aproximadamente 512 MB por proceso web, establecido mediante WEB_CONCURRENCY, además de la base de datos y Redis.

Cómo gestiona cada uno quién puede leer cada contenido

BookStack incluye cuentas locales con correo electrónico y contraseña de forma predeterminada, y admite LDAP, SAML2 y OIDC como alternativas. Los permisos se establecen por rol y se pueden sobrescribir en una estantería, un libro, un capítulo o una página concretos. Los permisos de libros y capítulos se heredan en el contenido secundario salvo que se sobrescriban; los permisos de las estanterías se deben copiar explícitamente a los libros.

Wiki.js también incluye cuentas locales y añade una larga lista de estrategias que se habilitan en el área de administración. Sus reglas de página conceden o deniegan acceso según un patrón de ruta. Esto es potente y fácil de configurar mal, porque una regla escrita para ops/* cubre silenciosamente todas las páginas que se archiven después bajo esa ruta.

Outline usa el proveedor de identidad para la pertenencia mediante SSO, y dentro de Outline se controla el acceso por colección, documento y grupo. Los usuarios eliminados del proveedor de identidad cierran su sesión la próxima vez que cargan Outline; suspéndalos en Outline para finalizar inmediatamente las sesiones existentes.

Cómo funciona la búsqueda en cada uno

La búsqueda es lo que hace que una wiki justifique su existencia o se convierta en una carpeta llena de archivos olvidados.

BookStack busca en la base de datos y ofrece a los lectores un lenguaje de consulta que pueden aprender en un minuto. Las comillas, como en "london meeting", exigen que aparezca esa cadena exacta. Los corchetes buscan etiquetas: [location=london] hace coincidencias por nombre de etiqueta, valor o ambos, con comparaciones como !=, >= y like. Las llaves filtran por metadatos, como en {created_after:2016-12-30}. Cualquier término exacto, de etiqueta o de filtro se puede excluir anteponiéndole -. BookStack limita cuántos términos de cada tipo puede contener una consulta, por lo que una consulta muy larga se recorta en lugar de ejecutarse.

Wiki.js trata la búsqueda como un módulo conectable. Los motores documentados son un motor básico de base de datos, un motor de PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch y Azure Search. El motor básico busca coincidencias en títulos, descripciones y rutas, no en el contenido de las páginas. Si ejecuta PostgreSQL, cambie al motor de PostgreSQL en el área de administración, porque utiliza el índice de texto completo de la base de datos en lugar de coincidencias simples. Reserve Elasticsearch para una wiki lo bastante grande como para justificar la ejecución y actualización de un segundo servicio de búsqueda.

Outline busca en los índices de texto completo de PostgreSQL. Su búsqueda de palabras clave integrada no necesita un servicio de búsqueda independiente. Para una wiki de equipo con unos pocos miles de documentos, es la opción que requiere menos trabajo de las tres.

Cuál se adapta mejor a sus necesidades

Elija BookStack si quiere tener la wiki funcionando esta tarde y prefiere debatir sobre el contenido en lugar de sobre la estructura. Tiene menos componentes: una aplicación PHP y una base de datos MySQL. Es adecuado para procedimientos internos y documentación para clientes, y para equipos donde la mayoría de los redactores no son ingenieros. También es el más fácil de respaldar de los tres, porque el estado consta de un volcado de la base de datos, los archivos subidos y la configuración de .env, incluido APP_KEY.

Elija Wiki.js si necesita un editor específico o una estrategia de autenticación específica que los otros no ofrecen, o si está importando una gran cantidad de Markdown o AsciiDoc existente y quiere conservar la estructura de rutas. Acepte que ejecutará una pila más pesada y fije la etiqueta de la versión principal.

Elija Outline si la calidad de la redacción es lo más importante, la wiki es para un equipo y no para el público, y ya tiene un proveedor de identidad. Esa configuración se ve recompensada con un editor que los usuarios disfrutan de verdad. No lo elija como su primera aplicación autoalojada.

Si ninguna de las tres opciones encaja, normalmente el problema está en el tipo de contenido. Las facturas y los contratos escaneados deben almacenarse en un sistema de gestión documental como Paperless-ngx, no en una wiki, y forzarlos dentro de una wiki explica por qué tantas terminan abandonadas. El otro desajuste habitual es necesitar un espacio de trabajo en lugar de una wiki, con documentos, tablas y una pizarra en un mismo lienzo; en ese caso, un espacio de trabajo AFFiNE autoalojado encaja mejor que cualquiera de las tres opciones anteriores. Para conocer otras opciones que merecen un lugar en su propio servidor, consulte la selección de aplicaciones autoalojadas para 2026.

Dimensionamiento y copias de seguridad

Las tres opciones caben en un VPS pequeño. El mínimo realista varía según lo que se ejecute detrás de cada una. BookStack consta de un proceso de aplicación y MySQL. Wiki.js consta de un proceso de Node y PostgreSQL. Outline consta de un proceso de Node, PostgreSQL y Redis. Normalmente también necesita un proveedor de identidad. Por eso es la opción a la que conviene asignar más memoria.

Haga una copia de seguridad de la base de datos y de los archivos subidos al mismo tiempo. Restaure ambos elementos en una instancia desechable antes de depender de esa copia. Una copia de seguridad de una wiki que nunca se ha restaurado es sólo una suposición. En BookStack, esto significa mysqldump y el volumen /config. En Wiki.js y Outline, significa pg_dump y el volumen de datos. En Outline, también incluye lo que se encuentre en FILE_STORAGE_LOCAL_ROOT_DIR.

FAQ

Que wiki autoalojada es más fácil de instalar?

BookStack. Es una aplicación PHP única con una base de datos MySQL, y el proyecto incluye un script de instalación para Ubuntu 24.04 que configura Apache, MySQL 8.0 y PHP 8.3 en una sola ejecución. La imagen de contenedor necesita un APP_KEY, un APP_URL y las credenciales de una base de datos existente. Wiki.js añade un entorno de ejecución Node y un servidor PostgreSQL, mientras que Outline añade Redis y un proveedor de identidad externo para su configuración inicial documentada.

Puedo usar Outline sin Google ni otro proveedor SSO?

Su configuración de producción documentada requiere un proveedor para crear el espacio de trabajo inicial. Outline no tiene inicio de sesión local con nombre de usuario y contraseña. Su configuración de ejemplo indica que se requiere al menos un proveedor de inicio de sesión de terceros; de lo contrario, no habrá ninguna opción de inicio de sesión. Puede usar Google, Slack, Microsoft Entra, Discord o cualquier servidor OpenID Connect genérico, como Keycloak o Authentik autoalojados. Los espacios de trabajo existentes pueden habilitar passkeys o enlaces y códigos de correo electrónico, pero el inicio de sesión por correo requiere SMTP; las cuentas vinculadas a SSO siguen usando ese proveedor.

Debo instalar Wiki.js 3 o Wiki.js 2?

La versión 2. A fecha del 27 de octubre de 2026, la versión 2 más reciente es la 2.5.317, publicada el 23 de octubre de 2026, y la versión 3 todavía está en beta; sus imágenes llevan una etiqueta 3.0.0-beta. Fije la imagen en ghcr.io/requarks/wiki:2 en lugar de latest, porque un cambio de versión principal modifica el esquema de la base de datos mientras la instancia está en ejecución.

Cual ofrece la mejor búsqueda?

Cada uno destaca en aspectos diferentes. BookStack ofrece a los lectores un lenguaje de consulta con frases exactas, filtros de etiquetas como [location=london] y filtros de metadatos como {created_after:2016-12-30}, y cualquiera de esos términos se puede excluir con un - inicial. La búsqueda de palabras clave integrada de Outline no necesita un servicio de búsqueda independiente. Wiki.js es el más configurable, porque permite elegir el motor, y el motor PostgreSQL busca en el contenido de las páginas, algo que el motor básico no hace.

Puedo mover mi contenido de uno a otro más adelante?

En parte, pero debe prever trabajo manual. Los tres exportan Markdown, pero la importación integrada de BookStack acepta su formato ZIP Portable, por lo que Markdown por sí solo no permite importar directamente en BookStack. La estructura no se conserva correctamente: los libros y capítulos de BookStack no tienen un equivalente en los documentos anidados de Outline, y las rutas de Wiki.js no se corresponden con la jerarquía fija de BookStack. Los archivos adjuntos, los permisos y el historial de las páginas son los elementos con más probabilidades de perderse, así que exporte una muestra y compruébelos antes de comprometerse con una migración.

¿Te resultó útil este artículo?

#bookstack#wikijs#outline#wiki#self-hosting#knowledge-base