Cómo instalar BookStack en Debian 12

BookStack es un software wiki gratuito y de código abierto escrito en PHP con el framework web Laravel. BookStack pretende ser una plataforma sencilla y autoalojada para almacenar y organizar información.

En este tutorial, te guiaremos paso a paso por el proceso de instalación de BookStack en el servidor Debian 12 para que puedas tener tu propia plataforma tipo wiki para publicar información.

Requisitos previos

Antes de empezar, asegúrate de que tienes lo siguiente:

  • Un servidor Debian 12.
  • Un usuario no root con privilegios de administrador sudo.
  • Un nombre de dominio apuntando a la dirección IP del servidor.

Instalación de las dependencias

BookStack es una plataforma wiki escrita en PHP y MySQL/MariaDB. En este momento, es totalmente compatible con PHP 8.2. En esta fase, instalarás las dependencias para BookStack, que incluyen los paquetes LAMP Stack (Apache2, MariaDB, PHP), Git y Composer.

Actualiza y refresca el índice de paquetes de Debian utilizando el siguiente comando.

sudo apt update

actualizar repo

Una vez actualizado el repositorio, instala las dependencias de los paquetes para BookStack ejecutando el siguiente comando apt install. Con este comando, instalarás el paquete LAMP Stack, Composer y Git.

sudo apt install apache2 mariadb-server composer curl php php-xml libapache2-mod-php php-fpm php-curl php-mbstring php-ldap php-tidy php-zip php-gd php-mysql git

Escribe y para proceder con la instalación.

instalar dependencias

Una vez instaladas las dependencias, verifica cada una de ellas ejecutando el siguiente comando.

Verifica el servicio apache2 mediante el siguiente comando systemctl para asegurarte de que el servicio se está ejecutando y está habilitado.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

La siguiente salida confirmará que el servicio apache2 se está ejecutando y está habilitado.

comprobar apache2

Ahora verifica el servicio mariadb mediante el comando siguiente.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

La salida debería mostrar que el servicio mariadb se está ejecutando y está habilitado en tu sistema.

comprobar mariadb

A continuación, comprueba la versión de PHP y la lista de extensiones habilitadas mediante el siguiente comando.

php -v
php -m

Según la siguiente salida, PHP 8.2 está instalado en tu sistema.

comprobar php

Por último, verifica el Composer utilizando el siguiente comando. Esto localizará el archivo binario de Composer y comprobará su versión.

which composer
sudo -u www-data composer -v

Deberías ver que Composer 2.5.5 está instalado en /usr/bin/composer.

comprobar compositor

Configurar PHP

Tras instalar las dependencias, el siguiente paso es configurar la instalación de PHP realizando cambios en el archivo php.ini de tu máquina Debian.

Abre la configuración por defecto de PHP /etc/php/8.2/apache2/php.ini utilizando el siguiente comando del editor nano.

sudo nano /etc/php/8.2/apache2/php.ini

Cambia algunos ajustes por defecto con la siguiente configuración. Asegúrate de ajustar los parámetros date.timezone y memory_limit con el entorno de tu servidor.

date.timezone = Europe/Amsterdam
memory_limit = 512M

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio apache2 y aplicar los cambios que has realizado.

sudo systemctl restart apache2

Configurar el servidor MariaDB

Ahora que PHP está configurado, el siguiente paso será configurar la instalación del servidor MariaDB utilizando la utilidad mariadb-secure-installation, que te permite configurar la seguridad básica para MariaDB. Además, crearás una nueva base de datos y un nuevo usuario que utilizará BookStack.

Ejecuta el siguiente comando mariadb-secure-installlation para asegurar tu instalación de MariaDB.

sudo mariadb-secure-installation

