Tutorial

Autoalojamiento

Outline: wiki auto-alojado en VPS, alternativa a Notion

El acuerdo por el que Bending Spoons compró Airtable, anunciado en agosto de 2026 y cerrado el 4 de septiembre, reavivó una pregunta que se hacen equipos técnicos y agencias: ¿a partir de qué momento la dependencia de un proveedor SaaS se convierte en un riesgo operativo? En este contexto, Outline vuelve al radar como alternativa seria a Notion y a Confluence: renderizado Markdown elegante, edición en tiempo real, permisos granulares. Antes de desplegarlo, conviene aclarar dos puntos: su licencia BSL 1.1, que no es open source en el sentido de la OSI, y sus requisitos de instalación — un proveedor de identidad obligatorio, PostgreSQL, Redis y un almacenamiento para los archivos.

11 min de lectura6 pasos
Contenido· Por qué Outline en lugar de Notion o Confluence en un VPS1/8
  1. 01Por qué Outline en lugar de Notion o Confluence en un VPS
  2. 02Lo que Outline aporta en concreto
  3. 03Licencia BSL 1.1: Outline no es open source
  4. 04Outline vs Notion vs Confluence vs Docmost
  5. 05Requisitos para alojar Outline en un VPS
  6. 06Desplegar Outline con Docker Compose
  7. 07Actualizar Outline sin sorpresas
  8. 08Cuándo elegir Docmost en lugar de Outline

Por qué Outline en lugar de Notion o Confluence en un VPS

Notion y Confluence comparten el mismo defecto estructural: su tarifa está indexada al número de usuarios y sube en cuanto el equipo crece. En Notion, la IA está reservada a los planes Business y Enterprise desde el anuncio del 13 de mayo de 2025: su precio va incluido en cada puesto, se use o no. El plan Business figura a 19,50 € por miembro y mes con facturación anual en notion.com/pricing (precio mostrado a un visitante de la zona euro): 390 € al mes para veinte personas, antes de los créditos de Notion que se facturan aparte para ejecutar agentes personalizados. Todo ello para un wiki del que no controla ni los datos, ni la hoja de ruta, ni la fecha de la próxima adquisición.

Outline rompe esa lógica. Alojado en su propio VPS, el coste es fijo: paga el servidor, no cada colaborador adicional. El renderizado es cuidado — tipografía limpia, bloques de código con resaltado de sintaxis, imágenes integradas, tablas — y la edición simultánea funciona mediante WebSockets. La búsqueda de texto completo se indexa directamente en PostgreSQL: ningún servicio externo, ningún coste adicional. Para un equipo técnico de 10 a 50 personas, es uno de los wikis self-hosted más completos.

El argumento de la compra de Airtable no es anecdótico. Bending Spoons se ha especializado en adquirir herramientas SaaS populares — Evernote, Meetup, WeTransfer — y después remodelar su economía. Afirma que quiere invertir en Airtable, pero cuando la documentación de su empresa depende de un SaaS de terceros, un cambio de propietario puede significar subidas de precio, funciones gratuitas recortadas o un giro hacia un modelo incompatible con su uso. Alojar Outline en su propia infraestructura es salir de ese riesgo.

Lo que Outline aporta en concreto

  • Renderizado Markdown en tiempo real — el editor se parece a Notion sin los bloques propietarios
  • Edición colaborativa — varios redactores en el mismo documento mediante WebSockets y Redis
  • Permisos por colección y por grupo — solo lectura, comentario, edición, administración
  • Búsqueda de texto completo — indexada en PostgreSQL, operativa desde la instalación
  • Adjuntos e imágenes — en el disco del VPS por defecto, o en un almacenamiento compatible con S3 (MinIO, Backblaze B2, AWS S3)
  • API documentada — integrable en sus pipelines CI/CD o en sus scripts; también sirve para automatizar las exportaciones de contenido
  • Importación desde Notion y Markdown — la importación de Notion pasa por una integración que hay que declarar; el importador de Confluence está reservado a las ediciones Business y Enterprise

Licencia BSL 1.1: Outline no es open source

Es el punto que las comparativas suelen pasar por alto. Outline se publica bajo Business Source License 1.1 (BSL 1.1). El propio archivo de licencia del repositorio lo dice: «not an Open Source license» — no es una interpretación, es la formulación de sus autores.

