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 autoalojado debería ejecutar
Un wiki autoalojado reúne los documentos de tu equipo en un único lugar con búsqueda, en un servidor que controlas. BookStack, Wiki.js y Outline cumplen esa función. Se diferencian sobre todo por la cantidad de componentes que debes configurar antes de que se cargue la primera página y por quién puede iniciar sesión.
BookStack es el más sencillo de poner en marcha y el 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 los tres y no permite que nadie inicie sesión hasta que conectes un proveedor de identidad externo.
Todo lo que aparece a continuación procede de la documentación de los proyectos y de 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 julio de 2026, los requisitos documentados son PHP 8.2 o posterior y MySQL 8.0 o MariaDB 10.6 o posterior. Si realiza la instalación desde el código fuente, también necesita Composer 2.2 o posterior. La rama de versiones actual es 26.05.
El proyecto publica un script de instalación para cada versión de Ubuntu. El script para 24.04 instala Apache, MySQL 8.0 y PHP 8.3.
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.shLea la advertencia del 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". En un servidor que ya responde en el puerto 80, el script ocupa ese puerto y sobrescribe la configuración de Apache. En ese caso, use contenedores o instale BookStack manualmente sobre una pila LAMP existente en Ubuntu 24.04.
La opción con contenedores usa la imagen de LinuxServer.io, que es la opción indicada por 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 appkeyCopie el valor mostrado en APP_KEY y escriba el servicio:
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-stoppedAPP_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. De lo contrario, los enlaces y las redirecciones generados apuntarán al host incorrecto y los lectores verán una página de inicio de sesión que vuelve a cargarse indefinidamente. Si los archivos de Compose son nuevos para usted, empiece por Conceptos básicos de Docker Compose en un VPS antes de continuar con este tutorial.
Inicie el servicio 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/loginUn 200 OK indica que la aplicación PHP se inició y pudo acceder a la base de datos. Un 500 casi siempre indica que APP_KEY está vacío o que las credenciales de la base de datos no coinciden. docker compose logs bookstack muestra cuál de las dos causas se produjo.
Wiki.js: un árbol, varios editores
Wiki.js es una aplicación Node.js. La configuración documentada con Docker lo combina con PostgreSQL, aunque el software también admite MySQL, MariaDB, MSSQL y SQLite. Este es el archivo compose de la propia 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 de forma intencionada. La documentación desaconseja latest, porque un salto de versión principal cambia el esquema de la base de datos mientras la instancia está en ejecución.
La versión 2 es la rama que debe ejecutar. En julio de 2026, la versión 2 más reciente es la 2.5.314, publicada en mayo de 2026. Existe la versión 3, y su propia documentación indica: "Este sitio corresponde a la versión beta inestable de Wiki.js 3.0. NO debe instalarla en producción." Trate la etiqueta :3 como una versión preliminar.
En la primera carga, Wiki.js le guía por una configuración en el navegador que crea la cuenta de administrador. Hasta que la complete, cualquiera que llegue al puerto verá ese asistente. Por tanto, coloque el servicio detrás de su proxy inverso y de TLS (seguridad de la capa de transporte) antes de abrir el firewall. Una wiki con su propio nombre de host se integra de forma natural detrás de Traefik delante de varias aplicaciones Docker cuando el servidor aloja más servicios además de este.
La elección del editor es el motivo por el que muchas personas eligen Wiki.js. Una instancia puede contener, de forma conjunta, páginas Markdown, páginas del editor visual, páginas HTML sin procesar y páginas AsciiDoc. Esto resulta útil al importar contenido antiguo en un formato que preferiría no convertir. También puede hacer que una sola wiki termine con cuatro estilos editoriales distintos. Por eso, decida el editor predeterminado desde el primer día y documente 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 julio de 2026 es 1.9.2. Su archivo de entorno de ejemplo muestra 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 32Ejecute 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/dataPGSSLMODE=disable sólo es correcto cuando la base de datos está en la misma máquina o en la misma red de Docker. Omítalo si la base de datos se alcanza a través de una red; de lo contrario, la conexión viajará sin cifrar. Los archivos adjuntos ya no obligan a usar almacenamiento de objetos: FILE_STORAGE=local escribe las cargas en el directorio anterior, que debe ser un volumen donde el contenedor pueda escribir y que esté incluido en las copias de seguridad. Configure FILE_STORAGE=s3 con los valores de AWS_* si quiere almacenar esos archivos en un bucket compatible con S3.
Ahora viene la parte que sorprende a muchas personas. 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 habrá 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.
Por tanto, el coste real 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, esta última pieza le llevará diez minutos y Outline resulta muy atractivo. Si no es así, también tendrá que alojar por su cuenta algo como Keycloak o Authentik, que es otro servicio que debe actualizar y respaldar. Reserve memoria suficiente: las indicaciones de Outline recomiendan aproximadamente 512 MB por proceso web, configurados 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 de forma predeterminada cuentas locales con correo electrónico y contraseña, y admite LDAP, SAML2 y OIDC como alternativas. Los permisos se configuran por rol y se pueden sobrescribir en una estantería, un libro, un capítulo o una página concretos. Como la jerarquía es fija, los permisos se heredan dentro de ella de forma predecible.
Wiki.js también incluye cuentas locales y añade una lista extensa 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, pero es fácil configurarlo mal, porque una regla escrita para ops/* cubre silenciosamente todas las páginas que posteriormente archive bajo esa ruta.
Outline delega completamente esta cuestión. La pertenencia sigue la configuración del proveedor de identidad, y dentro de Outline se controla el acceso por colección y por grupo. Cuando alguien deja la empresa, no queda ninguna cuenta local, lo que supone una ventaja real si el proveedor de identidad ya es el sistema que se utiliza para revocar el acceso.
Cómo funciona la búsqueda en cada uno
La búsqueda determina si una wiki resulta útil o se convierte en una carpeta de archivos olvidados.
BookStack busca en la base de datos y ofrece a los lectores un lenguaje de consultas que pueden aprender en un minuto. Las comillas, como en "london meeting", exigen que aparezca esa cadena exacta. Los corchetes buscan etiquetas: [location=london] encuentra 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 la cantidad de términos de cada tipo que 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 de base de datos básico, un motor de PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch y Azure Search. El motor básico es suficiente para unos cientos de páginas. Si ejecuta PostgreSQL, cambie al motor de PostgreSQL en el área de administración, porque usa el índice de texto completo de la propia base de datos en lugar de una coincidencia simple. Reserve Elasticsearch para una wiki lo bastante grande como para que acepte ejecutar y actualizar un segundo servicio de búsqueda.
Outline busca en los índices de texto completo de PostgreSQL. No hay ningún motor que elegir ni nada que ajustar, y también busca en el texto de los documentos cargados. Para una wiki de equipo con unos pocos miles de documentos, es la opción que requiere menos trabajo de las tres. Tampoco hay ningún ajuste que permita intervenir si alguna vez deja de ser suficientemente rápida.
Qué opción le conviene
Elija BookStack si quiere tener la wiki en funcionamiento esta misma 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, así como para equipos en los que la mayoría de los autores no son ingenieros. También es el más fácil de respaldar, porque todo el estado consta de un volcado de la base de datos y el directorio de cargas.
Elija Wiki.js si necesita un editor concreto o una estrategia de autenticación específica que las otras opciones no ofrecen, o si va a importar una gran cantidad de Markdown o AsciiDoc existente y quiere conservar la estructura de rutas. Acepte que ejecutará una pila más compleja 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 está destinada a un equipo y no al público, y ya dispone de un proveedor de identidad. Esa configuración permite usar un editor que los usuarios realmente disfrutan. No lo elija como primera aplicación autohospedada.
Si ninguna de las tres opciones encaja, normalmente el problema está en el tipo de contenido. Las facturas y los contratos escaneados corresponden a un sistema de gestión documental como Paperless-ngx, no a una wiki. Forzarlos a entrar en una wiki es la razón por la que tantas wikis terminan abandonadas. Otro caso 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 autohospedado encaja mejor que cualquiera de las tres opciones anteriores. Para obtener una visión más amplia de las aplicaciones que merecen un lugar en su propio servidor, consulte la lista breve de opciones de autohospedaje 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
¿Qué 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 publica 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 sólo necesita un APP_KEY y las credenciales de la base de datos. Wiki.js añade un entorno de ejecución de Node y un servidor PostgreSQL, mientras que Outline añade Redis y un proveedor de identidad externo.
¿Puedo usar Outline sin Google ni otro proveedor de SSO?
No. Outline no tiene inicio de sesión local con nombre de usuario y contraseña. Su configuración de ejemplo indica que se necesita al menos un proveedor de inicio de sesión externo; de lo contrario, no habrá ninguna opción de inicio de sesión. Puede usar Google, Slack, Microsoft Entra, Discord o cualquier servidor genérico de OpenID Connect, como un Keycloak o Authentik autoalojado. Ejecutar ese proveedor forma parte del coste de ejecutar Outline.
¿Debo instalar Wiki.js 3 o Wiki.js 2?
La versión 2. En julio de 2026, la versión 2 más reciente es la 2.5.314, publicada en mayo de 2026, y la documentación de la versión 3 indica claramente que es una beta inestable que no debe instalarse en producción. 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 con la instancia en ejecución.
¿Cuál tiene 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}. Cualquiera de esos términos se puede negar con un - inicial. Outline no necesita configuración y busca en el texto de los archivos cargados. Wiki.js es el más configurable, porque permite elegir el motor. Conviene cambiar al motor PostgreSQL en cuanto la wiki supere unos cientos de páginas.
¿Puedo trasladar mi contenido de uno a otro más adelante?
En parte, pero debe prever trabajo manual. Los tres pueden exportar e importar Markdown, por lo que el texto de las páginas normalmente se conserva. 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. Exporte una muestra y compruebe esos elementos antes de comprometerse con una migración.