Skip to main content

Paso 3: Instalación limpia de Bookstack

En este punto se hace una instalación limpia de Bookstack. Para ello se hace uso del script que tiene Dan Brown en la guía de instalación para Ubuntu 22.04 pero algo modificado:

Script modificado en mi GitHub

Las modificaciones son las siguientes:

Cambio en los paquetes instalados

Pasa de:

apt install -y git unzip apache2 php8.1 curl php8.1-curl php8.1-mbstring php8.1-ldap php8.1-xml php8.1-zip php8.1-gd php8.1 mysql mysql-server-8.0 libapache2-mod-php8.1

a

apt install -y git unzip apache2 php8.2 curl php8.2-curl php8.2-mbstring php8.2-ldap php8.2-xml php8.2-zip php8.2-gd php8.2-mysql mariadb-server libapache2-mod-php8.2

Tener en cuenta que se usa la versión 8.2 de php y sus extensiones ya que es la más reciente al momento de la instalación (26/12/2023).

Además se usa mariadb-server ya que el paquete mysql-server no existe en Debian

Cambio en la creación del usuario bookstack

La sintaxis de MariaDB es ligeramente diferente a MySQL y por eso se ha de modificar la línea en la que se crea el usuario bookstack, de:

mysql -u root --execute="CREATE USER 'bookstack'@'localhost' IDENTIFIED WITH mysql_native_password BY '$DB_PASS';"

a

mysql -u root --execute="CREATE USER 'bookstack'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"

Otras modificaciones

Tener en cuenta que se debe modificar la línea 164 para que cuadre con la versión que se está instalando de PHP (8.2 en este caso):

a2enmod php8.2

En la documentación de Bookstack sobre Backup&Restore se indica que si se hace una instalación limpia de Bookstack para luego hacer un restore, no se debe ejecutar php artisan migrate al instalarlo. Sin embargo he comprobado que no hay ningún problema en ejecutar este comando y además es necesario ejecutarlo porque si no, no funciona luego correctamente Bookstack, por lo que se deja en el script de instalación.


Para ejecutar el script, tiene que tener permisos de ejecución:

chmod a+x installation-debian-12.sh
sudo ./installation-ubuntu-22.04.sh

Si al ejecutarlo da el siguiente error: sudo: unable to execute ./installation-debian-12.sh: No such file or directory crear el script con nano y copiar el contenido del script. Este error se ha observado al editar previamente el script con Notepad++ y copiarlo via Samba a la Raspberry.

Si la instalación es correcta, el output en la pantalla debería ser el siguiente:

sergio@bookstack:~ $ sudo ./test.sh
This script installs a new BookStack instance on a fresh Debian 12 'bookworm' server.
This script does not ensure system security.

This script logs full output to /home/sergio/bookstack_install_1703605505.log which may help upon issues.

Enter the domain (or IP if not using a domain) you want to host BookStack on and press [ENTER].
Examples: my-site.com or docs.my-site.com or <private IP>
sergio-jimenez.net

Installing using the domain or IP "sergio-jimenez.net"

[1/9] Installing required system packages... (This may take several minutes)
[2/9] Preparing MySQL database...
[3/9] Downloading BookStack to /var/www/bookstack...
[4/9] Installing Composer (PHP dependency manager)...
[5/9] Installing PHP dependencies using composer...
[6/9] Creating and populating BookStack .env file...
[7/9] Running initial BookStack database migrations...
[8/9] Setting BookStack file & folder permissions...
[9/9] Configuring apache server...
----------------------------------------------------------------
Setup finished, your BookStack instance should now be installed!
- Default login email: admin@admin.com
- Default login password: password
- Access URL: http://<private_IP>/ or http://sergio-jimenez.net/
- BookStack install path: /var/www/bookstack
- Install script log: /home/sergio/bookstack_install_1703605505.log
---------------------------------------------------------------

Log de la instalación como referencia en github.


Sources:

Installation · BookStack
https://www.bookstackapp.com/docs/admin/installation/

mariadb - What is the correct syntax for updating users MySQL password while specifying authentication plugin - Stack Overflow
https://stackoverflow.com/questions/66485096/what-is-the-correct-syntax-for-updating-users-mysql-password-while-specifying-au