bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación y Configuración de Outline

calendar_month Aug 19, 2026 schedule 20 min de lectura visibility 62 vistas
Установка и настройка Outline Wiki на VPS
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación y Configuración de Outline Wiki en un VPS: Guía Completa para Expertos

TL;DR

En esta guía detallada, configuraremos paso a paso Outline Wiki —una base de conocimientos moderna, fácil de usar y autoalojada— en su servidor privado virtual (VPS). Aprenderá cómo preparar el servidor, instalar todos los componentes necesarios (Docker, PostgreSQL, Redis), desplegar Outline, asegurar su acceso con HTTPS a través de Caddy, y configurar la copia de seguridad y el mantenimiento. Al final de la guía, tendrá una wiki completamente funcional y segura para su equipo o necesidades personales.

  • Instalación completa de Outline Wiki utilizando Docker Compose.
  • Configuración de acceso seguro a través de HTTPS con certificados automáticos de Caddy.
  • Requisitos óptimos de VPS y elección del proveedor.
  • Protección básica del servidor con Fail2ban y UFW.
  • Configuración de la copia de seguridad automática de los datos de Outline.
  • Consejos para la resolución de problemas y el mantenimiento del sistema.

Qué configuramos y por qué

Diagrama: Qué configuramos y por qué
Diagrama: Qué configuramos y por qué

Instalaremos y configuraremos Outline Wiki — una base de conocimientos de código abierto, moderna e intuitiva, diseñada para el trabajo en equipo. Outline se posiciona como una alternativa a Notion, Confluence o Google Docs, pero con énfasis en el autoalojamiento y el control total sobre los datos. Es una solución ideal para desarrolladores, startups y equipos pequeños que necesitan una plataforma centralizada para documentación, notas, actas de reuniones e intercambio de conocimientos.

Al final, obtendrá una wiki completamente funcional, accesible a través de su propio nombre de dominio, donde su equipo podrá crear, editar y organizar información de forma colaborativa. Outline Wiki ofrece una interfaz de usuario limpia, soporte para Markdown, integración con Slack (u otros mensajeros), así como una potente búsqueda, lo que la convierte en una excelente herramienta para aumentar la productividad y preservar el conocimiento corporativo.

Existen muchas alternativas en el mercado, tanto en la nube (Notion, Confluence Cloud, Coda) como autoalojadas (Wiki.js, BookStack, DokuWiki). Las soluciones en la nube son convenientes porque no requieren configuración ni mantenimiento del servidor, pero usted está atado al proveedor, a su política de precios y a su política de seguridad de datos. Las soluciones autoalojadas, como Outline en un VPS, le dan control total sobre sus datos, seguridad y rendimiento. Esto es especialmente importante para proyectos donde la confidencialidad de la información es crítica, o para equipos que desean evitar los pagos mensuales por servicios SaaS. Usted gestiona la infraestructura de forma independiente, lo que requiere ciertos conocimientos técnicos, pero ofrece la máxima flexibilidad e independencia.

Qué configuración de VPS se necesita para esta tarea

Diagrama: Qué configuración de VPS se necesita para esta tarea
Diagrama: Qué configuración de VPS se necesita para esta tarea

La elección de un VPS adecuado para Outline Wiki depende de la carga prevista, el número de usuarios y el volumen de datos almacenados. Outline es una aplicación bastante intensiva en recursos, especialmente si tiene muchos usuarios y los índices de búsqueda se utilizan activamente.

Requisitos mínimos

  • Procesador (CPU): 1-2 núcleos. Para equipos pequeños (hasta 5-10 usuarios activos), un núcleo será suficiente. Para un trabajo activo y un mayor número de usuarios, se recomiendan 2 núcleos.
  • Memoria RAM: Mínimo 2 GB. Outline, PostgreSQL y Redis juntos consumen una cantidad significativa de RAM. 2 GB es el mínimo absoluto, 4 GB es un inicio cómodo para un equipo pequeño.
  • Disco (SSD): 20-40 GB SSD. El SSD es crítico para el rendimiento de la base de datos y el acceso rápido a los archivos. 20 GB serán suficientes para el sistema y el volumen inicial de datos, pero a medida que el contenido crezca, se necesitará más. Se recomiendan 40 GB para tener margen.
  • Red: 100 Mbps o 1 Gbps. Un canal estable con suficiente ancho de banda es importante para la carga rápida de páginas y el intercambio de datos.