Durante el proceso, se te preguntarán algunas configuraciones. Escribe Y para aceptar y aplicar los nuevos cambios, o escribe n para No rechazar la configuración.

  • Para la instalación por defecto del servidor MariaDB sin contraseña de root, pulsa ENTER cuando se te pregunte por la contraseña.
  • La autenticación local para los usuarios root de MariaDB está asegurada por defecto, introduce ‘n’ cuando se te pregunte si quieres cambiar el método de autenticación a ‘unix_socket’.
  • Introduce «Y» para crear una nueva contraseña de root de MariaDB. A continuación, introduce la contraseña segura de tu usuario raíz de MariaDB y repite la operación.
  • Cuando se te pida que desactives la autenticación remota para el usuario raíz de MariaDB, introduce «Y» para aceptar.
  • La instalación por defecto del servidor MariaDB viene con la base de datos «test» y permite que un usuario anónimo acceda a ella. Introduce «Y» en ambas opciones para eliminar la base de datos «test» por defecto y el privilegio anónimo.
  • Por último, introduce «Y» para confirmar los privilegios de recarga de tablas.

Después de configurar MariaDB, crearás una nueva base de datos MariaDB y un nuevo usuario que utilizará BookStack mediante el comando cliente mariadb.

Accede al servidor MariaDB utilizando el siguiente comando mariadb. Introduce tu contraseña de root de MariaDB cuando te lo pida.

sudo mariadb -u root -p

Ahora ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para BookStack. En este ejemplo, crearás una nueva base de datos y un nuevo usuario bookstack, con la contraseña p4ssword.

CREATE DATABASE bookstack;
CREATE USER bookstack@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL ON bookstack.* TO bookstack@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

crear base de datos y usuario

A continuación, ejecuta la siguiente consulta para verificar los privilegios del usuario bookstack.

SHOW GRANTS FOR bookstack@localhost;

Deberías ver que el usuario bookstack tiene permiso para acceder y gestionar la base de datos bookstack que utilizará BookStack.

verificar privilegios de usuario

Escribe quit para salir del Servidor MariaDB.

Descargar Bookstack

Ahora que has configurado el servidor PHP y MariaDB, estás listo para instalar BookStack. En esta sección, instalarás BookStack a través de Git y Composer.

En primer lugar, crea nuevos directorios /var/www/.config y /var/www/.cache que serán utilizados por Composer para almacenar la caché de dependencias y la configuración. A continuación, también debes cambiar la propiedad de ambos directorios al usuario www-data.

mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data /var/www/{.config,.cache}

Desplázate al directorio /var/www y descarga el código fuente de BookStack en el directorio bookstack. Tu directorio de instalación de BookStack debe ser /var/www/bookstack.

cd /var/www
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack

Ahora cambia la propiedad del directorio /var/www/bookstack al usuario www-data y entra en él.

sudo chown -R www-data:www-data /var/www/bookstack
cd /var/www/bookstack

descargar bookstack

A continuación, copia el archivo .env.example en .env y abre el nuevo archivo utilizando el siguiente comando del editor nano.

sudo -u www-data cp .env.example .env
sudo -u www-data nano .env

Introduce el nombre de tu dominio en la opción APP_URL e introduce los datos de tu base de datos MariaDB en la opción DB_.

# The application URL
APP_URL=http://bookstack.hwdomain.io
# Database values also need to be modified
# If you follow previous command, you only need to add your DB_PASSWORD
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=p4ssword

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para instalar las dependencias de PHP a través de Composer.

sudo -u www-data composer install --no-dev --no-plugins

Durante la instalación, se mostrará la siguiente salida.

descargar instalar dependencias

Una vez instaladas las dependencias de PHP, ejecuta el siguiente comando para generar la clave secreta y migrar la base de datos.

sudo -u www-data php artisan key:generate --no-interaction --force
sudo -u www-data php artisan migrate --no-interaction --force

La clave secreta del archivo .env se actualizará, y a continuación se muestra el proceso durante la migración de la base de datos.

generar la clave secreta y migrar la base de datos

Cuando todo haya terminado, ejecuta el siguiente comando para cambiar la propiedad de algunos directorios al usuario www-data y asegurarte de que esos directorios permiten la escritura.