En la práctica, la licencia concede el uso del software con una condición: no explotarlo como «Document Service», es decir, no ofrecer Outline como servicio documental a terceros. La página oficial de restricciones no deja dudas: vender, revender o alojar Outline como servicio es un incumplimiento, y el incumplimiento pone fin a la licencia automáticamente. Un editor de software que quiera ofrecer a sus clientes un wiki Outline de pago queda fuera de la licencia; una agencia que lo aloje para sus clientes debe consultar al editor antes de desplegar.

Para un uso interno del equipo — base de conocimiento, documentación de producto, runbooks, onboarding — puede autoalojarlo libremente.

El paso a Apache 2.0 no tiene una fecha única: cada versión tiene la suya, cuatro años después de su publicación. El archivo LICENSE de la versión 1.12.0, publicada el 23 de octubre de 2026, fija ese cambio para el 2030-10-23. La versión que despliega hoy solo será plenamente permisiva en 2030, y cada actualización aplaza la fecha para el código nuevo.

Resumen práctico: uso interno, ningún problema. Reventa o servicio a clientes: lea la licencia y consulte al editor antes de desplegar. Para situar la BSL entre las licencias «source available», vea nuestro análisis de BSL y SSPL.

Outline vs Notion vs Confluence vs Docmost

Desplace la tabla

OutlineNotionConfluenceDocmost
Modelo de licenciaBSL 1.1 (cada versión → Apache 2.0 a los 4 años)SaaS propietarioSaaS propietarioAGPL-3.0 (núcleo) + ediciones de pago
AutoalojamientoSí — Docker + VPSNoSí (Data Center, costoso)Sí — Docker + VPS
TarificaciónCoste fijo del servidorPor miembro/mesPor usuarioCoste fijo del servidor (edición libre)
Edición en tiempo realSí (WebSockets + Redis)SíSíSí (WebSockets + Redis)
Stack necesariaPostgreSQL + Redis + almacenamiento de archivosN/A (SaaS)PostgreSQL/Oracle + infraestructura pesadaPostgreSQL + Redis
Búsqueda de texto completoPostgreSQL integradoSí (SaaS)SíPostgreSQL integrado
Importación Notion / ConfluenceNotion sí; Confluence en edición de pagoSolo exportaciónSolo exportaciónNotion sí; Confluence en edición de pago
Inicio de sesiónSSO obligatorio (OIDC, Google, Slack, Microsoft, Discord)Cuenta NotionCuenta AtlassianCorreo y contraseña; SSO en edición de pago

Requisitos para alojar Outline en un VPS

Outline se compone de tres servicios que deben funcionar juntos.

PostgreSQL (versión 14 o superior) almacena todos los documentos, usuarios y permisos: es quien guarda el estado de su wiki. Redis (versión 4 o superior) gestiona las sesiones, los WebSockets de la edición en tiempo real y las colas de tareas en segundo plano; si cae, la edición simultánea se detiene. El almacenamiento de archivos recibe adjuntos e imágenes: por defecto en el disco del VPS (FILE_STORAGE=local, carpeta /var/lib/outline/data), o en un bucket compatible con S3 (FILE_STORAGE=s3) — un MinIO en el mismo VPS, Backblaze B2 o AWS S3. Llevar los archivos a S3 mantiene ligeras las copias de PostgreSQL y deja crecer el volumen de adjuntos sin tocar el servidor de la aplicación.

Dimensionamiento: la documentación oficial exige como mínimo 512 MB de memoria y aconseja 1 GB o más cuando los usuarios son numerosos. Para un equipo de 20 a 50 personas con PostgreSQL y Redis en la misma máquina, apunte a 2 vCPU, 4 GB de RAM y 20 GB de SSD, más si los adjuntos se quedan en local. Un VPS Power (4 vCPU, 8 GB) deja margen para los picos de edición simultánea. El número de procesos se ajusta con WEB_CONCURRENCY: cuente un proceso por cada 512 MB de memoria disponible.

La autenticación es el requisito que se descubre demasiado tarde. Outline no tiene inicio de sesión con correo y contraseña: hace falta al menos un proveedor configurado — Slack, Google, Microsoft Entra, Discord o un servidor OIDC genérico (Authentik, Keycloak…) —; si no, la instalación no ofrece ninguna forma de iniciar sesión. SAML está reservado a las ediciones Business y Enterprise. Prevea también un servidor SMTP: envía las notificaciones («documento actualizado») y hace posible el inicio de sesión por enlace de correo.