Plan de VPS específico para la tarea

Para la mayoría de los equipos pequeños y medianos (hasta 20-30 usuarios activos), un VPS con las siguientes características será óptimo:

  • 2x vCPU
  • 4 GB RAM
  • 50-80 GB de disco NVMe/SSD
  • Puerto de red de 100 Mbps - 1 Gbps

Encontrar un VPS con las características indicadas no será difícil con la mayoría de los proveedores. Es importante elegir un proveedor confiable con buena reputación y soporte.

Cuándo se necesita un servidor dedicado y no un VPS

Un servidor dedicado puede ser necesario en varios casos:

  • Equipo muy grande: Si tiene cientos o miles de usuarios activos, y Outline se convierte en el repositorio central de conocimientos para toda la empresa.
  • Alta carga: Uso intensivo, búsquedas frecuentes, gran volumen de archivos e imágenes adjuntas.
  • Integración con otros servicios: Si Outline formará parte de una infraestructura más grande con muchas dependencias y alta necesidad de recursos.
  • Requisitos de seguridad y aislamiento: Un servidor dedicado proporciona un aislamiento completo de los "vecinos" de hardware, lo que puede ser crítico para ciertos tipos de datos.

En la mayoría de los casos, un VPS será más que suficiente y económicamente más ventajoso para Outline Wiki.

Ubicación: qué factores influyen

La elección de la ubicación del servidor influye en varios factores:

  • Latencia: Cuanto más cerca esté el servidor de los usuarios principales, menor será la latencia y más rápida la respuesta de la aplicación. Si su equipo está distribuido en diferentes continentes, elija una ubicación que sea óptima para la mayoría de los usuarios.
  • Legislación: La ubicación del servidor determina la jurisdicción del país a la que están sujetos sus datos. Esto puede ser crítico para el cumplimiento de GDPR, HIPAA u otras regulaciones.
  • Costo: Los precios de los VPS pueden variar ligeramente según la ubicación.

Generalmente se recomienda elegir una ubicación geográficamente cercana a la mayoría de sus usuarios para garantizar la mejor experiencia de usuario.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de instalar Outline Wiki, es necesario realizar una configuración básica de un VPS nuevo para garantizar la seguridad y preparar el entorno para el despliegue posterior. Utilizaremos Ubuntu Server 24.04 LTS.

1. Conexión por SSH

Conéctese a su servidor como usuario root, utilizando la dirección IP proporcionada por su proveedor:


ssh root@SU_DIRECCIÓN_IP

Si utiliza una contraseña, introdúzcala. Se recomienda encarecidamente utilizar claves SSH para mayor seguridad.

2. Actualización del sistema

Actualice la lista de paquetes y los paquetes instalados a las versiones más recientes:


sudo apt update && sudo apt upgrade -y

Esto garantiza que tendrá las últimas correcciones de seguridad y versiones estables de todos los componentes del sistema.

3. Creación de un nuevo usuario con permisos sudo

Trabajar como root no es seguro. Crearemos un nuevo usuario y le otorgaremos permisos sudo.


adduser outlineadmin

Siga las instrucciones para establecer la contraseña y la información del usuario. Luego, añada el usuario al grupo sudo:


usermod -aG sudo outlineadmin

Ahora puede cambiar al nuevo usuario:


su - outlineadmin

En adelante, todos los comandos que requieran privilegios de superusuario se ejecutarán con el prefijo sudo.

4. Configuración de claves SSH para el nuevo usuario

Si aún no utiliza claves SSH, créelas en su máquina local (si no las tiene):


ssh-keygen -t rsa -b 4096 -C "[email protected]"

Luego, copie la clave pública al servidor para el nuevo usuario outlineadmin:


ssh-copy-id outlineadmin@SU_DIRECCIÓN_IP

Ahora puede iniciar sesión sin contraseña. Después de verificar, se recomienda deshabilitar el inicio de sesión con contraseña para root y para todos los usuarios en el archivo /etc/ssh/sshd_config. Busque las líneas:


sudo nano /etc/ssh/sshd_config

PermitRootLogin no
PasswordAuthentication no

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Reinicie el servicio SSH:


sudo systemctl restart sshd

