# Instalar Bookstack

# Instalar Bookstack

#### Guía oficial

[Installation · BookStack (bookstackapp.com)](https://www.bookstackapp.com/docs/admin/installation/#requirements)

## Dependencias

- Apache
- PHP &gt;= 8.1
- MariaDB &gt;= 10.2
- Git
- [Composer](https://getcomposer.org)

**Instalar Apache, PHP, MariaDB, Git**

```
sudo apt install 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 mariadb-server libapache2-mod-php8.1
```

**Activar módulos necesarios de Apache.**

```
  sudo a2enmod rewrite
  sudo a2enmod php8.1
```

[**Instalar Composer**](https://wiki.pablomp.es/books/composer/page/instalar-composer "Instalar composer")

## Preinstalación

Antes de todo creamos la base de datos y usuario para BookStack.

Accedemos al usuario root con `sudo su`.

Accedemos a MariaDB usando el comando `mysql`, una vez ahí ejecutamos el siguiente código:

```mysql
CREATE DATABASE IF NOT EXISTS bookstackapp;
CREATE USER 'bookstackapp_user'@'localhost' IDENTIFIED BY 'Contraseña super segura';
GRANT ALL PRIVILEGES ON bookstackapp.* TO 'bookstackapp_user'@'localhost';
FLUSH PRIVILEGES;
```

Una vez ejecutado, salimos escribiendo `exit` 2 veces, para salir de MariaDB y del usuario root.

## Instalación

1. Clonar el repositorio de BookStack.  
    ```
    git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
    ```
    
      
    <div class="highlight"><div class="chroma">  
    </div></div>
2. Acceder a la carpeta y ejecutar el comando `composer install --no-dev`.
3. Copiar el archivo `.env.example` a `.env` y rellenar con su configuración ([Configuración de ejemplo](https://wiki.pablomp.es/books/instalar-bookstack/page/env ".env")).
4. Asegurarse de que las carpetas `storage`, `bootstrap/cache` y `public/uploads` puedan ser escritas por apache.
5. En la carpeta root. Ejecutar `php artisan key:generate` para generar una llave de aplicación única.
6. Ejecutar `php artisan migrate` para actualizar la base de datos.
7. Configurar el servidor web. 
    1. Mover la carpeta del repositorio a `/var/www/bootstrap` y ejecutar `sudo chown -R www-data:www-data /var/www/bootstrap` para der permisos a apache.
    2. Crear el archivo /etc/apache/sites-avaliable/bookstack.conf con la siguiente [configuración](https://wiki.pablomp.es/books/instalar-bookstack/page/bookstackconf "bookstack.conf").
    3. Activar la configuracion  
        Ejecutar `sudo a2ensite bookstack.conf`.  
        Reiniciar apache con `sudo systemctl restart apache2.service`.
8. ¡Listo! Ahora puedes iniciar sesión con las credenciales `admin@admin.com` y la contraseña `password`. Es recomendable cambiar la contraseña tras el primer inicio de sesión.

# Configurar Bookstack para usar smtp.gmail.com

<p class="callout info">Para poder hacer uso del servidor SMTP de Google, debemos tener una cuenta de Google con la autentificación en dos pasos activada.</p>

Accedemos a la configuración de nuestra cuenta, una vez en el apartado de seguridad, accedemos al apartado de verificación en dos pasos.

[![image.png](https://wiki.pablomp.es/uploads/images/gallery/2024-08/scaled-1680-/image.png)](https://wiki.pablomp.es/uploads/images/gallery/2024-08/image.png)

Una vez aquí bajamos al final de la pagina, ahí deberemos ver el apartado de contraseñas de aplicación al que queremos acceder.

[![image.png](https://wiki.pablomp.es/uploads/images/gallery/2024-08/scaled-1680-/2Soimage.png)](https://wiki.pablomp.es/uploads/images/gallery/2024-08/2Soimage.png)

Para crear una contraseña de aplicación ponemos un nombre y damos en crear, esto nos dará una contraseña que es la que tendremos que usar para poder configurar el servicio SMTP.

[![image.png](https://wiki.pablomp.es/uploads/images/gallery/2024-08/scaled-1680-/wdximage.png)](https://wiki.pablomp.es/uploads/images/gallery/2024-08/wdximage.png)

[![image.png](https://wiki.pablomp.es/uploads/images/gallery/2024-08/scaled-1680-/pF2image.png)](https://wiki.pablomp.es/uploads/images/gallery/2024-08/pF2image.png)

Una vez tenemos la contraseña, la ponernos en el apartado `MAIL_PASSWORD="Contraseña de aplicación"` y en `MAIL_USERNAME=correo@gmail.com` ponemos el correo del que hemos creado la contraseña de aplicación.

[Ejemplo de bookstack usando smtp.gmail.com.](https://wiki.pablomp.es/books/instalar-bookstack/page/env ".env") En el final de este archivo se puede ver como se usa smtp.gmail.com.

# Archivos de ejemplo

# bookstack.conf

```apache
<VirtualHost *:80>


# This is a simple example of an Apache VirtualHost configuration
# file that could be used with BookStack.
# This assumes mod_php has been installed and is loaded.
#
# Change the "docs.example.com" usage in the "ServerName" directive
# to be your web domain for BookStack.
#
# Change the "/var/www/bookstack/public/", used twice below, to the
# location of the "public" folder within your BookStack installation.
#
# This configuration is only for HTTP, Not HTTPS.
# For HTTPS we recommend using https://certbot.eff.org/


ServerName docs.example.com
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>
```

# .env

```
# This file, when named as ".env" in the root of your BookStack install
# folder, is used for the core configuration of the application.
# By default this file contains the most common required options but
# a full list of options can be found in the '.env.example.complete' file.

# NOTE: If any of your values contain a space or a hash you will need to
# wrap the entire value in quotes. (eg. MAIL_FROM_NAME="BookStack Mailer")

# Application key
# Used for encryption where needed.
# Run `php artisan key:generate` to generate a valid key.
APP_KEY==SomeRandomString

# Application URL
# This must be the root URL that you want to host BookStack on.
# All URLs in BookStack will be generated using this value
# to ensure URLs generated are consistent and secure.
# If you change this in the future you may need to run a command
# to update stored URLs in the database. Command example:
# php artisan bookstack:update-url https://old.example.com https://new.example.com
APP_URL=https://wiki.example.com

# Database details
DB_HOST=localhost
DB_DATABASE=basededatos
DB_USERNAME=basededatos_usuario
DB_PASSWORD="Contraseña super segura"

# Mail system to use
# Can be 'smtp' or 'sendmail'
MAIL_DRIVER=smtp

# Mail sender details
MAIL_FROM_NAME="BookStack"
MAIL_FROM=bookstack@example.com

# SMTP mail options
# These settings can be checked using the "Send a Test Email"
# feature found in the "Settings > Maintenance" area of the system.
# For more detailed documentation on mail options, refer to:
# https://www.bookstackapp.com/docs/admin/email-webhooks/#email-configuration
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=correo@gmail.com
MAIL_PASSWORD="Contraseña de aplicación"
MAIL_ENCRYPTION=tls
```