Nextcloud 19 en la Raspberry Pi. Servidor web, PHP y MariaDB

Raspberry Pi OS es una versión de Debian 10 optimizada para el procesador de la Raspberry, que no es uno normal de ordenador (x86 o x86_64), sino más parecido a los de los móviles (arm). Al estar basada en Debian, nos vamos a encontrar versiones muy probadas de las aplicaciones, pero en versiones no muy modernas. Afortunadamente, parece que en últimas versiones se han preocupado de mejorar esto un poco

Por su parte, MariaDB es una bifurcación (fork) de MySQL que tiene todas las características de MySQL y alguna más, aparte de (según parece) ser más rápida.

Y, por último, Apache es el servidor web, el programa que recibe las peticiones de otros ordenadores y manda páginas web. Hay otros servidores más ligeros (Nginx, lighthttp) que seguramente harían que la Raspberry en general y nuestra nube de Nextcloud en particular funcionaran algo más rápido, pero en mi caso opto por Apache por dos motivos. En primer lugar, porque es el único que he manejado y que algo entiendo de su configuración (poco, realmente poco, en realidad) y en segundo lugar porque hay algunas apps de Nextcloud que piden Apache.

Vamos a ver cómo podemos conseguir instalar Apache2, PHP 7.3 y MariaDB 10 en nuestra flamante Raspbian.

Para entender lo que vamos a hacer, es interesante saber cómo funcional los repositorios en Linux. En Windows, cuando instalamos un programa, nos bajamos un archivo que tiene todo lo que necesita el programa. Es sencillo, pero si varios programas necesitan lo mismo, tendremos eso tres veces en lugar de solo una. En Linux el software se organiza en repositorios, servidores que contienen los programas organizados en paquetes, de tal manera que si tres aplicaciones necesitan PHP, por ejemplo, en lugar de que cada aplicación incluya PHP, las tres declaran que necesitan PHP y se instala una sola vez. Es una solución elegante, aunque puede dar problemas de dependencias (esas necesidades se llaman dependencias y se pueden convertir en un dolor de cabeza).

Instalación

Consiste  en ejecutar la orden sudo apt install apache2 mariadb-server php7.3 php-redis php7.3-cli php7.3-curl php7.3-gd php7.3-ldap php7.3-mbstring php7.3-mysql php7.3-xml php7.3-xmlrpc php7.3-zip libapache2-mod-php7.3 phpmyadmin. Tardará un buen rato en descargar y configurar todo esto.

Actualización 15 de octubre: Si queremos instalar una versión más moderna de PHP, que no dé problemas con algunas apps como Passwords y con versiones futuras de Nextcloud, podemos añadir el repositorio de Sury, siguiendo estas instrucciones que traduzco:

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg Conseguimos la clave del repositorio de Sury

echo “deb https://packages.sury.org/php/ buster main” | sudo tee /etc/apt/sources.list.d/php.list Añadimos a los orígenes del software el repositorio

sudo apt update Actualizamos

 


 

Durante la instalación, nos preguntará qué servidor web deseamos configurar. Seleccionamos Apache marcándolo con la barra espaciadora, vamos a «Aceptar» con el tabulador y pulsamos Intro para aceptar.

Configuración de phpmyadmin

También nos pedirá configurar el usuario root, al que tendremos que poner una contraseña.

Podemos comprobar que la instalación ha funcionado así:

  • Apache: abrimos un navegador y en la barra de direcciones (no en Google, sino ahí arriba del todo, donde ahora mismo pone polkillas.net y un montón de cosas más) ponemos la dirección IP de nuestra Raspberry. Ya sabemos: 192.168.xx.xx. Debería aparecer la siguiente pantalla:
    Página por defecto de Apache2 en Debian
  • PHP: Podemos comprobar que lo hemos hecho bien escribiendo php -v en el terminal y nos debe aparecer el número exacto de versión). También podemos crear un archivo de información para verlo en el navegador. Esta versión es más chula y da más información, lo cual puede ser peligroso si nos quieren atacar, así que la recomendación es borrar este archivo después de comprobar que lo hemos hecho bien.creamos el archivo con sudo nano /etc/www/html/info.php y escribimos lo siguiente en su interior:
    <?php
    phpinfo();
    ?>

    Guardamos con CTRL-X, s y lo vemos en el navegador en la direción http://192.168.xx.xx/info.php, que debe dar algo parecido a esto (se ve cómo estaba en una versión anterior de este tutorial, con PHP 7.0:
    Resultado de phpinfo
  • MariaDB: entramos en la Raspberry vía SSH  y escribimos sudo mysql --user=root mysql,  lo que debe hacer que el cursor cambie a los siguiente:
    Prompt de MariaDB en Raspbian

 

Preparación de la base de datos

Una vez que hemos comprobado que todo funciona, podemos crear el usuario

Ahora debemos crear la base de datos y el usuario que vamos a utilizar con nuestra instalación de Nextcloud. Parar ello, lanzamos estos comandos SQL:

create user 'USUARIO'@'localhost' identified by 'CONTRASEÑA';
cambiando las mayúsculas por el usuario y contraseña que queramos.

create database NOMBREDELABASEDEDATOS;
cambiando las mayúsculas por el nombre que queramos.

Y le concedemos derechos de uso a este usuario que acabamos de crear con

grant all privileges on NOMBREDELABASEDEDATOS.* to 'USUARIO'@'localhost' with grant option;

Por último, recargamos los privilegios de MariaDB con flush privileges; y salimos con exit.

Retoques y mejoras

De inicio, tanto MySQL como MariaDB vienen con ciertas configuraciones de prueba que es mejor eliminar. Para ello escribimos sudo mysql_secure_installation (truco sacado de aquí) y respondemos las preguntas:

Se pide, lo primero la contraseña del usuario ‘root’. El error que aparece se debía a que no recordaba qué contraseña había puesto, y tuve que probar dos. Con la nueva versión no hay contraseña de root, así que te propone crear esa contraseña.

Después nos pide eliminar el acceso anónimo, que es una buena idea, y deshabilitar el acceso del usuario root desde otro ordenador que no sea la Raspberry. También sugiere eliminar una base de datos de prueba, que es innecesaria. Decimos que sí (y) a estas tres preguntas.

Por último, sugiere recargar las tablas de privilegios (lo que quiera que eso quiera decir), También aceptamos y listo.

Otros requisitos de Nextcloud

Para poder ver vistas previas de las imágenes que subamos a nuestra nube, necesitamos instalar un programa como ffmpeg, y para las Tareas, necesitamos el módulo intl de PHP.

sudo apt-get install ffmpeg php-intl

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.