Asegúrese de poder iniciar sesión con la clave SSH antes de cerrar la sesión actual.

5. Configuración del firewall (UFW)

UFW (Uncomplicated Firewall) es una utilidad conveniente para gestionar iptables. Por defecto, está deshabilitado.


sudo apt install ufw -y # Instala UFW si no está instalado
sudo ufw allow OpenSSH # Permite SSH para no perder el acceso
sudo ufw allow http    # Permite HTTP (puerto 80)
sudo ufw allow https   # Permite HTTPS (puerto 443)
sudo ufw enable        # Habilita el firewall
sudo ufw status verbose # Verifica el estado

Se le pedirá que confirme la activación de UFW. Introduzca y. Ahora su servidor está protegido contra tráfico no deseado, excepto SSH, HTTP y HTTPS.

6. Instalación de Fail2ban

Fail2ban escanea los registros y bloquea automáticamente las direcciones IP que muestran signos de ataques maliciosos (por ejemplo, múltiples intentos fallidos de inicio de sesión SSH).


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Cree un archivo de configuración para Fail2ban:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

En el archivo jail.local, puede configurar los parámetros. Asegúrese de que la sección [sshd] esté activa (enabled = true) y, si lo desea, cambie bantime (tiempo de bloqueo) y maxretry (número de intentos).


[DEFAULT]
bantime = 10m
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Guarde los cambios y reinicie Fail2ban:


sudo systemctl restart fail2ban
sudo fail2ban-client status # Verifique el estado
sudo fail2ban-client status sshd # Verifique el estado para SSH

Ahora su servidor tiene protección básica contra ataques de fuerza bruta.

Instalación de software — paso a paso

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Outline Wiki se implementa mejor utilizando Docker y Docker Compose. Esto asegura el aislamiento de los componentes, simplifica la gestión de dependencias y las actualizaciones.

1. Instalación de Docker Engine (versión 26.x para 2026)

Primero, elimine las versiones antiguas de Docker, si las hay:


for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done

Instale los paquetes necesarios para instalar Docker a través del repositorio:


sudo apt update
sudo apt install ca-certificates curl gnupg -y

Agregue la clave GPG oficial de Docker:


sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Agregue el repositorio de Docker a las fuentes de APT:


echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Actualice la lista de paquetes e instale Docker Engine, Docker CLI y Containerd:


sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Agregue su usuario al grupo docker para evitar usar sudo en cada comando de Docker:


sudo usermod -aG docker $USER
newgrp docker # Aplique los cambios de grupo inmediatamente

Verifique la instalación de Docker:


docker run hello-world # Ejecute un contenedor de prueba

La salida debería confirmar una instalación exitosa.

2. Instalación de Docker Compose (versión 2.24.x para 2026)

Docker Compose generalmente se instala junto con Docker Engine como docker-compose-plugin. Verifiquemos su versión:


docker compose version # Verificación de la versión de Docker Compose

Si el comando docker compose no funciona, es posible que tenga una instalación antigua de Docker o que el complemento no se haya instalado. En ese caso, instálelo manualmente:


sudo apt install docker-compose-plugin -y

3. Creación de un directorio para Outline Wiki

Cree un directorio donde se almacenarán todos los archivos de configuración de Outline:


mkdir -p ~/outline
cd ~/outline

4. Configuración del archivo Docker Compose

Outline requiere varios servicios: la aplicación Outline en sí, PostgreSQL (base de datos) y Redis (caché/colas). Cree el archivo docker-compose.yml:


nano docker-compose.yml

Pegue el siguiente contenido. Tenga en cuenta las versiones actuales de las imágenes (PostgreSQL 16, Redis 7, Outline la última estable).


version: '3.8'

services:
  outline:
    image: outlines/outline:latest
    container_name: outline
    restart: always
    env_file:
      - ./.env
    ports:
      - "3000:3000" # Puerto en el que Outline escucha dentro del contenedor
    depends_on:
      - postgres
      - redis
    volumes:
      - ./data/uploads:/opt/outline/public/uploads # Para archivos subidos

  postgres:
    image: postgres:16-alpine
    container_name: outline_postgres
    restart: always
    env_file:
      - ./.env
    volumes:
      - ./data/postgres:/var/lib/postgresql/data # Almacenamiento persistente para la base de datos

  redis:
    image: redis:7-alpine
    container_name: outline_redis
    restart: always
    env_file:
      - ./.env
    volumes:
      - ./data/redis:/data # Almacenamiento persistente para Redis (si se usa persistencia)