sudo chown www-data:www-data -R bootstrap/cache public/uploads storage 
sudo chmod u+rw bootstrap/cache public/uploads storage

Por último, ejecuta el siguiente comando para cambiar el permiso del archivo .env a 640. Esto garantizará que sólo el usuario www-data pueda realizar cambios en el archivo.

sudo chmod -R 640 /var/www/bookstack/.env

Configuración del host virtual Apache2

En la siguiente sección, crearás una nueva configuración de host virtual Apache2 que se utilizará para ejecutar BookStack. Por tanto, debes asegurarte de que has preparado tu nombre de dominio y de que apunta a la dirección IP del servidor.

Antes de crear una configuración de host virtual, ejecuta el siguiente comando para habilitar el módulo de reescritura en Apache2.

sudo a2enmod rewrite

activar módulo de reescritura

Ahora crea una nueva configuración de host virtual /etc/apache2/sites-available/bookstack. conf utilizando el siguiente comando del editor nano.

sudo nano /etc/apache2/sites-available/bookstack.conf

Inserta la siguiente configuración y asegúrate de cambiar el nombre de dominio dentro de la opción ServerName. En el siguiente ejemplo se utilizará el dominio bookstack.hwdomain.io para la instalación de BookStack.

<VirtualHost *:80>
    ServerName bookstack.hwdomain.io
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/bookstack/public/
<Directory /var/www/bookstack/public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>

ErrorLog ${APACHE_LOG_DIR}/bookstack-error.log
CustomLog ${APACHE_LOG_DIR}/bookstack-access.log combined
</VirtualHost>

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para activar el archivo de host virtual bookstack.conf y verifica tu sintaxis de Apache2.

sudo a2ensite bookstack.conf
sudo apachectl configtest

Si utilizas la sintaxis adecuada, se imprimirá la salida«Sintaxis OK» en tu terminal.

configurar vhosts

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio aapche2 y aplicar los cambios que has realizado.

sudo systemctl restart apache2

Proteger Bookstack con certificados SSL/TLS

En esta guía, asegurarás BookStack con certificados SSL/TLS, que se pueden generar desde Letsencrypt mediante la herramienta Certbot.

Instala Certbot y el plugin Certbot para Apache mediante el comando apt install que aparece a continuación. Escribe y para confirmar y continuar con la instalación.

sudo apt install certbot python3-certbot-apache

instalar certbot

Ahora ejecuta el siguiente comando certbot para generar certificados SSL/TLS y asegurar tu instalación de BookStack. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d bookstack.hwdomain.io

Una vez finalizado el proceso, tus certificados SSL/TLS estarán disponibles en el directorio /etc/letsencrypt/live/bookstack.hwdomain.io. Además, tu instalación de BookStack se configurará automáticamente con HTTPS, que se configura a través del plugin de Apache Certbot.

Acceder a Bookstack

Llegados a este punto, todo está configurado y tu instalación de BookStack ha finalizado. Ahora puedes acceder a tu instalación de BookStack.

Inicia tu navegador web y visita el nombre de dominio de tu instalación de BookStack, como https://bookstack.hwdomain.io/, y serás redirigido a la página de inicio de sesión de BookStack.

Introduce la dirección de correo electrónico por defecto [email protected] y la contraseña es password, después haz clic en Iniciar sesión.

inicio de sesión en bookstack

Si tienes éxito, deberías ver el panel de BookStack como el siguiente:

tablero bookstack

Conclusión

Para terminar, has instalado con éxito BookStack en un servidor Debian 12 paso a paso. Has instalado BookStack mediante Git, Composer y con paquetes LAMP Stack (Apache2, MariaDB y PHP). También has asegurado BookStack con certificados SSL/TLS de Letsencrypt. A partir de aquí, ya puedes rellenar tu información y construir tu propia documentación.

También te podría gustar...