En el host: Docker y Docker Compose v2, un proxy inverso (Nginx o Caddy), un certificado TLS válido y un nombre de dominio dedicado (wiki.su-dominio.com): la variable URL debe coincidir exactamente con la dirección pública.

Desplegar Outline con Docker Compose

  1. Crear el archivo `docker-compose.yml`

    Cree un directorio dedicado:

    mkdir -p /opt/outline && cd /opt/outline

    Y luego el archivo de composición. Fije una versión concreta en lugar de latest y publique el puerto 3000 solo en la interfaz local:

    services:
      outline:
        image: docker.getoutline.com/outlinewiki/outline:1.12.0
        env_file: .env
        ports:
          - "127.0.0.1:3000:3000"
        volumes:
          - outline_data:/var/lib/outline/data
        depends_on:
          - postgres
          - redis
    
      postgres:
        image: postgres:18
        environment:
          POSTGRES_USER: outline
          POSTGRES_PASSWORD: contrasena
          POSTGRES_DB: outline
        volumes:
          - postgres_data:/var/lib/postgresql
    
      redis:
        image: redis:7
        volumes:
          - redis_data:/data
    
    volumes:
      outline_data:
      postgres_data:
      redis_data:

    La imagen de Postgres crea el usuario y la base en el primer arranque a partir de POSTGRES_USER, POSTGRES_PASSWORD y POSTGRES_DB: sin contraseña, el contenedor se niega a arrancar.

  2. Configurar el archivo `.env`

    Genere la clave secreta y la clave de utilidad:

    openssl rand -hex 32   # SECRET_KEY
    openssl rand -hex 32   # UTILS_SECRET

    Variables esenciales del .env (ejemplo con un proveedor OIDC):

    URL=https://wiki.su-dominio.com
    PORT=3000
    SECRET_KEY=<clave generada>
    UTILS_SECRET=<clave generada>
    DATABASE_URL=postgres://outline:contrasena@postgres:5432/outline
    PGSSLMODE=disable
    REDIS_URL=redis://redis:6379
    FORCE_HTTPS=true
    WEB_CONCURRENCY=2
    FILE_STORAGE=local
    FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
    OIDC_CLIENT_ID=<client-id>
    OIDC_CLIENT_SECRET=<client-secret>
    OIDC_AUTH_URI=https://auth.su-dominio.com/application/o/authorize/
    OIDC_TOKEN_URI=https://auth.su-dominio.com/application/o/token/
    OIDC_USERINFO_URI=https://auth.su-dominio.com/application/o/userinfo/
    SMTP_SERVICE=<service>
    SMTP_USERNAME=<user>
    SMTP_PASSWORD=<password>
    [email protected]

    PGSSLMODE=disable es necesario cuando PostgreSQL funciona en la misma máquina sin TLS: sin él, Outline intenta una conexión cifrada y falla. Para Google, Slack, Microsoft o Discord, sustituya el bloque OIDC por las variables del proveedor (GOOGLE_CLIENT_ID, SLACK_CLIENT_ID…) recogidas en el archivo de ejemplo oficial. Guarde una copia de este archivo fuera del servidor: perder SECRET_KEY hace ilegibles los datos cifrados de la base.

  3. Arrancar la pila

    docker compose up -d
    docker compose logs -f outline
    docker compose ps

    Las migraciones de la base de datos se ejecutan automáticamente al arrancar el contenedor de Outline: siga los registros hasta el mensaje de escucha en el puerto 3000 y compruebe después que los tres servicios están running.

  4. Configurar el proxy inverso

    Outline escucha en el puerto 3000 en local. Ejemplo de bloque Nginx:

    server {
        listen 443 ssl;
        server_name wiki.su-dominio.com;
    
        ssl_certificate /etc/letsencrypt/live/wiki.su-dominio.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/wiki.su-dominio.com/privkey.pem;
        client_max_body_size 260m;
    
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }
    }

    Las cabeceras Upgrade y Connection son imprescindibles para los WebSockets de la edición en tiempo real; client_max_body_size debe cubrir el tamaño de subida que permite Outline (FILE_STORAGE_UPLOAD_MAX_SIZE). Con Caddy bastan dos líneas, y el certificado de Let's Encrypt se obtiene y renueva automáticamente:

    wiki.su-dominio.com {
        reverse_proxy 127.0.0.1:3000
    }
  5. Crear la primera cuenta de administrador

    Abra https://wiki.su-dominio.com e inicie sesión con el proveedor de identidad configurado: la primera cuenta autenticada se convierte en administradora del espacio de trabajo.

    Para invitar a sus colegas, vaya a Ajustes → Miembros → Invitar. Las invitaciones y notificaciones salen por el SMTP declarado en el .env.

  6. Programar las copias de seguridad

    Qué hay que respaldar: la base PostgreSQL, el volumen de archivos si FILE_STORAGE=local, y el .env. Ejemplo para una tarea cron diaria:

    cd /opt/outline
    docker compose exec -T postgres pg_dump -U outline outline | gzip > outline-$(date +%F).sql.gz
    docker run --rm -v outline_outline_data:/data -v "$PWD":/backup alpine \
      tar czf /backup/outline-files-$(date +%F).tar.gz -C /data .

    La documentación de Outline recomienda al menos una copia al día, conservada alrededor de un mes. Como complemento, Ajustes → Exportar genera un archivo HTML, Markdown o JSON legible sin Outline.

