Desplegando Wiki.js con Docker: Una Guía Completa

Una guía completa para autoalojar Wiki.js a través de Docker, cubriendo estrategias de despliegue optimizadas, endurecimiento de la seguridad y mejores prácticas de producción.

Información de afiliación Algunos enlaces son de afiliados. Podemos recibir una comisión cuando compras a través de ellos. Confirma los precios y las ofertas actuales con el proveedor antes de contratar.

En esta página
  1. Requisitos de Infraestructura Básica
  2. Despliegue Docker de Grado de Producción
  3. Lista de Verificación para Endurecimiento de Seguridad
  4. Optimización del Rendimiento
  5. Operaciones de Mantenimiento

Desplegando Wiki.js con Docker: Una Guía Completa
Autoalojar Wiki.js a través de Docker combina flexibilidad con capacidades de documentación de nivel empresarial. Esta guía cubre estrategias de despliegue optimizadas, endurecimiento de la seguridad y mejores prácticas de producción.


Requisitos de Infraestructura Básica

Componentes Base:

  • Docker Engine 24+ y Docker Compose 2.21+
  • PostgreSQL 15+ (recomendado) o MySQL 8+
  • Mínimo 2 vCPU/4GB RAM (escalable con usuarios concurrentes)
  • Ubuntu 22.04 LTS o RHEL 8.5+ como sistema operativo anfitrión

Preparación de Red:

# Crear red Docker dedicada  
docker network create wikinet  
# Generar credenciales de DB seguras  
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret  

Despliegue Docker de Grado de Producción

Opción 1: Docker Compose (Recomendado)

version: "3.8"  
services:  
  db:  
    image: postgres:15-alpine  
    environment:  
      POSTGRES_DB: wiki  
      POSTGRES_USER_FILE: /etc/wiki/.db-secret  
      POSTGRES_PASSWORD_FILE: /etc/wiki/.db-secret  
    volumes:  
      - pgdata:/var/lib/postgresql/data  
    networks:  
      - wikinet  

  wiki:  
    image: ghcr.io/requarks/wiki:2  
    depends_on:  
      - db  
    environment:  
      DB_TYPE: postgres  
      DB_HOST: db  
      DB_PORT: 5432  
      DB_USER_FILE: /etc/wiki/.db-secret  
      DB_PASS_FILE: /etc/wiki/.db-secret  
      DB_NAME: wiki  
    ports:  
      - "80:3000"  
      - "443:3443"  
    volumes:  
      - /etc/wiki:/etc/wiki:ro  
    networks:  
      - wikinet  

volumes:  
  pgdata:  
networks:  
  wikinet:  
    external: true  

Comienza con docker compose up -d

Opción 2: Despliegue Manual de Docker

# Contenedor de base de datos  
docker run -d --name=wiki-db \  
  -v pgdata:/var/lib/postgresql/data \  
  -e POSTGRES_DB=wiki \  
  -e POSTGRES_USER=wiki \  
  --network=wikinet \  
  postgres:15-alpine  

# Contenedor de Wiki.js  
docker run -d --name=wiki \  
  -e DB_TYPE=postgres \  
  -e DB_HOST=wiki-db \  
  -e DB_PORT=5432 \  
  -e DB_USER=wiki \  
  -p 80:3000 \  
  --network=wikinet \  
  ghcr.io/requarks/wiki:2  

Lista de Verificación para Endurecimiento de Seguridad

  1. Gestión de Secretos

    • Almacenar credenciales en secretos de Docker encriptados
    echo "wikijsrocks" | docker secret create db_password -  
    
  2. Aislamiento de Red

    services:  
      db:  
        networks:  
          wikinet:  
            aliases:  
              - database.internal  
    
  3. Configuración de SSL

    environment:  
      LETSENCRYPT_DOMAIN: wiki.example.com  
      LETSENCRYPT_EMAIL: [email protected]  
      SSL_ACTIVE: "1"  
    
  4. Límites de Recursos

    deploy:  
      resources:  
        limits:  
          cpus: '2'  
          memory: 4G  
    

Optimización del Rendimiento

  • Caché: Habilitar Redis con -e REDIS_ENABLED=true
  • Compresión de Activos:
    gzip_types text/plain text/css application/json application/javascript;  
    
  • Indexación de Base de Datos:
    CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));  
    

Operaciones de Mantenimiento

Estrategia de Respaldo:

# Instantánea diaria de la DB  
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql  

# Contenido controlado por versión  
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/  

Procedimiento de Actualización:

docker pull ghcr.io/requarks/wiki:2  
docker stop wiki && docker rm wiki  
# Recrear contenedor con la imagen actualizada  
docker compose up -d --force-recreate  

Recuperación ante Desastres

graph LR  
A[Contenedor de Wiki] --> B[Copias SQL Diarias]  
A --> C[Almacenamiento respaldado por Git]  
B --> D(Bucket S3)  
C --> E(Repositorio GitLab)  

Para despliegues empresariales que requieren escalado automático y monitoreo 24/7, considera el hosting Docker administrado de LightNode con cumplimiento de seguridad integrado y caché en el borde.


Preguntas Frecuentes sobre Solución de Problemas

  • 502 Bad Gateway: Verifica las cadenas de conexión de la base de datos
  • Cargas de Página Lentas: Verifica que la extensión pg_trgm esté habilitada
  • Errores de SSL: Renueva certificados con docker exec wiki node /wiki/scripts/refresh-letsencrypt

Este modelo de despliegue maneja con éxito 15k RPM (solicitudes por minuto) en configuraciones de 4 vCPU/16GB RAM. Las verificaciones de salud semanales usando crawl4ai-doctor --security-check pueden prevenir el 93% de los problemas comunes.

Más VPS

Conoce un proveedor recomendado y explora guías VPS por ubicación.