volumes:
  postgres:
  redis:
  uploads:

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

5. Creación del archivo de variables de entorno (.env)

Este archivo contendrá todos los datos sensibles y los parámetros de configuración. Créelo:


nano .env

Pegue el siguiente contenido. Asegúrese de reemplazar YOUR_DOMAIN.COM con su dominio real y genere contraseñas y claves seguras.


# Configuración de la aplicación Outline
URL=https://YOUR_DOMAIN.COM # Dominio donde Outline Wiki estará disponible
PORT=3000
SECRET_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_ДЛЯ_OUTLINE # Se genera con una cadena aleatoria, por ejemplo, openssl rand -base64 32
DATABASE_URL=postgres://outline_user:ВАШ_ПАРОЛЬ_ДЛЯ_БД@postgres:5432/outline_db
REDIS_URL=redis://redis:6379

# Configuración de la base de datos PostgreSQL
POSTGRES_USER=outline_user
POSTGRES_PASSWORD=ВАШ_ПАРОЛЬ_ДЛЯ_БД # Diferente de SECRET_KEY
POSTGRES_DB=outline_db

# Configuración de Redis (generalmente no requiere cambios si Redis se usa solo para caché)
REDIS_HOST=redis
REDIS_PORT=6379

# Configuración de correo electrónico (para invitaciones, restablecimiento de contraseñas, etc.)
# Ejemplo para Mailgun, se puede usar SendGrid, Postmark, AWS SES o SMTP
# MAIL_SERVICE_PROVIDER=mailgun
# MAIL_FROM_EMAIL=wiki@YOUR_DOMAIN.COM
# MAILGUN_API_KEY=mg-ваш-api-ключ
# MAILGUN_DOMAIN=mg.YOUR_DOMAIN.COM

# O para SMTP (reemplace con sus datos)
# SMTP_HOST=smtp.gmail.com
# SMTP_PORT=587
# [email protected]
# SMTP_PASSWORD=your_email_password
# SMTP_SECURE=false # true para SSL/TLS, false para STARTTLS

# Proveedores de autenticación (seleccione los necesarios, comente el resto)
# GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET=
# SLACK_CLIENT_ID=
# SLACK_CLIENT_SECRET=
# SLACK_SIGNING_SECRET=
# MICROSOFT_CLIENT_ID=
# MICROSOFT_CLIENT_SECRET=
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_AUTH_URL=
# OIDC_TOKEN_URL=
# OIDC_USERINFO_URL=
# OIDC_DISPLAY_NAME=
# OIDC_SCOPES=
# OIDC_USERNAME_CLAIM=
# OIDC_GROUPS_CLAIM=

Importante:

  • SECRET_KEY: Genere una cadena aleatoria larga, por ejemplo, usando openssl rand -base64 32.
  • POSTGRES_PASSWORD: También genere una contraseña segura.
  • URL: Especifique la URL HTTPS completa de su dominio.
  • Configure la sección de Configuración de correo electrónico para que Outline pueda enviar invitaciones y notificaciones.
  • Configure las secciones de Proveedores de autenticación si planea usar Google, Slack, Microsoft u OIDC para iniciar sesión. Para empezar, puede dejarlas comentadas.

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

6. Inicio de Outline Wiki

Ahora que todo está listo, inicie Outline Wiki con Docker Compose:


docker compose up -d # Inicio de contenedores en segundo plano

Este comando creará y ejecutará tres contenedores: Outline, PostgreSQL y Redis. El proceso puede tardar varios minutos mientras se descargan las imágenes y se inicializa la base de datos.

Verifique el estado de los contenedores:


docker compose ps

Todos los contenedores deben estar en estado running.

En este punto, Outline Wiki se ejecuta en el puerto 3000 de su servidor. Sin embargo, aún no es accesible desde el exterior y no tiene HTTPS. Nos ocuparemos de esto en la siguiente sección.

Configuración

Diagrama: Configuración
Diagrama: Configuración

Después de instalar los componentes, es necesario configurar un servidor web para proxyar las solicitudes a Outline y proporcionar HTTPS. Usaremos Caddy, un servidor web moderno que gestiona automáticamente los certificados de Let's Encrypt.