Actualizar Outline sin sorpresas

Outline publica imágenes Docker etiquetadas: evite latest en producción y apunte a una versión concreta (outlinewiki/outline:1.12.0 a 7 de noviembre de 2026), tras leer las notas de versión en la página de releases.

Las migraciones se aplican automáticamente al reiniciar el contenedor, y la documentación advierte de que no siempre son retrocompatibles: volver a la imagen anterior no siempre basta. Una copia de la base antes de cada actualización es, por tanto, obligatoria, no opcional.

cd /opt/outline
docker compose exec -T postgres pg_dump -U outline outline | gzip > antes-de-actualizar.sql.gz
# cambiar la etiqueta de la imagen en docker-compose.yml y después:
docker compose pull outline
docker compose up -d outline
docker compose logs -f outline

En un wiki voluminoso, pruebe primero la nueva versión sobre una copia de la base restaurada en un entorno de preproducción.

Cuándo elegir Docmost en lugar de Outline

Outline es la elección adecuada si busca un renderizado Markdown cuidado comparable a Notion, una edición simultánea robusta y la conexión con un proveedor de identidad existente (OIDC, Google, Microsoft). Su ritmo de publicación sostenido — 1.11.0 y 1.12.0 en octubre de 2026 — y su comunidad activa son argumentos sólidos para un equipo que apuesta por la duración. Comentarios, historial de revisiones e integraciones con Slack, GitHub y Linear lo convierten en una de las herramientas más completas del segmento self-hosted.

Docmost es una alternativa más reciente (2023), cuyo núcleo se publica bajo AGPL-3.0 — una verdadera licencia open source en el sentido de la OSI, sin restricción para su uso como servicio. Sus funciones avanzadas (SSO SAML/OIDC/LDAP, claves de API, importador de Confluence, bases de datos) pertenecen, en cambio, a ediciones de pago con una licencia distinta. Su stack es comparable — PostgreSQL y Redis —, pero no impone ningún proveedor de identidad, ya que la edición libre acepta el inicio de sesión con correo y contraseña. Si la calificación de la licencia es un criterio bloqueante — sobre todo si desarrolla un producto que integraría una base de conocimiento accesible para sus usuarios finales —, Docmost merece evaluarse en paralelo. Este artículo se centra en Outline; para la instalación paso a paso, consulte nuestra guía dedicada a Docmost, y para una migración desde Notion, nuestro análisis de la subida de precios de Notion.

Ambos conviven sin canibalizarse: Outline ofrece más funciones avanzadas en su edición gratuita y una comunidad más asentada; Docmost, una licencia más permisiva y un inicio de sesión sin SSO obligatorio. La elección depende de su contexto jurídico y de sus necesidades técnicas.

Despliegue su wiki de equipo en un VPS

Un VPS Power (4 vCPU, 8 GB) cubre cómodamente la stack completa de Outline — PostgreSQL, Redis y almacenamiento de adjuntos — para un equipo de menos de 50 personas.