SSD Nodes Learn 8GB de RAM — $66/año
Guías Matt ConnorPor Matt Connor · Actualizado 2026-08-02

BookStack, Wiki.js u Outline: qué wiki autohospedada

Compara BookStack, Wiki.js y Outline por instalación, edición, acceso y búsqueda, con una recomendación clara para administradores individuales y equipos.

Qué wiki autohospedada deberías ejecutar

Una wiki autohospedada reúne los documentos de tu equipo en un único lugar con búsquedas, en un servidor que controlas. BookStack, Wiki.js y Outline cumplen esa función. Se diferencian principalmente 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 la opción más sencilla de poner en funcionamiento y la que impone una estructura más definida. Wiki.js ofrece la mayor variedad de editores dentro de un mismo árbol de páginas. Outline proporciona la mejor experiencia de escritura de las 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 cambian con frecuencia.

La estructura es la decisión real

BookStack fija la estructura de su contenido. Una página se encuentra dentro de un libro, un libro puede contener capítulos y las estanterías agrupan libros. No puede crear un quinto nivel. Ese límite es el producto: un autor nuevo sabe dónde colocar una página porque solo 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 se encuentra donde usted la coloque y puede elegir la profundidad. Nada impide que dos personas archiven el mismo tema en dos ramas diferentes, por lo que una instancia de Wiki.js necesita una persona responsable del árbol.

Outline usa colecciones con documentos anidados dentro de otros documentos. Para mover un documento, se arrastra con el ratón. Es la opción más flexible de las tres, por lo que también es la más fácil de dejar que se desordene.

BookStack: la instalación más sencilla

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 se instala desde el código fuente, también se necesita Composer 2.2 o posterior. La línea 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.sh

Lea 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 toma 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 en la documentación de BookStack. BookStack necesita una clave de cifrado de sesión y no sirve páginas sin ella, por lo que debe generarla primero.

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

Copie 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-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. De lo contrario, 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 en un bucle. Si los archivos de Compose son nuevos para usted, empiece por Conceptos básicos de Docker Compose en un VPS antes de continuar con esta guía.

Inicie la aplicación y compruebe que responde, no solo 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 indica que la aplicación PHP se inició y alcanzó 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 situaciones se está produciendo.

Wiki.js: un solo á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 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 intencionadamente. 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." Considere la etiqueta :3 como una versión preliminar.

En la primera carga, Wiki.js le guía mediante un asistente en el navegador que crea la cuenta de administrador. Hasta que lo complete, cualquiera que acceda al puerto verá ese asistente, por lo que debe colocar 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 se integra 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, una junto a otra, 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 acabar con cuatro estilos editoriales distintos en una misma wiki, así que decida el editor predeterminado 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 buscan quienes quieren una herramienta de notas con una experiencia similar a la de un producto comercial. Es una aplicación de Node.js, y la versión actual en 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 32

Ejecute esto dos veces y conserve ambos valores. El primero se convierte en SECRET_KEY y el segundo en UTILS_SECRET. La parte central 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 solo 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 se transmite sin cifrar. Los archivos adjuntos ya no obligan a usar almacenamiento de objetos: FILE_STORAGE=local guarda las cargas en el directorio anterior, que debe ser un volumen en el que el contenedor pueda escribir y que esté incluido en las copias de seguridad. Establezca 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 muchas personas. Outline no tiene inicio de sesión integrado con nombre de usuario y contraseña. Su 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.

Por tanto, el coste real de Outline incluye Outline, PostgreSQL, Redis y un proveedor de identidad. Si su equipo ya inicia sesión con Google Workspace o Microsoft Entra, esta última pieza requiere diez minutos y Outline resulta muy atractivo. Si no es así, también tendrá que alojar algo como Keycloak o Authentik, que es un segundo servicio que deberá actualizar y respaldar. Planifique la memoria en consecuencia: la recomendación de Outline es de aproximadamente 512 MB por proceso web, configurada mediante WEB_CONCURRENCY, además de la memoria necesaria para 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 sustituir en una estantería, libro, capítulo o página concretos. Como la jerarquía es fija, los permisos se heredan en 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 ofrece mucha flexibilidad y es fácil configurarlo mal, porque una regla escrita para ops/* cubre silenciosamente todas las páginas que se archiven después bajo esa ruta.

Outline delega esta cuestión por completo. La pertenencia sigue al 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", requieren esa cadena exacta. Los corchetes buscan etiquetas: [location=london] coincide por nombre de etiqueta, valor o ambos, con comparaciones que incluyen !=, >= 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 anteponiendo -. BookStack limita cuántos términos de cada tipo puede contener una consulta, por lo que una consulta demasiado larga se recorta en lugar de ejecutarse.

Wiki.js trata la búsqueda como un módulo intercambiable. 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 es adecuado para unos cientos de páginas. Si usa PostgreSQL, cambie al motor de PostgreSQL en el área de administración, porque utiliza 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 aceptar la ejecución y aplicación de parches de 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 disponible si alguna vez deja de ser suficientemente rápido.

Qué opción le conviene

Elija BookStack si quiere tener la wiki en funcionamiento esta tarde y prefiere discutir 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 en los que la mayoría de los redactores no son ingenieros. También es el más fácil de respaldar de los tres, 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 específico 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. Tenga en cuenta que ejecutará una pila más pesada y fije la etiqueta de la versión principal.

Elija Outline si la calidad de redacción es lo más importante, la wiki es para un equipo y no para el 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 su 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 deben almacenarse en un sistema de gestión documental como Paperless-ngx, no en una wiki. Forzarlos a entrar en una wiki es la razón por la que tantas wikis terminan abandonadas. Para obtener una visión más amplia de qué otras aplicaciones merecen un lugar en su propio servidor, consulte la lista corta de autohospedaje para 2026.

Dimensionamiento y copias de seguridad

Las tres opciones funcionan en un VPS pequeño, pero el mínimo realista varía según los componentes de cada una. BookStack usa un proceso de aplicación y MySQL. Wiki.js usa un proceso de Node y PostgreSQL. Outline usa un proceso de Node, PostgreSQL y Redis. Normalmente también se ejecuta junto con un proveedor de identidad, por lo que necesita más memoria.

Realice copias de seguridad de la base de datos y de los archivos cargados al mismo tiempo. Restaure ambos en una instancia desechable una vez antes de confiar en esa copia. Una copia de seguridad de una wiki que nunca se ha restaurado es solo 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 autoalojado es más fácil de instalar?

BookStack. Es una sola aplicación PHP con una base de datos MySQL. El proyecto proporciona 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 solo 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. Outline añade Redis y un proveedor de identidad externo.

¿Puedo usar Outline sin Google ni otro proveedor de SSO?

No. Outline no tiene un 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 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 Keycloak o Authentik autoalojados. 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 2.5.314, publicada en mayo de 2026. 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 a ghcr.io/requarks/wiki:2 en lugar de latest, porque un cambio de versión principal modifica el esquema de la base de datos en una instancia en ejecución.

¿Cuál tiene la mejor búsqueda?

Cada uno destaca en aspectos distintos. 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 excluir 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. El motor PostgreSQL merece la pena en cuanto el wiki supere unos cientos de páginas.

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

En parte, pero debe prever trabajo manual. Los tres exportan e importan 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. Las rutas de Wiki.js tampoco 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 iniciar la migración.

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