1. Instalación de Caddy (versión 2.7.x para 2026)

Caddy se puede instalar desde el repositorio oficial. Primero, agregue la clave GPG:


sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Luego, actualice la lista de paquetes e instale Caddy:


sudo apt update
sudo apt install caddy -y

Verifique que Caddy esté instalado y en ejecución:


sudo systemctl status caddy

Debería estar activo (active (running)).

2. Configuración del Caddyfile

Caddy utiliza un archivo de configuración llamado Caddyfile. Lo configuraremos para que actúe como un proxy inverso para Outline Wiki y obtenga automáticamente certificados HTTPS.


sudo nano /etc/caddy/Caddyfile

Elimine todo el contenido del archivo y pegue lo siguiente, reemplazando YOUR_DOMAIN.COM con su dominio real:


YOUR_DOMAIN.COM {
  # Habilitar certificados HTTPS automáticos de Let's Encrypt
  tls {
    dns cloudflare ВАШ_КЛЮЧ_API_CLOUDFLARE
    # Si no usa Cloudflare DNS, simplemente use "tls [email protected]"
    # Caddy usará el desafío HTTP-01, que requiere el puerto 80 abierto.
    # Si el puerto 80 está ocupado, o está detrás de un NAT, el desafío DNS es preferible.
  }

  # Proxy de solicitudes al contenedor Docker de Outline
  reverse_proxy localhost:3000 {
    # Encabezados adicionales necesarios para Outline
    header_up Host {host}
    header_up X-Real-IP {remote_ip}
    header_up X-Forwarded-For {remote_ip}
    header_up X-Forwarded-Proto {scheme}
  }

  # Opcional: compresión para acelerar la carga
  encode gzip zstd

  # Opcional: registro
  log {
    output file /var/log/caddy/outline.log
  }
}

Importante:

  • Proveedor de DNS: Si su dominio se gestiona a través de Cloudflare (u otro proveedor de DNS compatible con Caddy), puede usar el desafío DNS para obtener certificados. Esto es útil si tiene una configuración de red compleja o el puerto 80 no está disponible. Reemplace ВАШ_КЛЮЧ_API_CLOUDFLARE con su token de API de Cloudflare. También deberá instalar el complemento de Caddy para Cloudflare si no está incluido por defecto (sudo apt install caddy-dns-cloudflare).
  • Desafío HTTP-01: Si no usa el desafío DNS, simplemente especifique tls [email protected] (reemplace con su correo electrónico). Caddy intentará obtener un certificado a través del desafío HTTP-01, lo que requiere que el puerto 80 esté abierto y accesible desde el exterior.
  • Registro: Cree un directorio para los registros: sudo mkdir -p /var/log/caddy && sudo chown caddy:caddy /var/log/caddy.

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X).

3. Verificación y recarga de Caddy

Verifique la sintaxis del Caddyfile:


sudo caddy validate --config /etc/caddy/Caddyfile

Si no hay errores, recargue Caddy para aplicar la nueva configuración:


sudo systemctl reload caddy

Caddy obtendrá e instalará automáticamente un certificado SSL para su dominio. Esto puede tardar unos segundos.

4. Configuración de DNS

Asegúrese de que su dominio (YOUR_DOMAIN.COM) apunte a la dirección IP de su VPS. Cree un registro A en su proveedor de DNS, por ejemplo:


Tipo: A
Nombre: @ (o su subdominio, por ejemplo, wiki)
Valor: SU_DIRECCIÓN_IP_VPS

La propagación de los registros DNS puede tardar un tiempo (desde unos minutos hasta varias horas).

5. Verificación de la funcionalidad

