https://paquita.masto.host/polkillas

Nextcloud en la Raspberry Pi (6). DDNS – Tu propio dominio seguro (1)

El siguiente paso para tener una verdadera nube a la que podamos acceder desde cualquier parte del mundo con nuestro ordenador o móvil es configurar una dirección única para la Raspberry. La dirección que hemos estado utilizando hasta ahora (192.168.0.26 o similar) no sirve más que en nuestra red local. Pero lo interesante de tener una nube propia está en poder acceder a ella desde cualquier lugar. Hay un problema para ello: la práctica totalidad de las empresas proveedoras de servicios de internet en España funcionan mediante lo que se conoce como IP dinámica: la IP, la dirección en internet, va cambiando de forma que los clientes no podemos controlarlo. De tal manera que si acudimos a servicios como What’s My IP, hoy nos puede dar un resultado y mañana otro que no podemos adivinar. Para ello hace falta algo llamado servidor de nombre de dominio dinámico o DDNS, por sus siglas en inglés. Este tipo de servicios instala un pequeño programa en nuestro servidor que periódicamente comprueba si ha cambiado nuestra dirección y lo actualiza en un «dominio» propio, de tal manera que solo tenemos que usar este «dominio». Lo escribo entre comillas porque esta explicación no es técnicamente del todo precisa, pero es más que suficiente para nuestras necesidades.

¿Qué necesitamos para tener una dirección propia reconocible? Hay muchos servicios DDNS disponibles. El que yo uso es no-ip.com, que es bastante fácil de utilizar.

En primer lugar tenemos que registrarnos en la web de No IP.

free-dynamic-dns-managed-dns-managed-email-domain-registration-no-ip-mozilla-firefox_055

Como se ve en la imagen, podemos elegir una dirección que sea «lo-que-te-dé-la-gana.una-de-las-cuatro-opciones». Mi nube en producción usa la dirección http://polkillas.ddns.net, pero puedes escoger la opción que prefieras.

Cuando nos registramos, nos envía un correo de confirmación a nuestra cuenta de correo. Cuando activamos mediante el enlace, podemos entrar en el servicio. El segundo paso consiste en descargarse el programa que se conecta a No IP. Lo llaman DUC y se instala así, siguiendo las instrucciones oficiales:

mkdir /home/pi/noip (creamos un directorio para bajarlo)

cd /home/pi/noip (vamos al directorio)

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz (descargamos el DUC)

tar vzxf noip-duc-linux.tar.gz (lo descomprimimos)

cd noip-2.1.9-1 (entramos en el directorio que se ha creado)

sudo make (preparamos el programa para instalarlo)

sudo make install (lo instalamos)

Este procedimiento se llama compilar el programa. En el último paso, nos pedirá la dirección de correo y la contraseña de nuestra cuenta en no-ip.com.

Luego nos pedirá el intervalo de tiempo en minutos tras el cual se actualizará la dirección, si fuera necesario. El mínimo es 5 y en realidad 30, lo que sale por defecto, suele ser suficiente, pero se puede poner menos. También nos preguntará si queremos ejecutar algo después, pero podemos contestar que no.

pipolkillas-pi-noip-noip-2-1-9-1_058

Ya podemos ejecutarlo con la orden sudo noip2. Y como querremos que se ejecute solo al arrancar la Raspberry, lo hacemos de la siguiente manera. Vamos a editar los programas que se ejecutan cada cierto tiempo o en momentos determinados (como el arranque o el apagado) de la Raspberry con la orden

sudo crontab -e

La primera vez que editamos el archivo crontab nos dará a elegir entre diferentes editores de texto. El recomendado es «nano», la opción 2.

En el archivo que aparece, añadimos en la última línea lo siguiente:

@reboot sudo -u root noip2

Cerramos con CTRL + X y le decimos que guarde el archivo.

Si ahora mismo volvemos a ejecutar el DUC, nos dará el siguiente error:

sudo noip2

One noip2 process is already active,
and the multiple instance flag (-M) is not set.

