[{"data":1,"prerenderedAt":176},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-bookstack-en-un-vps-ma-es":6,"promo-bar-likely":175},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-bookstack-en-un-vps-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":133,"ctaBody":134,"ctaButton":135,"ctaUrl":136,"relatedPosts":137},79,"alojar-bookstack-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-bookstack","host-bookstack-on-your-own-vps","استضافة-bookstack-على-خادم-vps-الخاص-بك","Alojar BookStack en su propio VPS","Guía completa para instalar BookStack en un VPS con Docker Compose, SSL, SMTP y copias de seguridad. Wiki de código abierto, ~2 GB de RAM, desplegado en 15 minutos.",7,2,false,"2026-04-02T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-bookstack-poster.svg",{"categorySlug":33,"appSlug":34},"colaboracion-productividad","bookstack","BookStack es una plataforma de documentación de código abierto organizada en estantes, libros, capítulos y páginas. Autoalojada en un VPS, se convierte en el wiki interno ideal para su equipo o agencia: búsqueda de texto completo, editor WYSIWYG, permisos granulares. Esta guía cubre la instalación completa con Docker Compose, la configuración SSL, la resolución de errores comunes y la configuración de una copia de seguridad fiable.",[37,41,52,55,84,103,106,109,112,120,123,127],{"type":38,"title":39,"body":40},"h2","Por qué autoalojar BookStack en un VPS","BookStack destaca por su simplicidad: allí donde otros wikis ahogan al usuario con opciones, impone una jerarquía clara — estantes, libros, capítulos, páginas — que hace la documentación navegable de inmediato. Construido sobre Laravel, es ligero y fácil de mantener. Autoalojado en un VPS, conserva toda su documentación interna — procedimientos, runbooks, base de conocimiento de clientes — en su propia infraestructura, sin suscripción por usuario. Para una agencia que documenta sus proyectos o un equipo técnico que centraliza sus procedimientos, es un wiki privado que usted controla de principio a fin, con búsqueda de texto completo, gestión detallada de permisos y editor WYSIWYG o Markdown.",{"type":42,"title":43,"items":44},"ul","Beneficios concretos de un BookStack autoalojado",[45,46,47,48,49,50,51],"Estructura clara en estantes\u002Flibros\u002Fcapítulos\u002Fpáginas: documentación navegable sin esfuerzo.","Editor WYSIWYG y Markdown a elección, con diagramas Draw.io integrados.","Permisos granulares por rol y por libro para compartimentar los contenidos sensibles.","Búsqueda de texto completo y rápida sobre el conjunto de la base de conocimiento.","Autenticación LDAP, SAML u OAuth para integrarse con su directorio corporativo.","Huella ligera: un VPS con 2 GB de RAM basta para la documentación de un equipo.","Sin suscripción por usuario — número ilimitado de colaboradores sin coste adicional.",{"type":38,"title":53,"body":54},"Requisitos de hardware y software","BookStack es poco exigente. Un VPS de 1 a 2 vCPU y **2 GB de RAM como mínimo** aloja cómodamente la documentación de un equipo; con BookStack y MariaDB ejecutándose juntos, 2 GB es el mínimo recomendado — por debajo, las migraciones de Laravel en el primer arranque pueden fallar por falta de memoria. El consumo sube sobre todo con el volumen de imágenes subidas.\n\nPrevea de 15 a 25 GB de SSD según la cantidad de archivos adjuntos. En cuanto al software: Docker 24+ y el plugin Compose v2 (`docker compose` sin guion), un subdominio `wiki.sudominio.com` con un registro A, y acceso SMTP para invitaciones y notificaciones por correo electrónico.",{"type":56,"title":57,"headers":58,"rows":63},"comparison","BookStack frente a alternativas autoalojadas",[59,60,61,62],"Herramienta","Stack","RAM mín.","Punto fuerte",[64,69,74,79],[65,66,67,68],"BookStack","Laravel + MariaDB","2 GB","Jerarquía libros\u002Fcapítulos, WYSIWYG",[70,71,72,73],"Wiki.js","Node.js + BD a elegir","512 MB","Editor moderno, sincronización Git",[75,76,77,78],"Outline","Node.js + PostgreSQL","1 GB","UI tipo Notion, API rica",[80,81,82,83],"Confluence","SaaS \u002F on-premise","4 GB+","Integración Atlassian, maduro",{"type":85,"title":86,"steps":87},"steps","Desplegar BookStack con Docker Compose y SSL",[88,91,94,97,100],{"title":89,"body":90},"Preparar el VPS e instalar Docker","Conéctese por SSH e instale Docker y el plugin Compose:\n\n```bash\ncurl -fsSL https:\u002F\u002Fget.docker.com | sh\napt install docker-compose-plugin\nmkdir -p \u002Fopt\u002Fbookstack && cd \u002Fopt\u002Fbookstack\n```\n\nVerifique: `docker compose version` debe mostrar v2.x o superior. La imagen comunitaria `lscr.io\u002Flinuxserver\u002Fbookstack` es la más extendida y mejor mantenida para un despliegue en contenedores.",{"title":92,"body":93},"Crear el archivo docker-compose.yml","Cree `\u002Fopt\u002Fbookstack\u002Fdocker-compose.yml` con dos servicios — MariaDB y BookStack — en una red dedicada:\n\n```yaml\nservices:\n  mariadb:\n    image: mariadb:10.11\n    environment:\n      MYSQL_ROOT_PASSWORD: changeme_root\n      MYSQL_DATABASE: bookstack\n      MYSQL_USER: bookstack\n      MYSQL_PASSWORD: changeme_bk\n    volumes:\n      - .\u002Fdata\u002Fmariadb:\u002Fvar\u002Flib\u002Fmysql\n    networks: [bookstack]\n\n  bookstack:\n    image: lscr.io\u002Flinuxserver\u002Fbookstack:latest\n    environment:\n      PUID: 1000\n      PGID: 1000\n      APP_URL: https:\u002F\u002Fwiki.sudominio.com\n      DB_HOST: mariadb\n      DB_USER: bookstack\n      DB_PASS: changeme_bk\n      DB_DATABASE: bookstack\n      MAIL_DRIVER: smtp\n      MAIL_HOST: smtp.sudominio.com\n      MAIL_PORT: 587\n      MAIL_FROM: wiki@sudominio.com\n      MAIL_USERNAME: wiki@sudominio.com\n      MAIL_PASSWORD: su_contrasena_smtp\n    ports:\n      - \"6875:80\"\n    volumes:\n      - .\u002Fdata\u002Fbookstack:\u002Fconfig\n    depends_on: [mariadb]\n    networks: [bookstack]\n\nnetworks:\n  bookstack:\n```\n\n`APP_URL` debe coincidir exactamente con la URL HTTPS final. Un valor incorrecto rompe los enlaces internos y las subidas.",{"title":95,"body":96},"Lanzar la pila y comprobar los registros","```bash\ndocker compose up -d\ndocker compose logs -f bookstack\n```\n\nEn el primer arranque, BookStack ejecuta automáticamente las migraciones de Laravel para crear el esquema de la base de datos. Espere la línea `Server running on http:\u002F\u002F0.0.0.0:80` antes de continuar — tarda entre 30 y 60 segundos.",{"title":98,"body":99},"Configurar el reverse proxy y el SSL","Con **Caddy** (gestión automática del certificado):\n\n```\nwiki.sudominio.com {\n    reverse_proxy localhost:6875\n}\n```\n\nRecargue Caddy: `systemctl reload caddy`.\n\nCon **Nginx + Certbot**:\n\n```nginx\nserver {\n    listen 80;\n    server_name wiki.sudominio.com;\n    return 301 https:\u002F\u002F$host$request_uri;\n}\nserver {\n    listen 443 ssl;\n    server_name wiki.sudominio.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fwiki.sudominio.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fwiki.sudominio.com\u002Fprivkey.pem;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:6875;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\nObtenga el certificado con `certbot --nginx -d wiki.sudominio.com`.",{"title":101,"body":102},"Primera conexión y segurización de la cuenta admin","Abra `https:\u002F\u002Fwiki.sudominio.com`. La cuenta por defecto es `admin@admin.com` con la contraseña `password`. Cámbielas inmediatamente en **Configuración → Perfil**.\n\nVerifique después que SMTP funciona: **Configuración → Configuración de correo electrónico → Enviar un correo de prueba**. Si el test falla, revise los registros: `docker compose logs bookstack | grep -i mail`.",{"type":38,"title":104,"body":105},"Configuración avanzada: SSO, LDAP y SAML","BookStack soporta varios mecanismos de autenticación centralizada, configurables mediante variables de entorno en `docker-compose.yml`.\n\n**LDAP \u002F Active Directory**: añada las variables `AUTH_METHOD=ldap`, `LDAP_SERVER`, `LDAP_BASE_DN`, `LDAP_USER_FILTER` y `LDAP_VERSION`. Los usuarios inician sesión con sus credenciales corporativas sin una cuenta BookStack separada.\n\n**SAML 2.0** (para proveedores como Authentik, Keycloak o Azure AD): establezca `AUTH_METHOD=saml2` y rellene `SAML2_IDP_ENTITYID`, `SAML2_IDP_SSO` y `SAML2_IDP_SLO`. La documentación oficial de BookStack ofrece ejemplos por proveedor.\n\n**OAuth social** (GitHub, Google, Slack): cada proveedor tiene su par de variables `*_APP_ID` \u002F `*_APP_SECRET`. Esta opción es útil para equipos que quieren evitar la gestión de contraseñas sin desplegar un servidor LDAP.",{"type":38,"title":107,"body":108},"Hacer copias de seguridad y restaurar BookStack","Una instancia de BookStack se apoya en **tres elementos**: la base de datos MariaDB, la carpeta `uploads` (imágenes y archivos adjuntos) y el valor `APP_KEY` en la configuración. Sin el `APP_KEY`, el contenido cifrado es irrecuperable tras la restauración.\n\nScript de copia de seguridad diaria en `\u002Fetc\u002Fcron.daily\u002Fbookstack-backup`:\n\n```bash\n#!\u002Fbin\u002Fbash\nBACKUP_DIR=\u002Fvar\u002Fbackups\u002Fbookstack\nmkdir -p $BACKUP_DIR\nDATE=$(date +%Y%m%d)\ndocker exec $(docker ps -qf name=mariadb) \\\n  mysqldump -u bookstack -pchangeme_bk bookstack \\\n  > $BACKUP_DIR\u002Fbookstack-db-$DATE.sql\ntar -czf $BACKUP_DIR\u002Fbookstack-uploads-$DATE.tar.gz \u002Fopt\u002Fbookstack\u002Fdata\u002Fbookstack\u002Fuploads\nfind $BACKUP_DIR -mtime +14 -delete\n```\n\nCopie después estos archivos a almacenamiento externo (S3, Backblaze B2 o el almacenamiento objeto de su VPS). Guarde el `APP_KEY` en un gestor de secretos fuera del servidor — es el único elemento que no puede recrearse.",{"type":38,"title":110,"body":111},"Resolución de problemas: errores comunes","Algunos errores aparecen con frecuencia durante una instalación nueva o una actualización.",{"type":42,"title":113,"items":114},"Problemas frecuentes y soluciones",[115,116,117,118,119],"**Error SMTP «Connection refused» o timeout**: compruebe que `MAIL_PORT` corresponde al puerto real (587 para STARTTLS, 465 para SSL). Algunos servidores SMTP bloquean el puerto 25 saliente. Pruebe la conectividad desde el contenedor: `docker exec -it bookstack curl -v telnet:\u002F\u002Fsmtp.sudominio.com:587`.","**Permisos en `storage\u002F`: error 500 o página en blanco**: la carpeta `\u002Fopt\u002Fbookstack\u002Fdata\u002Fbookstack` debe pertenecer al UID 1000 (variable `PUID`). Corrija con `chown -R 1000:1000 \u002Fopt\u002Fbookstack\u002Fdata\u002Fbookstack` y reinicie el contenedor.","**Lentitud o timeout de MariaDB al arrancar**: BookStack espera a que MariaDB esté lista. Si el contenedor BookStack se reinicia en bucle los primeros segundos, es normal. Añada un `healthcheck` al servicio `mariadb` en el Compose o espere 30 segundos antes de inspeccionar los registros.","**Las imágenes no se muestran tras un cambio de dominio**: `APP_URL` debe coincidir exactamente con la URL HTTPS pública. Si cambia de dominio, actualice `APP_URL` en el Compose, reinicie el contenedor y ejecute `php artisan bookstack:update-url` desde dentro del contenedor para actualizar las URLs almacenadas en la base de datos.","**Las migraciones se detienen en el primer arranque (OOM)**: si el VPS tiene menos de 2 GB de RAM, las migraciones de Laravel pueden ser eliminadas por el OOM killer. Añada un fichero de swap de 2 GB (`fallocate -l 2G \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`) o aumente la RAM del VPS antes de reintentar.",{"type":38,"title":121,"body":122},"Actualizar BookStack","La imagen `lscr.io\u002Flinuxserver\u002Fbookstack:latest` recibe las nuevas versiones poco después de su publicación en GitHub. Para actualizar:\n\n```bash\ncd \u002Fopt\u002Fbookstack\ndocker compose pull\ndocker compose up -d\ndocker compose logs -f bookstack\n```\n\nLas migraciones de base de datos se aplican automáticamente al arrancar. Consulte las \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBookStackApp\u002FBookStack\u002Freleases\">notas de versión de BookStack\u003C\u002Fa> antes de cualquier actualización mayor: algunas versiones introducen cambios de esquema o de configuración.",{"type":124,"title":125,"body":126},"tip","Consejo de seguridad","Configure una entrada `robots.txt` o proteja su instancia de BookStack detrás de un firewall de aplicaciones web si contiene procedimientos internos sensibles. BookStack no ofrece un modo «solo intranet» por defecto — la URL pública es accesible para cualquiera que conozca la dirección. Para una documentación verdaderamente privada, combine los permisos granulares de BookStack con una regla UFW o una VPN WireGuard que restrinja el acceso al puerto 443.",{"type":42,"title":128,"items":129},"Para profundizar",[130,131,132],"\u003Ca href=\"\u002Fblog\u002Fheberger-nextcloud\">Alojar Nextcloud en un VPS\u003C\u002Fa> — almacenamiento en la nube y colaboración documental.","\u003Ca href=\"\u002Fblog\u002Fheberger-gitea\">Alojar Gitea en un VPS\u003C\u002Fa> — forja Git autoalojada para sus equipos de desarrollo.","\u003Ca href=\"\u002Fblog\u002Fself-host-authentik-vps\">Authentik en un VPS\u003C\u002Fa> — SSO de código abierto para centralizar la autenticación de BookStack y sus otras aplicaciones.","Instale BookStack en un VPS ServOrbit con un clic","BookStack está disponible en el Marketplace ServOrbit. Pida un VPS Cloud y el wiki estructurado se instala automáticamente, MariaDB incluida.","Ver la ficha de BookStack","\u002Fapplications\u002Fcolaboracion-productividad\u002Fbookstack",[138,157],{"id":139,"slug":140,"slugs":141,"title":145,"excerpt":146,"readTime":147,"views":148,"isPinned":19,"noindex":19,"publishedAt":149,"updatedAt":150,"category":151,"categories":152,"featuredImage":29,"bgImage":30,"posterImage":154,"relatedSolution":155},81,"alojar-wiki-js-en-un-vps",{"fr":142,"en":143,"ar":144,"es":140},"heberger-wiki-js","host-wikijs-on-your-own-vps","استضافة-wikijs-على-خادمك-الافتراضي-الخاص-vps","Alojar Wiki.js en su propio VPS","Instale Wiki.js en su VPS: wiki moderno en Markdown con Git, PostgreSQL, autenticación y SSL mediante Docker. Tutorial paso a paso.",4,1,"2026-03-31T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[153],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-wiki-js-poster.svg",{"categorySlug":24,"appSlug":156},"wiki-js",{"id":158,"slug":159,"slugs":160,"title":164,"excerpt":165,"readTime":166,"views":148,"isPinned":19,"noindex":19,"publishedAt":167,"updatedAt":168,"category":169,"categories":170,"featuredImage":29,"bgImage":30,"posterImage":172,"relatedSolution":173},71,"alojar-nextcloud-en-su-propio-vps",{"fr":161,"en":162,"ar":163,"es":159},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","استضافة-nextcloud-على-خادمك-الـvps-الخاص","Alojar Nextcloud en VPS: guía NC 35, PHP 8.3 y MariaDB 11","Aloje Nextcloud en un VPS: Docker Compose, Redis, copia MariaDB, subidas de más de 40 GB tras Cloudflare y una alternativa a Office 2021.",20,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[171],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":24,"appSlug":174},"nextcloud",true,1794270520786]