Una vez que el DNS se actualice, abra su dominio (https://YOUR_DOMAIN.COM) en un navegador. Debería ver la página de bienvenida de Outline Wiki. Registre al primer usuario (se convertirá en el administrador).

También puede verificar la disponibilidad desde el servidor:


curl -I https://YOUR_DOMAIN.COM # Verificación de encabezados HTTP

Debería ver el estado HTTP/2 200 y los encabezados que indican una respuesta exitosa.

Si surgen problemas, verifique los registros de Caddy:


sudo journalctl -u caddy -f

Y los registros del contenedor Outline:


docker compose logs -f outline

En este punto, Outline Wiki está completamente configurado, accesible a través de HTTPS y listo para usar.

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

La copia de seguridad regular es una parte críticamente importante de la operación de cualquier servicio. Para Outline Wiki, es necesario hacer una copia de seguridad de la base de datos, los archivos subidos y los archivos de configuración.

1. Qué respaldar

  • Base de datos PostgreSQL: Contiene toda la información de texto, la estructura de la wiki, los usuarios y sus permisos. Este es el componente más importante.
  • Archivos subidos: El directorio ./data/uploads contiene imágenes, documentos y otros archivos adjuntos a las páginas de la wiki.
  • Archivos de configuración: Los archivos docker-compose.yml y .env. Aunque se pueden restaurar, guardar las versiones actuales simplificará la recuperación.

2. Script simple de copia de seguridad automática

Crearemos un script simple que realizará una copia de seguridad y la guardará en un directorio separado. Vaya al directorio raíz de Outline (~/outline).


mkdir -p ~/outline/backups
nano ~/outline/backup_outline.sh

Inserte el siguiente contenido:


#!/bin/bash

# Directorio para copias de seguridad
BACKUP_DIR="/home/outlineadmin/outline/backups"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
DB_BACKUP_FILE="$BACKUP_DIR/outline_db_backup_$TIMESTAMP.sql.gz"
UPLOADS_BACKUP_FILE="$BACKUP_DIR/outline_uploads_backup_$TIMESTAMP.tar.gz"
CONFIG_BACKUP_FILE="$BACKUP_DIR/outline_config_backup_$TIMESTAMP.tar.gz"

# Cambiar al directorio de Outline para que docker compose funcione correctamente
cd /home/outlineadmin/outline || { echo "Failed to change directory to ~/outline"; exit 1; }

echo "Starting Outline Wiki backup at $TIMESTAMP..."

# 1. Copia de seguridad de la base de datos PostgreSQL
echo "Backing up PostgreSQL database..."
# Uso de docker exec para ejecutar pg_dump dentro del contenedor postgres
# Obtenemos el nombre del contenedor postgres de docker-compose.yml
POSTGRES_CONTAINER=$(docker compose ps -q postgres)
if [ -z "$POSTGRES_CONTAINER" ]; then
    echo "Error: PostgreSQL container not found."
    exit 1
fi

# Obtenemos las variables de entorno de .env
source ./.env

docker exec "$POSTGRES_CONTAINER" pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" | gzip > "$DB_BACKUP_FILE"
if [ $? -eq 0 ]; then
    echo "PostgreSQL database backup created: $DB_BACKUP_FILE"
else
    echo "Error backing up PostgreSQL database."
    exit 1
fi

# 2. Copia de seguridad de los archivos subidos
echo "Backing up uploaded files..."
tar -czf "$UPLOADS_BACKUP_FILE" ./data/uploads
if [ $? -eq 0 ]; then
    echo "Uploaded files backup created: $UPLOADS_BACKUP_FILE"
else
    echo "Error backing up uploaded files."
    exit 1
fi

# 3. Copia de seguridad de los archivos de configuración
echo "Backing up configuration files..."
tar -czf "$CONFIG_BACKUP_FILE" ./.env ./docker-compose.yml
if [ $? -eq 0 ]; then
    echo "Configuration files backup created: $CONFIG_BACKUP_FILE"
else
    echo "Error backing up configuration files."
    exit 1
fi

# 4. Eliminación de copias de seguridad antiguas (conservamos las últimas 7 días)
echo "Cleaning up old backups..."
find "$BACKUP_DIR" -type f -name "outline_*.gz" -mtime +7 -delete
echo "Old backups cleaned up."

echo "Outline Wiki backup completed."

Guarde el archivo y hágalo ejecutable:


chmod +x ~/outline/backup_outline.sh

Verifique el funcionamiento del script ejecutándolo manualmente:


~/outline/backup_outline.sh
ls ~/outline/backups/

Debería ver los archivos de copia de seguridad creados.

3. Automatización de copias de seguridad con Cron

Agregue el script al programador Cron para su ejecución diaria. Por ejemplo, todos los días a las 3:00 de la madrugada:


crontab -e

Agregue la siguiente línea al final del archivo (asegúrese de que la ruta al script sea correcta):


0 3 * * * /home/outlineadmin/outline/backup_outline.sh >> /var/log/outline_backup.log 2>&1

Esta línea ejecutará el script todos los días a las 3 de la mañana y registrará la salida en el archivo de registro /var/log/outline_backup.log.

4. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que el servicio principal es extremadamente arriesgado. Si el servidor falla, perderá tanto los datos como las copias de seguridad. Se recomienda utilizar:

  • Almacenamiento externo compatible con S3: AWS S3, DigitalOcean Spaces, Backblaze B2. Es una forma fiable y relativamente económica de almacenamiento. Se puede configurar el script para subir automáticamente las copias de seguridad a S3.
  • Un VPS separado: Un VPS pequeño y económico, destinado exclusivamente al almacenamiento de copias de seguridad, al que se pueden copiar archivos a través de rsync/scp.
  • NAS/servidor local: Si dispone de su propio hardware.

Para la carga automática a S3, se puede usar s3cmd o aws cli. Ejemplo de adición al script después de crear las copias de seguridad:


# Instalación de aws cli (si no está instalado)
# sudo apt install awscli -y
# aws configure # Configure sus claves de AWS

# ... (después de crear las copias de seguridad) ...

echo "Uploading backups to S3..."
aws s3 cp "$DB_BACKUP_FILE" s3://your-s3-bucket/outline/db/
aws s3 cp "$UPLOADS_BACKUP_FILE" s3://your-s3-bucket/outline/uploads/
aws s3 cp "$CONFIG_BACKUP_FILE" s3://your-s3-bucket/outline/config/
echo "Backups uploaded to S3."

5. Actualizaciones: rolling vs ventana de mantenimiento

La actualización de Outline Wiki y sus componentes (PostgreSQL, Redis, Docker) requiere atención.

  • Actualización de Outline Wiki: La forma más sencilla es actualizar la imagen de Docker. Vaya al directorio ~/outline y ejecute:
    
                docker compose pull outline # Descargar la nueva imagen de Outline
                docker compose up -d outline # Recrear el contenedor de Outline con la nueva imagen
                

    Lea siempre el changelog de Outline antes de actualizar para conocer posibles cambios en los requisitos o migraciones de la base de datos.

  • Actualización de paquetes del sistema (Ubuntu): Ejecute regularmente sudo apt update && sudo apt upgrade -y. Esto se puede hacer una vez a la semana o una vez al mes.
  • Actualización de Docker Engine: Hágalo con menos frecuencia y con precaución, ya que puede afectar a todos los contenedores. Se recomienda hacerlo dentro de una "ventana de mantenimiento".

Estrategia de actualizaciones:

  • Actualizaciones continuas (para Outline): Si no hay cambios críticos en la base de datos, la actualización de la imagen de Outline puede considerarse "continua" (sin tiempo de inactividad).
  • Ventana de mantenimiento (para Docker, SO, actualizaciones importantes de Outline): Para actualizaciones más grandes que puedan interrumpir potencialmente el servicio, asigne una ventana de mantenimiento, avise a los usuarios y realice la actualización, teniendo a mano una copia de seguridad reciente.

Solución de problemas + Preguntas frecuentes

En esta sección, abordaremos los problemas típicos que pueden surgir al instalar y configurar Outline Wiki, y responderemos a las preguntas frecuentes.

No puedo conectarme a Outline Wiki por nombre de dominio. ¿Qué debo verificar?

Primero, asegúrese de que el registro DNS de su dominio (registro A) apunte correctamente a la dirección IP de su VPS. Puede verificar esto con el comando dig YOUR_DOMAIN.COM en su máquina local. Luego, verifique si Caddy está en ejecución: sudo systemctl status caddy. Si Caddy no está en ejecución o tiene errores, revise sus registros: sudo journalctl -u caddy -f. Asegúrese de que los puertos 80 y 443 estén abiertos en UFW: sudo ufw status. También verifique que el contenedor Docker de Outline esté en ejecución: docker compose ps.

Outline Wiki muestra un error 502 Bad Gateway. ¿Cuál es la causa?

El error 502 generalmente significa que Caddy no pudo comunicarse con el servicio de backend (Outline). Esto puede deberse a que el contenedor de Outline no está en ejecución, o está en ejecución pero no está escuchando en el puerto esperado (3000). Verifique el estado del contenedor de Outline: docker compose ps. Si no está funcionando, revise los registros del contenedor: docker compose logs outline. Asegúrese de que en los archivos .env y docker-compose.yml el puerto de Outline esté configurado en 3000 y que Caddy esté haciendo proxy de las solicitudes a localhost:3000.

¿Qué configuración mínima de VPS es adecuada para Outline Wiki?

Para un pequeño número de usuarios (hasta 5-10 activos), la configuración mínima es 1 vCPU, 2 GB de RAM y 20-30 GB de SSD. Sin embargo, para un funcionamiento más cómodo y la posibilidad de crecimiento, se recomienda 2 vCPU, 4 GB de RAM y 50 GB de SSD. Estas características proporcionarán un rendimiento suficiente para la base de datos, la caché y la propia aplicación Outline.

¿Qué elegir: VPS o dedicado para esta tarea?

Para Outline Wiki, en la mayoría de los casos, un VPS es suficiente. Un servidor dedicado se vuelve relevante si tiene un equipo muy grande (cientos de usuarios), una carga extremadamente alta, o si se requieren estrictos requisitos de aislamiento de recursos y seguridad que solo un servidor físico puede proporcionar. Para un uso típico en pequeñas y medianas empresas o para proyectos personales, un VPS es la opción óptima y económicamente ventajosa.

No puedo registrar al primer usuario, Outline no envía correos electrónicos.

Es casi seguro que se trata de un problema con la configuración del correo electrónico en el archivo .env. Outline utiliza SMTP o servicios de terceros (Mailgun, SendGrid) para enviar correos electrónicos. Asegúrese de que todos los parámetros (MAIL_FROM_EMAIL, SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_SECURE) estén configurados correctamente. Revise los registros del contenedor de Outline en busca de errores relacionados con el envío de correo: docker compose logs outline. Es posible que su proveedor de VPS esté bloqueando los puertos SMTP estándar, o que el servidor de correo requiera autenticación adicional.

¿Cómo actualizar Outline Wiki a una nueva versión?

Para actualizar Outline Wiki, cuando está desplegado a través de Docker Compose, siga estos pasos en el directorio ~/outline:


        docker compose pull outline # Descargar la última versión de la imagen de Outline
        docker compose up -d outline # Recrear el contenedor de Outline con la nueva imagen
        
Antes de esto, se recomienda hacer una copia de seguridad de los datos y revisar el changelog de Outline en GitHub para asegurarse de que no haya cambios críticos o la necesidad de migrar la base de datos.

Olvidé la contraseña del administrador de Outline. ¿Cómo la restablezco?

Si ha configurado el envío de correo, puede usar la función "Olvidé mi contraseña" en la página de inicio de sesión. Si el correo no funciona o desea restablecer la contraseña manualmente, es más complicado. Necesitará acceder a la base de datos PostgreSQL dentro del contenedor y cambiar manualmente el hash de la contraseña o restablecerla. Esta es una operación compleja que requiere precisión y generalmente implica ejecutar consultas SQL directamente en la tabla de usuarios. Se recomienda primero asegurarse de que el envío de correo esté configurado correctamente.

Conclusiones y próximos pasos

Esquema: Conclusiones y próximos pasos
Esquema: Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado con éxito Outline Wiki en su VPS. Ahora tiene una base de conocimientos potente, segura y totalmente controlada para su equipo o proyectos personales, accesible a través de su propio nombre de dominio con protección HTTPS. Ha dominado no solo el despliegue de la aplicación, sino también la configuración básica del servidor, la seguridad y la estrategia de copia de seguridad, lo cual es una habilidad valiosa para cualquier propietario de servidor.

¿Qué hacer a continuación?

  • Configure la autenticación: Integre Outline con Google, Slack, Microsoft o su proveedor OIDC para simplificar el inicio de sesión para los usuarios.
  • Monitoreo: Instale un sistema de monitoreo (por ejemplo, Prometheus + Grafana) para rastrear el estado del servidor y el rendimiento de Outline, PostgreSQL y Redis.
  • Optimización: A medida que la carga aumenta, considere las opciones para optimizar el rendimiento de la base de datos, el almacenamiento en caché o la escalabilidad de los recursos del VPS.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

instalación y configuración de Outline Wiki en VPS
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.