Lo que significa que ya está funcionando. Vamos a comprobar así que lo hemos hecho bien, reiniciando la Raspberry con la orden sudo reboot. Si intentamos ejecutar el DUC, nos dará el mismo mensaje, con lo que es correcto. Así pues, ya podemos ir a nuestro navegador y buscar la dirección que hemos escogido al principio (http://polkillas.ddns.net/nube, en mi caso), y nos debería aparecer lo siguiente:

nextcloud-mozilla-firefox_060

Que significa que nuestra nube ha detectado algo raro: ya no accedemos desde la IP local, sino desde un dominio de internet. Por si acaso, no se fía y nos pregunta. Pulsamos el botón «Añadir … como dominio de confianza» o, en inglés «Add … as trusted domain» y, si estábamos registrados como administradores, directamente nos sale una pantalla en la que nos pregunta si queremos añadir el dominio. Respondemos que sí y nos saldrá la pantalla de administración de Nextcloud. El mensaje rojo no es exactamente un error, sino una advertencia que corregiremos en próximas entradas.

administracion-nextcloud-mozilla-firefox_061

SI no funciona este proceso, hace falta abrir los puertos del router. Es un proceso que depende mucho del modelo de router que tengamos en casa, así que, en este caso, toca recurrir a Google o a DuckDuckGo para buscar información concreta de cómo se hace.

Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (5). Instalación de Nextcloud

Actualizado el 15/11/17 a la versión 12.0.3

El siguiente paso es, por fin, instalar Nextcloud en nuestra Raspberry. Es un paso más sencillo que los anteriores, paradójicamente. Pero aun así, vamos con ello. Lo mejor en este paso es entrar a la Raspberry desde otro ordenador con SSH.

En PuTTY o el terminal, entramos en la Raspberry y nos dirigimos a la carpeta raíz del servidor web, que es una carpeta de sistema, está protegida contra escritura  y el usuario ‘pi’ no puede hacer nada en ella, a no ser que tome privilegios de superusuario. Es decir, todo lo que hagamos aquí deberemos hacerlo empezando las órdenes con ‘sudo’. La carpeta es /var/www/html.

cd /var/www/html
ls

La segunda orden lista el contenido de la carpeta. Veremos uno o dos archivos si hemos ido siguiendo las instrucciones de esta serie de entradas: index.html, que es el archivo de inicio de Apache, e info.php, el archivo que podemos haber creado en una entrada anterior para comprobar el buen funcionamiento de PHP. En realidad, no es una idea especialmente buena tener estos archivos porque pueden dar información a posibles atacantes, por lo que podemos querer borrarlos.

Directorio /var/www/html

Ojo con este paso, que la herramienta de borrado es muy potente y si nos equivocamos podemos llegar a borrar todo el disco duro. En la siguiente orden, la parte de ./ indica que solo se tiene en cuenta el directorio en el que estamos:

sudo rm ./index.html

sudo rm ./info.php

Y nos queda un directorio en blanco. Si abrimos ahora la dirección de la Raspberry en un navegador saldrá una página diferente. Bien, pues vamos a llenarla con nuestro Nextcloud.  Para encontrar la última versión  (ahora mismo la 12.0.3), vamos a http://www.nextcloud.com/install, pulsamos el botón azul ‘Download’ y en la siguiente pantalla vamos de nuevo al botón azul pero lo pulsamos con el botón derecho y seleccionamos la opción de copiar el enlace al portapapeles.

La versión ha cambiado, pero el botón es el mismo: ‘Download Nextcloud’

Para descargar Nextcloud, vamos al terminal SSH, e indicamos que vamos a descargar ese archivo. Escribimos la orden wget y pegamos la URL que acabamos de copiar con MAYS + Ins:

sudo wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.zip

(Hace falta sudo porque la carpeta es del administrador) Tras descargarse, tenemos un archivo comprimido en zip. Para descomprimirlo, debemos hacer lo siguiente:

sudo unzip nextcloud-11.0.2.zip

Cambiando el nombre, claro, dependiendo del archivo que nos hayamos descargado Esto nos creará una carpeta llamada ‘nextcloud’ con los archivos necesarios. Pero hay que tener en cuenta una cosa importante sobre los permisos y las cuentas de usuario en Linux.

En Linux los usuarios tienen una importancia mayor que en Windows, donde normalmente utilizamos un solo usuario para todo. Sin embargo, en Linux se usan mucho más. En concreto, el servidor web Apache utiliza un usuario diferente para sus tareas, que se llama, en Raspbian, ‘www-data’. Como hemos usado privilegios de superusuario para descargar y descomprimir Nextcloud, el propietario de los archivos no es www-data sino el superusuario, ‘root’. Debemos cambiar esto para no tener problemas.

Para cambiar los permisos de archivo, usamos la siguiente orden:

sudo chown -R www-data:www-data nextcloud

Es decir, con permisos de superusuario, cambiamos la propiedad [change ownership] de todos los contenidos [-R] al usuario ‘www-data’ que pertenece al grupo ‘www-data’ para la carpeta ‘nube’.

Una vez hecho esto, se me ocurren tres opciones:

  1. SI no vamos a instalar más cosas y servidores, lo mejor es mover los contenidos de ‘nextcloud’ a ‘/var/www/html’, para que al escribir la dirección 192.168.XX.XX salga directamente la nube.
  2. Si queremos instalar más cosas, lo podemos dejar tal cual.
  3. Si queremos instalar más cosas, también tenemos la opción de cambiar el nombre de la carpeta para que sea más fácil de escribir y recordar. Como se podrá ver en mis capturas, es la opción que he llevado a cabo yo, cambiando ‘nextcloud’ por ‘nube’.

Para llevar a cabo estas opciones, estos son los comandos necesarios:

  1. sudo mv nextcloud/*.* ../*.* (mover todos los archivos dentro de ‘nextcloud’ al directorio superior)
  2. No hay que hacer nada, evidentemente.
  3. sudo mv nextcloud nube (mover la carpeta nextcloud’ a la carpeta ‘nube’)

Ahora ya podemos borrar el archivo .zip. Si no lo hacemos, Nextcloud nos dará un mensaje de advertencia que puede ser molesto. Lo hacemos con el comando
sudo rm./nextcloud-12.0.3.zip.

A partir de este paso, ya podemos trabajar en el navegador, entrando en la dirección adecuada. Según la opción que hayamos escogido de las tres, será:

  1. http://192.168.XX.XX
  2. http://192.168.XX.XX/nextcloud
  3. http://192.168.XX.XX/nube

Como mi opción es la 3, he ido a esa dirección y veo esto:nextcloud-mozilla-firefox_051

Este es el momento en que podemos escoger nuestro nombre de usuario y la contraseña que nos dé la gana. Luego podremos crear más cuentas de usuario si queremos. Pero más importante que el usuario y contraseña es la información siguiente.

El segundo recuadro blanco nos pregunta dónde queremos guardar los archivos que subamos a nuestra nube. Es importante cambiar el directorio que aparece por defecto, porque está en la tarjeta SD y, aparte de que lo llenaríamos en seguida, si la tarjeta se estropea perderíamos la información. Para evitar este problema era la cuarta entrada de la serie. Como se puede ver, he señalado la carpeta /media/Vir/nube. Si el disco duro no lo vamos a usar para nada más, no haría falta el último directorio pero al crear esta subcarpeta la raíz del disco duro queda  más ordenada. (por cierto que, si quieres hacer algo así, deberás crear la carpeta con sudo mkdir /media/Vir/nube y darle los permisos al usuario del servidor con sudo chown -R www-data:www-data /media/Vir/nube).

La advertencia que hay en el centro de la página es sobre los tipos de bases de datos. Nos avisa de que solo puede utilizarse una base de datos MySQL o MariaDB. Como esta última es la que hemos instalado y creado, no hay problema, así que en el último recuadro blanco podemos añadir el nombre de la base de datos y del usuario (será el mismo si hemos seguido el tutorial) y la contraseña que creamos en su momento. La última casilla podemos dejarla con ‘localhost’.

Si hemos introducido bien todos los datos, tardará un ratito (está creando los archivos y carpetas necesarios para el nuevo usuario) y nos saldrá una pantalla de bienvenida:

seleccion_054

No la cierres directamente. Tienes ahí enlaces para descargar los clientes de escritorio (el primer botón negro, para Ubuntu el proceso es algo más complicado pero para Windows es muy fácil) y móviles (los otros dos botones, dependiendo de si usas Android o iPhone). Yo el cliente de Android lo he descargado de F-Droid, que es una appstore alternativa que solo ofrece software libre.

Antes, Nextcloud aparecía por defecto en inglés. Ahora no debería ser el caso, pero si te ocurriera, es probable que quieras ponerlo en español. Para ello, pulsamos en nuestro nombre de usuario que aparece arriba a la derecha y seleccionamos ‘Administración’. En la pantalla que aparece, podemos cambiar el idioma como se ve en la siguiente imagen.

También hay enlaces sobre cómo usar nuestra flamante nube para, además de los archivos y documentos que queramos, almacenar nuestro calendario, nuestras tareas, nuestros contactos… Cuando la cerramos, veremos que tenemos algunas carpetas y documentos de ejemplo.

archivos-nextcloud-chromium_053

Y ya podemos decir que tenemos nuestra propia nube. Pero ¿cómo acceder a ella desde fuera de casa? Si lo intentáramos, veríamos que la dirección 192.168… no funciona. Ese será el contenido de la siguiente entrada.

Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (4). Preparando un disco duro externo

Después de las entradas anteriores, ya podríamos instalar Nextcloud en la Raspberry, pero tendríamos un problema. SI un problema tiene la Raspberry es que no tiene disco duro y las tarjetas SD tienen una capacidad bastante limitada, si lo que pretendemos es usar este pequeño ordenador como nube. La solución está en conectar un disco duro y configurarlo para que nos haga el servicio que queremos.

En este caso vamos a seguir las instrucciones de manuti, creador del blog en español de referencia sobre las Raspberry, Raspberry para torpes.

Si todavía  no hemos conectado ningún disco duro a la Rasberry, es el momento de hacerlo, a ser posible con un concentrador que evite problemas de alimentación.

Un posible problema que podemos tener es que desconectemos el disco duro y, al volverlo a conectar, no se reconozca de la misma manera. Si estuviéramos en Windows, cuando insertamos un pincho USB se le da una letra (G;, H; etc.) y si lo sacamos y volvemos a meter cabe la posibilidad de que la letra cambie, y eso puede ser un problema para nuestra nube. Para ello, vamos a asegurarnos de que esto no pasa.

Cuando hemos conectado el disco duro a la Rasbperry, podemos comprobar si se ha reconocido bien, escribiendo ls -laF /dev/disk/by-uuid/

fotos-onedrive7

Reconozco que no sé a qué se refieren exactamente las dos primeras líneas pero, afortunadamente, no hace falta saberlo. Las importantes son el resto. Las que tienen al final la expresión ../../mmcblkXX se refieren a la tarjeta SD, mientras que la otra es la que nos interesa realmente.

En Ubuntu Linux, los discos duros no reciben una letra como en Windows, sino una expresión que tiene tres letras y puede tener un número. En mi caso, el disco duro es sda1. La «s» significa disco duro moderno, los antiguos llevarían una «h»; la «d» es de disco, la letra es algo parecida a la de Windows, pero siempre en minúscula (podría haber sda, sdb, sdc, etc.); y el número se referirá a las particiones que pueda tener el disco duro.

Manuti recomienda formatear el disco duro en formato ext4. Tiene la ventaja de trabajar mejor y más rápido, y el inconveniente de que, si lo hacemos, Windows no reconocerá el disco duro. Puesto que el principal problema de la Raspberry Pi 2 es la velocidad de transferencia de archivos por la red, problema creado porque el diseño que tiene (todas las versiones, de la 1 a la 3 y también la Zero) presenta un cuello de botella, me parece que no es muy necesario hacerlo, sobre todo si no manejamos normalmente Linux. Si estás interesado en hacerlo, puedes seguir las (muy claras) instrucciones de manuti.

También podemos comprobar la presencia del disco duro con la orden sudo blkid, que nos dará un resultado diferente pero con la información que necesitamos.

pipolkillas-pi-_029

Vemos que el UUID del disco duro es el mismo en los dos casos. Bien, pues vamos a crear una carpeta donde «se monte» el disco duro siempre. O sea, vamos a decirle a la Raspberry que siempre le dé el mismo nombre, como si en Windows le diéramos la misma letra siempre. Para ello creamos un directorio. Puede ser el que queramos, pero es recomendable usar /media/lo-que-sea. Además, para evitarnos problemas de permisos y que siempre podamos abrir cualquier archivo del disco duro, lo dejamos libre, sin protección

Por ejemplo, puesto que uso un disco duro prestado de mi novia que está etiquetado como «Vir», hago lo siguiente:

sudo mkdir /media/Vir
sudo chmod 777 /media/Vir

Ahora, el siguiente paso es delicado. Alguna vez me he cargado la Raspberry, dejándola sin posibilidad de arrancar bien. Afortunadamente, manuti no solo nos recomienda hacer una copia de seguridad sino que nos explica cómo hacerla. Hacemos una copia de seguridad del archivo que guarda la configuración de los discos:, que se llama /etc/fstab:

ls /etc (comprobamos que el archivo existe)
sudo cp /etc/fstab /etc/fstab.old (lo copiamos con otro nombre en el mismo sitio)
ls /etc (comprobamos que lo hemos hecho bien)
sudo apt-get install ntfs-3g (instalamos el driver para ntfs)

 

pipolkillas-pi030 pipolkillas-p031

Ahora vamos a editar el archivo «fstab» con un programa llamado «nano»: sudo nano /etc/fstab.

Nano es un editor de textos muy sencillo, es el equivalente al Bloc de notas. Ojo que, aunque tengamos ratón porque estamos accediendo por SSH, hay que tener en cuenta que no podemos manejar nano con el ratón; solo podemos hacerlo con el teclado.

Ahora tenemos dos opciones. La primera es algo más sencilla. En el fichero fstab, debemos añadir una línea como la siguiente

/dev/hdaX /media/Vir ntfs-3g defaults,locale=es_ES.UTF8 0 0

Pero esto tiene un problema: si desconectamos este disco duro y conectamos otro, Rasbpian no tendría forma de saber que es otro diferente. Casi seguro, las carpetas y archivos serían diferentes y esto nos puede dar muchos problemas con Nextcoud. Por eso, es más seguro, como recomienda manuti, identificar el disco duro por su «DNI», el UUID. La línea del archivo fstab sería esta:

UUID=el-largo-código-de-números-y-letras /media/Vir ntfs-3g defaults,locale=es_ES.UTF8 0 0

Y si hemos optado por hacerlo con el formato de Linux, sería esta otra:

UUID=el-largo-código-de-números-y-letras /media/Vir ext4 defaults 0 0

La explicación es esta:

/dev/hdaX (también puede ser /dev/sdaX)

UUID=lo-que-sea

El nombre del disco duro

El disco duro

/media/Vir La carpeta que hemos creado
ntfs-3g El sistema de archivos del disco duro (si pusiéramos solo ntfs, sería de solo escritura y no nos serviría para Nextcloud)
defaults,locale=es_ES.UTF8 la configuración: normal (defaults) y en español de España (es_ES). Esta parte no hace falta en ext4.
0 opción para copias de seguridad que la Raspberry no tiene por defecto, así que lo dejamos en 0
0 opción para que fsck (algo parecido a scandisk pero en Linux) escanee esta unidad. Alargaría mucho el tiempo de arranque, así que le decimos que no con el 0

 

[Solucionado]Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (3). Apache 2, PHP 7 y MariaDB 10

Actualizado el 2/11/17 con la última versión de Raspbian, que ya trae de serie PHP 7, y los repositorios de mati75

Raspbian Stretch es una versión de Debian 9 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). Acaba de salir, así que es una versión bastante moderna, pero hay ciertas partes del servidor que vamos a instalar que están en versiones un poco más antiguas. Aunque eso lo podremos corregir más adelanta.

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.

Instalación de Apache, MariaDB y phpMyAdmin

Este paso me ha dado bastantes dolores de cabeza cada vez hasta que, parece, lo he conseguido resolver en Raspbian 9.

Con la llegada de Rasbpian 9, este paso es mucho más sencillo y se instala directamente PHP 7 y una versión de Apache bastante más moderna, aunque siga sin ser la última.

En un terminal o vía SSH, escribimos el siguiente comando:

sudo apt-get update && sudo apt-get install mariadb-server apache2 phpmyadmin

Con esta orden actualizamos la información de actualización y después  instalamos MariaDB y el servidor Apache 2. Veremos que, además, se instalan un montón de paquetes más, que son necesarios. Cuando hemos terminado, podemos comprobar que ambos servidores se han instalado bien.

Para Apache procedemos así: abrimos un navegador en otro ordenador de nuestra red en casa (por ejemplo, en el que estamos usando SSH) y entramos en la dirección de cuatro números que buscamos en la anterior entrada. Debe aparece la página por defecto de Apache. En mi caso, como se puede ver, la dirección es 192.168.0.26, pero variará:

apache2-debian-default-page-it-works-mozilla-firefox_025

Y para PHP 7, podemos escribir php -version en el terminal y debería aparecer algo como esto:

phpversion

Visto desde Windows con PuTTY. (ver entrada anterior).

Si no nos fiamos y queremos comprobar el estado de PHP en el navegador, podemos crear un archivo de prueba. Pero como vamos a instalar dos elementos que usan PHP (phpMyAdmin y el mismo Nextcloud), no es muy necesario.

Instalación de phpMyAdmin

phpMyAdmin es un sistema de gestión de bases de datos MySQL y MariaDB que tiene la ventaja de ser gráfico, por lo que es bastante más sencillo que el cliente de línea de comandos. No es que sea muy necesario para Nextcloud, pero sí que puede simplificar la tarea de crear la base de datos.

Sin embargo, las últimas versiones se han hecho más seguras a costa de ser menos sencillas de usar, y si se instala a pelo en Raspbian da errores y problemas, y parece que en otros sistemas también. Al final, he seguido buscando cómo arreglarlo por cabezonería, me da que al final habría sido más fácil usar el terminal, pero se me ha convertido en cuestión personal. Y creo que al final he conseguido solucionarlo siguiendo instrucciones de un blog en francés, nada menos, y del anterior enlace. Vamos a editar el servidor de bases desde el terminal.

Escribimos sudo mysql --user=root mysql para entrar en MariaDB  y a continuación mandamos las siguientes órdenes, cambiando las mayúsculas por los datos que se quieran:
create user 'USUARIODEMARIADB'@'localhost' identified by 'CONTRASEÑA';
grant all privileges on *.* to 'USUARIODEMARIADB'@'localhost' with grant option;
flush privileges;
exit

La primera línea crea un usuario y una contraseña de MariaDB, la segunda le da todos los permisos, la tercera reinicia los permisos para que empiecen a funcionar los de este usuario y con la cuarta salimos de MariaDB.

Ahora ya sí podemos instalar phpMyAdmin con sudo apt-get install phpmyadmin y abrirlo en el navegador acudiendo a la dirección http://192.168.XX.XX/phpmyadmin, cambiando las equis por la información que nos suministre el comando ifconfig (ver entrada anterior):

phpmyadmin-mozilla-firefox_037

 

Podemos entrar en phpMyAdmin con el usuario y contraseña que acabamos de crear, y  crear una nueva base de datos en el menú de la izquierda, con la opción ‘Nuevo’, pero hay una forma todavía más sencilla, pues nos permite crear a la vez la base de datos para Nextcloud y el usuario. En la pantalla de inicio buscamos el enlace ‘Agregar usuario’ y lo seguimos.

phpmyadmin-4-2-12deb2deb8u2-mozilla-firefox_043

En la pantalla que aparece podemos crear el usuario que queramos (‘nextcloud’ en el ejemplo, pero se puede poner lo que se prefiera) y es importante marcar la opción ‘Crear base de datos con el mismo nombre y otorgar todos los privilegios’, con lo que creamos a la vez el usuario y la base. Es importante no olvidar la contraseña que hemos puesto, pues nos hará falta cuando instalemos Nextcloud.

Cuando hayamos terminado, bajamos al final de la página y pulsamos en ‘Continuar’.

phpmyadmin-4-2-12deb2deb8u2-mozilla-firefox_042

Instalación de versiones modernas de Apache y PHP  7

Hay un informático polaco, Mateusz Łukasik, que entre otras cosas se dedica a actualizar un repositorio con aplicaciones para Debian —el sistema en que se basa Raspbian, como se puede apreciar por el nombre— y para el mismo Raspbian. Si utilizamos este repositorio podemos tener versiones algo más modernas del servidor web Apache y de PHP, lo cual significa algo más de seguridad y posiblemente algo más de rapidez.

¿Cómo se hace? Es (relativamente) sencillo. Hay que editar la lista de repositorios. Para ello, abrimos un terminal:

sudo nano /etc/apt/sources.list

En este archivo está la lista de repositorios en los que Debian busca la información de actualización. Nos aparecerá esto:

terminal con /etc/apt/sources.list de RaspbianLo que tenemos que hacer es añadir en cualquier línea que queramos el texto deb http://repozytorium.mati75.eu/raspbian stretch main contrib non-free. Por motivos estéticos, yo lo he hecho así:terminal con /etc/apt/sources.list con mati75Si actualizamos ahora nos va a dar un error, tenemos que añadir las claves GPG, unas «firmas» que confirman —valga la redundancia—que las actualizaciones son de fiar. En la instalación por defecto falta un requisito, el paquete dirmngr así que lo instalamos con sudo apt-get install dirmngr.

Una vez se ha instalado, podemos agregar las claves con estos comandos (sacados de aquí):

sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851

sudo su

gpg --armor --export CCD91D6111A06851 | apt-key add -

Ahora sí actualizamos con estas dos órdenes de una vez:

sudo apt-get update && sudo apt-get dist-upgrade

Y ya tenemos versiones más modernas.

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:

mariadb

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.

mariadb2

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 sugiera eliminar una base de datos de prueba, que es innecesaria. Decimos que sí (y) a estas tres preguntas.

mariadb3

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

Otros prerrequisitos de Nextcloud

Para poder ver vistas previas de las imágenes que subamos a nuestra nube, necesitamos instalar un programa como ffmpeg:

sudo apt-get install ffmpeg

Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (2). Configuración de Raspbian. Acceso SSH

Actualizado el 2/11/17

Una vez tenemos Rasbpian funcionando en la Raspberry, el siguiente paso es actualizar el sistema. Los comandos que tenemos que escribir son estos:

sudo apt-get update
Actualiza la información de actualizaciones

sudo apt-get dist-upgrade
Actualiza los paquetes, los programas.

Si tienes problemas para escribir el guion, puedes usar el signo menos del teclado numérico y, si no lo tienes, prueba con el apóstrofe, la tecla que hay a la derecha del 0. El teclado aparece por defecto en inglés, pero a continuación podremos cambiarlo.

Cuando hemos hecho esto, podemos cambiar la configuración de la Raspberry. Enviamos la orden sudo raspi-config y nos aparece este menú.

img_24112016_192644_hdr

Hay varias opciones que nos van a interesar. Vamos con ellas en el orden en que aparecen en el menú, por el que nos movemos con las flechas arriba ya abajo. Para saltar a los botones de Aceptar o Cancelar, usamos el tabulador (la tecla que está a la izquierda de la Q).

pipolkillas-pi-_024

1 Expand Filesystem

No debería hacer falta hacerlo al ser una instalación nueva, pero no pasa nada por hacerlo. Lo seleccionamos y nos avisa de que estará hecho después de reiniciar.

2 Change User Password

Muy importante, por seguridad, cambiar la contraseña por defecto, que es «raspberry». Al seleccionarlo, nos avisa de que nos va a pedir la nueva contraseña y la tenemos que escribir 2 veces, para estar seguros de que la hemos escrito bien.

3 Boot Options

Si hemos instalado Rasbpian Lite, no debería hacer falta cambiar nada, pero está bien comprobar la opción B1 Desktop-CLI y marcar B2 Console autologin, para que no haga falta meter la contraseña al reiniciar.

4 Internationalisation Options

Para poner la Raspberry en español este es el sitio adecuado. Las opciones que debemos seleccionar son estas:

I1 Change Locale

Buscamos la opción es_ES.UTF8 y la seleccionamos. Aceptamos y en la siguiente pantalla, en la que aparecen muchas menos opciones, la volvemos a seleccionar. Esperamos unos segundos a que se generen las locales.

I2 Change Timezone

Para no tener problemas, sobre todo, con el calendario de Nextcloud, tenemos que asegurarnos de que el servidor está en nuestra zona horaria. Escogemos nuestro continente y después la capital del país en el que estemos. En mi caso, Europa y Madrid.

I3 Change Keyboard Layout

El primer paso aquí no tan importante como el segundo. Si no encontramos nuestro modelo exacto de teclado o no lo sabemos, basta con dejar el Generic 105 Intl. Lo importante es lo segundo. Seguramente saldrá una serie de opciones del idioma inglés, así que bajamos a Other y buscamos el idioma español. Una vez lo hemos localizado, las opciones que nos ofrece por defecto son buenas, si no tenemos algún teclado muy raro.

I4 Change Wifi Country

Yo no tuve problemas con la wifi antes de configurar esto, pero no sobra busca ES Spain y seleccionarlo.

7 Advanced Options

De todas las opciones que tenemos aquí, solo comento las que nos pueden ayudar a que vaya mejor. Son estas:

A3 Memory Split

Al no tener un escritorio instalado, la GPU (memoria gráfica) no necesita mucho, podemos reducir la cantidad que aparece a 16, que es el mínimo.

A4 SSH

Importantísimo. Sin más.

Según Wikipedia, SSH es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red.

Es decir, SSH sirve para «entrar» en un ordenador desde otro. Si está activado, podemos tener una línea de comandos en un ordenador diferente y trabajar en la Raspberry. Hasta ahora, SSH venía activado por defecto en Raspbian, pero leí en Raspberry para torpes que van a cambiar esto, al menos en la versión PIXEL, no estaba seguro sobre la Lite que estamos instalando nosotros, pero efectivamente es así, por lo que tendremos que seleccionar esta opción y activarla. Una vez que lo hemos hecho, podemos conectanos a la Raspberry desde otro ordenador.

En Windows se puede usar PuTTY para ello y en Linux no hace falta instalar nada. Veamos:

putty-configuration_018

No hace falta instalar PuTTY, al abrir el archivo descargado se abre directamente esta ventana. En el campo «Host Name (or IP address)» tenemos que escribir lo que aparece en la imagen, cambiando las  XX con unos números que estarán entre 0 y 255. Para saber exactamente qué número poner podríamos ir probando de uno en uno, pero hay una forma mucho más sencilla: cuando  hayamos acabado de configurar la raspberry,,podemos  escribir la orden ifconfig. Sale un montón de información pero lo que tenemos que buscar es la expresion inet address seguida de un número compuesto de cuatro cifras separadas por un punto y que sean las dos primeras esos 192.168. Si estamos conectados al router con un cable, estará en la sección eth0; si estamos usando wifi, estará seguramente en la sección wlan0.

Si lo hemos hecho bien, nos aparecerá una alerta. Es normal, solo nos avisa de que nos estamos conectando a un ordenador nuevo y nunca hemos dicho a PuTTY que se fíe. Pulsar en sí hace que PuTTY, en adelante, confíe en nuestra Raspberry.

putty-security-alert_019

A continuación nos sale una pantalla nueva que nos pedirá el usuario de Rasbpian (pi, si no lo cambiamos) y la contraseña (raspberry por defecto, lo cual tendremos que cambiar en seguida).  Al escribir la contraseña, como suele pasar en Linux, parece que no pasa nada, pero no es preocupante:

pipolkillas-pi-_022

Al pulsar Intro, nos aparece el mismo mensaje que aparece en el monitor de la Raspberry al arrancar, lo que nos confima que esa pantalla «es» la Raspberry.

En Ubuntu y otros Linux, abrimos un terminal (CTRL+ALT+T o abrimos el tablero y escribimos «terminal»). Para usar SSH, la forma es sencilla:

ssh pi@192.168.XX.XX

Igual que en PuTTY, cambiamos los dos últimos números por el resultado de ifconfig:

pipolkillas-pi-_023

¡Voilà! A partir de este momento no nos hace falta tener un monitor conectado a la raspberry mientras haya conexión a internet.

A0 Update

Sirve para actualizar el mismo programa raspi-config. Lo más probable es que no haya actualizaciones.


Con esto tenemos configurada nuestra Raspberry y podemos empezar a instalar los programas que vamos a necesitar para que funcione bien nuestro Nextcloud.

Actualización 25/12: En mi experiencia no me ha pasado porque no he desconectado nunca el cable de red que une la Raspberry con el router. Pero si este fuera el caso y hubiera algún problema con la conexión, podría ser porque se ha asignado una IP diferente a la Raspberry. En este caso, recomiendo acudir a Raspberry para torpes, donde manuti tiene 3 entradas que nos pueden ser útiles:

Por último, una cosa que me parece muy recomendable es cambiar el usuario por defecto, (pi), por otro diferente y la contraseña de root. Esto hace que sea más difícil que un posible atacante pueda entrar en la Raspberry, pues no solo tiene que adivinar la contraseña sino también el usuario. Para ello seguiremos algo de un tutorial de Juan Jose Ramirez Lama en su blog juaramir.com y una página vieja pero aún muy útil, Principiante Linux.

Para cambiar la contraseña del superadministrador, escribimos la siguiente orden:

sudo passwd

Nos pide que escribamos la nueva contraseña y que la repitamos, por si acaso nos hemos equivocado al escribirla. Después iniciamos sesión como administrador con el comando sudo su y metemos la contraseña que acabamos de cambiar.

Para cambiar el usuario «pi» debemos crear un usuario nuevo con la siguiente orden:

sudo  adduser USUARIONUEVO, sustituyendo las mayúsculas por el nombre que queramos darle al usuario.

Nos pide que escribamos dos veces la contraseña del nuevo usuario y nos hace una serie de preguntas que no hace falta responder, podemos pulsar Intro en cada una.

A continuación podemos modificar el usuario para darle derechos de administrador. Con la orden groups pi veremos los grupos a los que pertenece ese usuario, y podemos usar groups USUARIONUEVO para comprobarlo en el nuevo. Para darle permisos, hay que dar la siguiente orden:

sudo usermod -G adm,dialout,cdrom,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio,sudo USUARIONUEVO

De la ristra de palabras entre comas, lo más importante para nuestros objetivos es «sudo». El resto da otros derechos que para otros usos de la Raspberry serán necesarios. Podemos comprobar que lo hemos hecho bien volviendo a ejecutar groups USUARIONUEVO, y veremos que ya tiene los mismos derechos que «pi».

Cerramos la sesión de «pi» y volvemos a entrar, ahora con el nuevo usuario. Ahora ya podemos eliminar el usuario pi con la orden sudo userdel -r pi.

tenemos que salir de la sesión de «pi» y entrar como root. Por SSH no se puede hacer, pues el usuario administrador está capado por motivos de seguridad, así que hay que hacerlo directamente en la Rasbperry. Después de poner la contraseña de root, escribimos usermod -l NOMBRE pi -md /home/NOMBREQUEQUEREMOSPONER. Lógicamente, hay que cambiar las mayúsculas por el nombre de usuario que queramos usar, escribiéndolo con minúsculas. Por ejemplo usermod -l usuarionuevo pi -md /home/usuarionuevo. Con esto ya no existe el usuario «pi», sino solo el que hemos decidido nosotros, con lo que para conectarse por SSH ahora habrá que escribir ssh usuarionuevo@192.168.XX.XX.

Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (1). Pasos previos

Actualizado el 2/11/17 con la última versión de Raspbian

Sigo jugando de vez en cuando con la Raspberry. La estoy usando como servidor web para una nube privada que usamos Virginia y yo con Nextcloud y, a la vez, voy jugando con cosas (coshash). Puesto que no es buena idea, porque alguna de esas cosas puede acabar dando problemas y ahora mismo dependo más de esta nube (calendario, contactos) que de Google, he decidido aprovechar una de las ventajas que tiene la Raspberry: con cambiar la tarjeta SD cambias por completo el sistema. Así que tengo una SD con la nube en producción y estoy creando otra para pruebas. Y aprovechando, como no he encontrado gran cosa sobre estas cosas en español, lo voy a ir narrando.

Cables y conexiones

La Raspberry necesita unas cuantas cosas para poder arrancar:

  • Cable miniUSB de carga de al menos 2V. Ojo, que no todos los cargadores de móviles valen, aunque sean miniUSB, por el voltaje.
  • Cable de red Ethernet o adaptador wifi USB para tener red.

Puesto que vamos a usar la Raspberry como servidor Nextcloud, necesitamos mucho espacio de disco duro. Aunque ya hay tarjetas SD de por lo menos 128 Gb, es preferible tener un disco duro externo y conectarlo. Si tienes un disco externo que no necesite carga, sería ideal, pero como no suele ser el caso también viene bien un concentrador (hub) USB que dé carga y, a ser posible, con USB 3.0 para que vaya más rápido. Yo uso uno de Amazon Basics.

También es recomendable tener un teclado y ratón USB, no valen los antiguos PS2, y un cable HDMI para conectarla a un monitor. Teóricamente, gracias a SSH, estas tres cosas no deberían hacer falta, pero para mí es muy útil, sobre todo al principio.

Preparación de Raspbian

Si queremos empezar desde cero nuestro servidor, la opción más sencilla es descargar el sistema operativo de la web de la fundación Raspberry. Después de haber probado varias opciones, no veo muchas ventajas a NOOBS, que es teóricamente el sistema más sencillo, así que recomiendo instalar Raspbian directamente. Si te asusta que no haya un escritorio, puedes instalar la versión completa pero es preferible la versión lite porque gasta menos memoria, que queda libre para el resto de cosas que queramos instalar: servidor web, base de datos, servidor de búsqueda, reconocimiento óptico de caracteres, etc.

La forma más fácil para descargar cualquiera de las dos versiones es ir a la web que he enlazado antes, seleccionar Raspbian (o ir directamente aquí) y pulsar en «Download ZIP». Puede ser incluso más rápido bajarlo por vía torrent pero para ello necesitamos un cliente como uTorrent en Windows o Transmission en Linux.

Una vez descargado, hay que descomprimir el archivo .zip: hacemos doble clic sobre él y, se abra lo que se abra, buscamos la opción «Descomprimir»; lo más sencillo, en el escritorio.

Una vez tenemos un archivo con extensión .img, hay que grabar esa imagen en una tarjeta SD de, al menos, 4 Gb. Reconozco que esta parte he sido incapaz de llevarla a cabo con Ubuntu. Lo he intentado en la terminal con dd y con Etcher (vía OMG Ubuntu!) pero siempre me ha dado algún error, Etcher se ha actualizado y ahora parece que sí me funciona bien, tanto en Windows como en Ubuntu. Aun así, dejo lo que escribí hace una semana: lo he hecho en Windows, usando SDFormatter para formatear la tarjeta y Win32DiskImager para copiar el archivo .img a la tarjeta.

Es fácil: abrimos SDFormatter, metemos nuestra contraseña si nos lo pide o pulsamos Sí y, en la ventana, seleccionamos «Option». Ahí cambiamos FORMAT SIZE ADJUSTMENT a ON por si acaso la tarjeta tuviera varias particiones. Varias letras (F:, G:), para entendernos. De esta forma las eliminamos y la tarjeta queda como nueva.

sdformatter

La letra (G: en este caso) puede variar

Luego con el Win32DiskImager, algo parecido: metemos nuestra contraseña si nos lo pide o pulsamos Sí y, en la ventana, seleccionamos la tarjeta en la casilla Device (se puede comprobar la letra en el Explorador de Windows si no estamos seguros) y el archivo .img pulsando el icono de la carpeta.

win32

Por cierto, que si no tienes un portátil con adaptador SD, se puede comprar un adaptador USB por menos de un euro en Deal Extreme.

En Etcher, el proceso es todavía más sencillo.  En el primer paso, seleccionamos el archivo que nos hemos descargado y en el segundo probablemente no tengamos que hacer nada si solo tenemos una unidad extraíble insertada. En caso contrario, selecciona la unidad que sea pulsando en «Change». Y pulsamos «Flash». Pedirá confirmación y/o la contraseña de administrador y se pondrá a la tarea.

ventana principal de EtcherUna vez ha concluido con éxito la copia del archivo .img a la tarjeta SD, llega el momento de insertarla en la Raspberry apagada y solo después de asegurarnos de que ha quedado bien insertada la arrancamos enchufando el cargador miniUSB y conectando con un cable HDMI la Raspberry a un monitor.

El sistema ya está instalado y, si hemos optado por la versión Lite, veremos esto.

arranque de Raspbian Lite

Puede asustar o, si tienes una edad, recordarte a los viejos ordenadores Amstrad, Spectrum o Commodore. La ventaja de no tener un escritorio es que se gasta mucha menos memoria. Pero si te decidiste por la versión con escritorio, lo único que tendrás que hacer en posteriores entradas es abrir la aplicación terminal y escribir ahí los comandos.

Una estatua bajo la lluvia

Encontré el otro día por casa un libro de Virginia bastante curioso: The Complete Collection of The Tragedy Series. Es un libro de de humor gráfico; de viñetas, vaya. Y, evidentemente en inglés.

Digamos que no es un libro que yo me habría comprado, es entretenido pero tampoco me parece especialmente divertido. Son varios centenares de viñetas de tragedias ,salpicadas por unos cuantos «alivios». Tiene cosas como estas:

Trágico, sin duda

Trágico, sin duda

No sé si recomendaría comprar el libro, pero hay alguna viñeta realmente curiosa. Y una me ha parecido una greguería perfecta:

La estatua tímida se aguanta las lágrimas hasta que llueve.

Y, no sé, que me ha gustado y quería compartirlo.

Trump

He visto ya bastantes chistes sobre la victoria de Trump en las elecciones estadounidenses. Me preocupa.

Supongo que al final no pasará nada, a las elites no les interesa ahora mismo una guerra porque para EE UU el enemigo real no es Rusia, que no tiene un duro, sino China y no se ve que vayan por ahí los tiros, pero Trump es quien es y representa lo que representa. Es un peligro real, y veo mucha gente pensando que ahora se va a tranquilizar y no va a ser para tanto. Pero lo que ha prometido es racista, xenófobo, machista y violento, en orden aleatorio.

Y me da miedo que dentro de unos años los historiadores se fije en que, durante estos años, la gente hacía chistes en lugar de, primero, tomárselo en serio y, segundo, hacer algo por cambiarlo.

Viaje al Hexágono (3). Rouen y Le Havre

La siguiente fase de nuestro apasionante (para nosotros, no para ti, desocupado lector, me temo) nos llevó a Rouen. A Ruán, en cristiano.

El viaje hasta Ruán aparentaba ser más corto pero, quizás por el cansancio de la migración por España y Francia, fue bastante cansado. Una cosa que me gustó mucho ver es la cantidad de gente que conduce en Francia con bicicletas en el coche. Una cosa que hemos descubierto es que nos encanta la idea de turismo con bicicletas. Evidentemente, para grandes distancias no nos puede servir, pero para movernos en ciudades y quizás para ir a sitios cercanos es una idea buenísima. Además de barato, te sientes bien por las endorfinas. Y las ciudades europeas, en general, carecen de las cuestas que caracterizan a Madrid.

Pero volviendo a lo que decía… Muchos coches en carreteras y autopistas con portabicis. Nos llamó la atención. Y sobre todo, nos llamó la atención la, digamos, originalidad de algunos con las matrículas

No se acaba de apreciar bien porque tenía la cámara del móvil mal configurada y está pixelado, pero la matrícula está escrita a mano. Y no fue el único caso que vimos, pero este nos pilló en una retención y pude inmortalizarlo.

Llegamos a Ruán muy cansados y no hicimos gran cosa, solo dar un paseo por el centro, afortunadamente el hotel, un Ibis, no quedaba lejos de la zona peatonal. Eso sí, estaba en el límite de civilización: a la manzana en la que estaba no se le podía dar vuelta andando porque un lado era una autovía que marcaba el fin del mundo. Sin embargo, al otro lado estaba el Champ de Mars, una explanada chula con césped y una fuente. Sin embargo, la única foto que le saqué fue de de madrugón (estábamos en el filo de los parquímetros y según la manzana donde dejáramos el coche había que pagar o no y la mañana que saqué dicha foto fue porque había que moverlo) y con el madrugón la foto se convirtió en un un primerísimo plano de un dedo mío. Pero a lo que iba: dimos un paseo por el centro y descubrimos que en la catedral se proyectaba un espectáculo audiovisual y, después de cenar en un Quick (cadena de hamburgueserías que, como su nombre no indica, es francesa y, por lo tanto, me apetecía probar), nos fuimos a verlo. Y era precioso.

 

De hecho, había dos espectáculos. El primero, el mejor en nuestra opinión, tenía como tema los vikingos (véanse el barco de la primera foto y la proa de drakkar que aparece en la segunda). El segundo era menos espectacular, solo la última foto pertenece a él.

El siguiente día fue una paliza. Se me fue la mano y quise llegar a visitar demasiadas cosas. Lo hicimos, pero con mucha prisa y sin llegar a disfrutarlo como podríamos. El primer lugar al que fuimos es la ciudad portuaria de Le Havre. Fea. Lo más bonito que vimos entra en la categoría de satánico, sin duda: la iglesia de Saint Joseph. Aunque reconozco que a mí el ambiente del interior sí me gustó, y el hecho de que, como en casi todas las iglesias que visitamos, hubiera carteles informando sobre la historia del edificio.

La torre de la iglesia de Saint Joseph

Sí, se parece a eso que estás pensando: es un gran faro. No, no he confundido la R con la L. Bueno, un poco sí.

Interior de Saint Joseph

El baldaquino de Saint Joseph. ¿Cómo? No, no he puesto la palabra para alardear de cultura

Ah, bueno, tampoco era fea la plaza del ayuntamiento. Bueno, no es que fuera bonita, pero comparada con el resto, sobresalía. Unas esculturas de aves acuáticas muy… originales, se puede decir.

El ayuntamiento también es satánico, qué duda cabe

El ayuntamiento también es satánico, qué duda cabe

Quizás no se aprecia bien en el segundo plano de la última foto, pero esos edificios son, se supone un atractivo turístico, muestra de cierta arquitectura racionalista. Me reservo mi opinión. Bueno, no, que son gabachos: manda bemoles la orquesta que la oficina de turismo tenga que recurrir a este tipo de cosas para sacar «atractivos». Pero ejque si la ciudad es fea, pues es fea.

Y esto es solo un parte de un día. Otro ídem seguimos.

La gracia que no quiso darme el cielo

Releyendo mi entrada sobre nuestra visita relámpago Hendaya, San Juan de Luz y Bayona, me doy cuenta de que no he sabido transmitir lo que pretendía, la sensación que tuvimos en aquellas hermosas localidades.

Esa es la diferencia entre un escritor y alguien como yo. Juntar palabras es fácil, todos podemos hacerlo aunque muchos —como la mayoría de mis alumnos— crean que no son capaces. Pero lo difícil es que las palabras digan e incluso hagan ver. En fin, seguiremos intentándolo con proximas entregas.

Cargar más