Podéis descargarlos en http://cloud.educa.madrid.org/index.php/s/uyVClNsQhGT18W9.
Jun 06 2019
(Sin título)
Mi cabeza, un es cansado.
Mi corazón, un vosotros pleno.
Vuestra sonrisa, vuestros ojos claros
son mi foco en los días largos
de este verano que empezó
sin haber llegado aún.
Busco la combinación feliz
de una palabras que casen
de manera natural y extraña,
que casen para contar qué siento
al ver vuestras risas complementarias.
Gracias por ser, por estar
y por sonreír. Solo vosotras
sois mi vida.
Mar 27 2019
Firefó Cuantun
Me hago mayor y ya no me entero de mis fricadas como antes. Cuando salió la versión Quantum de Firefox (la que llevaba el número 57 si no recuerdo mal) la extensiones pasaron un mal rato porque tuvieron que adaptarse a una arquitectura nueva. Entre ellas, alguna de mis favoritas, como NoScript, aunque finalmente se recuperaron. Y resulta que a estas alturas estoy descubriendo que con Quantum, las extensiones ya no necesitan una versión móvil, sino que se instala la misma que en escritorio. Y soy feliz con mi NoScript y con mis Contraseñas de Nextcloud, en el móvil. Mola.
Mar 25 2019
Nextcloud 15 (10). Búsqueda de texto completo
Esta entrada supera los límites de las entradas anteriores. Hasta ahora, todo lo que hemos hecho en Nextcloud lo hemos podido hacer con nuestra Raspberrry Pi, pero esta característica supera sus capacidades.
La búsqueda de texto completo es una de las cosas más interesantes que puede hacer Nextcloud. Se trata de buscar texto. [Abucheos ante el chiste malo].
A ver, al instalar Nextcloud nos aparece en la barra de arriba una lupa con la que podemos buscar archivos, y en diferentes apps podemos buscar en sus contenidos (marcadores, RSS, etc.). Pero solo podemos buscar en los nombres de los archivos. Y cuando recordamos una frase del archivo pero no su nombre, ¿qué hacemos? Por ejemplo, más de una vez me ha pasado, preparando un examen, querer encontrar aquel examen en el que puse un texto concreto, pero no recuerdo en qué examen fue. Si busco «examen» me van a salir todos los exámenes que he ido preparando a lo largo del tiempo, pero no puedo buscar por las palabras del texto, con lo que me será muy difícil encontrar ese examen en concreto.
Sin embargo, con el ecosistema de apps de Búsqueda de Texto Completo, la lupa sí va a poder buscar en el contenido de los archivos. En el ejemplo, si busco «Ondas do mar de Vigo», no me buscará solo archivos que se llamen así (probablemente ninguno), sino que encontrará todos los archivos que contengan ese texto: una antología de textos de la Edad Media, un powerpoint en el que puse el poema y, por fin, el examen donde puse ese texto.
Lo malo de la búsqueda de texto completo es que es una función que exige mucho al servidor, está basada en Java y en mi instalación, que todavía no he completado, utiliza 1 Gb de memoria RAM. Y eso es más que la memoria disponible en cualquier modelo de Raspberry. Por lo tanto, he tenido que instalarlo en otro ordenador. Para estas pruebas estoy utilizando mi ordenador de sobremesa, aunque mi intención es dedicar mi viejo portátil Acer a esto.
Bueno, al lío. La instalación de la búsqueda de texto completo es la tarea más complicada que he conseguido hasta ahora en Nextcloud. Hace unos años, recién bifurcado Nextcloud de Owncloud, conseguí instalar la versión que había entonces, pero estaba basada en una tecnología diferente (Apache Solr) y cuando cambiaron a la actual (ElasticSearch) me superó la tarea y de vez en cuando he echado un vistazo para intentar encontrar qué hacía mal, pero hasta hoy 20 de marzo, después de haber sido padre, no he conseguido encontrar lo que hacía mal al instalar ElasticSearch.
Los pasos que he dado están sacados de la documentación oficial de ElasticSearch y de un blog que enlazaré después.
Lo primero es instalar un par de paquetes que permiten seguir las instrucciones, entre ellos la versión abierta de Java. Ojo, no en la Raspberry sino en el ordenador más potente en el que vamos a instalar ElasticSearch:
sudo apt-get install apt-transport-https curl net-tools openjdk-8-jre
A continuación añadimos el repositorio a APT:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Descargamos e instalamos la firma GPG para que apt no dé errores:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Actualizamos la información e instalamos ElasticSearch y Kibana. No tengo ni idea de qué es Kibana, esto es software complejo y su estructura me supera, pero parece que es necesdario.
sudo apt-get update && sudo apt-get install elasticsearch kibana
A continuación hay que instalar en ElasticSearch el «ingestment-plugin», que creo haber entendido se encarga de introducir en la base de datos lo que vamos a buscar después. Para ello vamos al directorio:
cd /usr/share/elasticsearch/bin
y ejecutamos esta orden:
sudo ./elasticsearch-plugin install ingest-attachment
Ahora podemos arrancar los servicios de ElasticSearch y Kibana y configurar que se ejecuten siempre al arrancar el ordenador:
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
sudo systemctl start kibana
sudo systemctl enable kibana
ElasticSearch está configurado para instalaciones inmensas distribuidas en varios servidores, de tal forma que cada conjunto es un clúster que se puede distribuir en nodos. Ahora tenemos que configurar nuestra instancia con el nombre del clúster y del nodo que queramos, aunque nuestra instancia sea muy humilde. Editamos el archivo de configuración con
sudo nano /etc/elasticsearch/elasticsearch.yml
y buscamos cluster-name (recuerda que en Nano el atajo de teclado para buscar es CTRL+W) y node-name. Descomentamos estas dos líneas eliminando la almohadilla (#) del principio y ponemos como nombre del clúster y del nodo lo que queramos:
cluster.name: nextcloud
node.name: nodonube
Por ejemplo. Guardamos y salimos, aunque después volveremos a este archivo, porque necesitamos un dato adicional. con el que llegamos ael paso que me faltaba. Por defecto, ElasticSearch está configurado para escuchar solo peticiones del ordenador/servidor en el que esté instalado. Puesto que en nuestro caso las peticiones las va a hacer la Raspberry, tenemos que cambiar esto. Para ello, podemos seguir los siguientes pasos.
En primer lugar, debemos descubrir cuál es la dirección IP del ordenador en el que hemos instalado ElasticSearch. Para ello ejecutamos ifconfig
(que viene del paquete net-tools que hemos instalado al principio).
Dependiendo de si está conectado por wifi o por cable, cambiará. En mi ejemplo, está conectado al router por cable Ethernet y hay que mirar en la sección enp2s0, el apartido inet.
Con esta dirección IP de cuatro cifras, volvemos a editar la configuración de Elasticsearch con sudo nano /etc/elasticsearch/elasticsearch.yml
. Buscamos el apartado network.host
, lo descomentamos borrando la almohadilla y cambiamos la dirección por la que acabamos de encontrar. También añadimos una nueva línea para indicar que Elasticsearch no solo escuche a su propio ordenador sino que acepte peticiones de otros servidores en la red porque, si no, la Raspberry no podrá utilizarlo. Lo hacemos con network.bind_host: 0
. Debe quedar así:
network.host: 192.168.0.XXX
network.bind_host: 0
Guardamos y salimos. Con esto ya tenemos configurado Elasticsearch. Ahora tenemos que ir a Nextcloud para configurar las apps de búsqueda.
Lo primero es instalarlas. Las que son obligatorias son tres: «Full text search», «Full text search – Elasticsearch Platform» y «Full text search – Files». Como en alguna ocasión anterior, cuando llegue la siguiente versión de Nextcloud, estos nombres deberían estar ya traducidos al español, gracias a un servidor. También podemos instalar el resto, para buscar en los marcadores (Bookmarks) y algo más complejo: extraer las palabras de los archivos en los que hay texto guardado como imagen (muchos pdf, por ejemplo, con «OCR».
Pulsamos «Descargar y activar» para cada app que queramos instalar. Como se puede ver, yo me he instalado todas, para probarlas.
Una vez instalados, debemos configurarlas. En el menú de configuración vamos al apartado de Administración y seleccionamos «Búsqueda de texto completo».
En «General», indicamos como plataforma Elasticsearch. Se supone que en un futuro habrá otras plataformas, incluyendo la que se usaba en versiones anteriores de Nextcloud (Solr) pero por ahora solo hay una. También marcamos la casilla.
En Elastic Search señalamos la dirección del servidor donde está instalado y añadimos el puerto (el estándar, como se ve, es el 9200, aunque se puede cambiar en la configuración de Elasticsearch). Le damos un nombre al índice y dejamos el tokenizador estándar, habría que cambiarlo para idiomas que sean más complejos.
En el resto de opciones dejo lo que he puesto yo, pero dependerá de lo que cada uno quiera conseguir con la búsqueda.
Me queda pendiente probar el OCR, pero por ahora estoy satisfecho con haber sido capaz de instalar y configurar esto. Seguiremos probando cosillas de Nextcloud cuando salga la inminente versión 16.
Dic 02 2018
Nextcloud 14 en la Raspberry Pi con PHP 7.2 (9). Afinando Nextcloud
Si hemos seguido hasta ahora las instrucciones de este tutorial, ya tenemos una nube privada funcionando. Sin embargo, hay ciertas configuraciones por defecto que podemos retocar para que sea más fácil, más segura, más elegante o más útil. Vamos a ver cómo podemos tunear nuestra instalación de Nextcloud.
Tamaño máximo de archivos
Debido a las configuraciones por defecto de PHP, mediante la interfaz web no se pueden subir archivos de más de 2 Mb, lo cual es muy pero que muy poco. Para subir este límite, debemos editar algunas cosas. El límite máximo que podremos poner son 2 Gb, que está mucho mejor aunque deja fuera ciertos archivos de vídeo, pero este límite ya es cosa de la Raspberry, y su arquitectura, de 32 bits, no de Nextcloud.
Siguiendo las instrucciones del manual de Nextcloud, para aumentar este límite, debemos editar el archivo de configuración de PHP 7.0. Lo hacemos escribiendo en el terminal:
sudo nano /etc/php/7.2/apache2/php.ini
Aparece el editor de texto y buscamos (con las teclas CTRL+W) las líneas en que aparecen las expresiones upload_max_filesize
y post_max_size
. Cambiamos las cifras para que de 2M y 8M pasen a ser 2G. Deben quedar así:
upload_max_filesize = 2G
(...)
post_max_size = 2G
También podemos aprovechar para configurar la carpeta temporal. Si subimos archivos grandes, podemos llenar la tarjeta SD y esto nunca es bueno, así que es mejor usar una carpeta del disco duro externo. Buscamos (CTRL+W otra vez) la línea ;upload_tmp_dir =
y hacemos dos cosas: borramos el punto y coma del inicio (si no lo hacemos, los cambios que hagamos en esta línea no tendrán efecto ) y añadimos al final la carpeta que queramos del disco duro. No es recomendable usar una subcarpeta del directorio de la nube, eso sí, porque si se creara un usuario con el mismo nombre que esta carpeta, usaría la carpeta temporal como sus propios archivos.
Guardamos el archivo (CTRL+X, “s” para decir que sí queremos guardar) pero no reiniciamos todavía el servidor web porque tenemos que ocuparnos de la carpeta temporal. La creamos con
sudo mkdir /media/Vir/nubetmp
(cambiando la carpeta Vir a la que hayamos creado para nuestro disco duro, y nubetmp a lo que nos dé la gana)
Cambiamos los permisos de la carpeta
sudo chown -R www-data:www-data /media/Vir/nubetmp
Y, ahora sí, reiniciamos el servidor Apache con
sudo service apache2 restart
Podemos comprobar que lo hemos hecho bien en Nextcloud. Pulsamos en nuestro usuario arriba a la derecha para mostrar el menú, seleccionamos Administración y miramos en los apartados “Monitorizando” (información del servidor) y “Configuración adicional”:
El ratón nos muestra que, efectivamente, ya está configurado para aceptar archivos de 2 Gb.
Eliminar “index.php” de las URLs de Nextcloud
Nextcloud, como su predecesor Owncloud, crea unas direcciones (URLs) bastante largas porque incluye por defecto el fragmento “index.php”. Lukas Reschke (su avatar siempre me recuerda al niño del vídeo viral de Star Wars) lo explica en la ayuda de Nextcloud. Se puede eliminar, para pasar de algo como
https://polkas.ddns.net/nube/index.php/apps/files/
a esto otro: https://polkas.ddns.net/nube/apps/files/,
que queda más claro y sencillo.
Para ello, editamos el archivo config.php: sudo nano /var/www/html/config/config.php
y añadimos al final la siguiente línea:
'htaccess.RewriteBase' => '/',
Debemos cambiar el final si no tenemos instalado Nextcloud en la carpeta raíz del servidor sino en una subcarpeta. Es decir, si los archivos de Nextcloud están en /var/www/html/nextcloud, la línea anterior debe quedar así:
'htaccess.RewriteBase' => '/nextcloud',
No estoy seguro de que el siguiente paso sea necesario, pero no hace daño hacerlo. Tenemos que activar unos cuantos módulos de Apache, concretamente rewrite, headers, env, dir y mime. Esto se hace con las siguientes instrucciones:
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
Todos menos headers deberían estar activos, pero no pasa nada por asegurarse. Una vez los hemos activado todos, debemos crear un sitio nuevo en la configuración de Apache:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Aparece el editor nano, que ya seguro conocéis, con un archivo vacío. Tenemos que copiar (con la combinación de teclas MAYS+Ins) el siguiente código (extraído, de nuevo, del manual):
Alias / "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory>
Y hay que cambiar el directorio todas las veces que aparece, en lugar de /var/www/nextcloud/, debemos poner la carpeta que hayamos usado. Si hemos instalado Nextcloud en la raíz del servidor, debería ser /var/www/html/ y, si lo hemos hecho en una carpeta, deberá ser /var/www/html/nextcloud, dependiendo de lo que hayamos usado en la quinta entrada de la serie. Debemos cambiarlo las 4 veces que aparece. También, igual que antes, debemos cambiar la barra de la primera línea si tenemos Nextcloud en una subcarpeta.
Por último, creamos un enlace simbólico a la carpeta de sitios activos:
sudo ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
El útlimo paso es ejecutar una actualización de mantenimiento con el comando
sudo -u www-data php /var/www/html/occ
maintenance:update:htaccess
Reiniciamos el servidor con
sudo service apache2 restart
Y podemos comprobar, encima del cursor, que ha desaparecido el “index.php” de la URL:
Cron
Es muy habitual que Nextcloud necesite que ciertas acciones tengan lugar cada cierto tiempo. La forma de asegurarse es el cron, cuya misma forma nos dice que tiene que ver con el tiempo (cronos en griego). Por defecto, el cron de Nextcloud se ejecuta cada vez que se carga una página. Es lo más sencillo pero normalmente no vamos a usar la interfaz web sino los clientes de escritorio y móvil, así que puede pasar demasiado tiempo sin que se ejecute el cron. Por ello, es muy recomendable hacerlo de otra manera. ¿Cómo? Encargándoselo al sistema operativo. Raspbian, como todos los sistemas Linux, tiene una opción para esto.
Para sacar ventaja de esto, debemos definir un cronjob. Es así:
sudo crontab -u www-data -e
Aparece un archivo bastante largo, con un montón de explicaciones (todas las líneas que empiezan por una almohadilla [ #] o un punto y coma [;] son comentarios). La orden significa “editar el crontab (lista de tareas que se ejecutan periódicamente) del usuario www-data (el de Apache)”.
Podemos irnos al final del archivo y copiar la siguiente orden:
*/15 * * * * php -f /var/www/html/nextcloud/cron.php
Que significa que cada 15 minutos se va a ejecutar el cron. Como siempre, debemos cambiar la carpeta si fuera preciso. Guardamos como siempre con CTRL+X, “s” y podemos comprobar que se ha guardado con
sudo crontab -u www-data -l
que nos muestra el contenido del crontab.
Una vez lo hemos comprobado, podemos ir a la configuración de Nextcloud y cambiar este estado, si no se ha cambiado automáticamente:
Dic 01 2018
Nextcloud 14 en la Raspberry Pi con PHP 7.2 (8). Usando emojis en Nextcloud
Traduzco la documentación oficial de Nextcloud para este punto.
Para usar emojis (iconitos basados en texto) en tu servidor Nextcloud con una base de datos MySQL, hay que realizar unos retoques en la instalación.
En MySQL
(No hagas esto directamente si estás siguiendo mi tutorial)
-
Actualiza tu servidor Nextcloud a la versión 11 o posterior. Con el tutorial, deberíamos estar en la versión 14.x.
-
Asegúrate de que las siguientes configuraciones de InnoDB están así configuradas en el servidor MySQL. En Raspbian, editamos el archivo de configuración con
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. (Es recomendable hacer una copia de seguridad, por si acaso). Si no están, copiamos en el archivo estas tres líneas debajo de [mysqld]. El lugar exacto da igual, pero por mantener el orden, se puede buscar la sección de InnoDB.-
MySQL 8.0 o posterior:
-
[mysqld]
innodb_file_per_table=1
-
-
MySQL anterior a 8.0.
[mysqld] innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=1
-
-
Si has tenido que cambiar la configuración en el punto 1, reinicia tu servidor con sudo
service mysql restart
. -
Cambia el juego de caracteres y al colación de la base de datos, cambiando nextcloud por el nombre que hayas puesto a la base de datos.
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-
Marca la configuración
mysql.utf8mb4
en tu config.php:sudo -u www-data php /var/www/html/occ config:system:set mysql.utf8mb4 --type boolean --value="true"
-
Convierte todas las tablas existentes a la nueva colación ejecutando el paso de reparación:
sudo -u www-data php /var/www/html/occ maintenance:repair
Now you should be able to use Emojis in your file names, calendar events, comments and many more.
Soporte de MariaDB
(Haz esto si has seguido mi tutorial)
MariaDB 10.3 o posterior
-
Asegúrate de que está presente la siguiente configuración en tu servidor MariaDB. En Raspbian, editamos el archivo de configuración con
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. (Es recomendable hacer una copia de seguridad, por si acaso).[mysqld] innodb_file_per_table=1
-
Continúa con el paso 2 del tutorial de MySQL.
MariaDB 10.2 o anterior
-
Asegúrate de que está presente la siguiente configuración en tu servidor MariaDB. En Raspbian, editamos el archivo de configuración con
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. (Es recomendable hacer una copia de seguridad, por si acaso).[mysqld] innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=1
- Si has tenido que cambiar la configuración en el punto 1, reinicia tu servidor con sudo
service mysql restart
.
- Si has tenido que cambiar la configuración en el punto 1, reinicia tu servidor con sudo
-
Comproueba si el formato de archivo ha cambiado a Barracuda (cambia nube% por nombredelabasededatos% si es necesario):
MariaDB> SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nube%";
Si el formato de archivo es Barracuda para cada tabla, no queda nada por hacer. Continúa con las instrucciones para MySQL en el paso 3. Este ha sido mi caso, pero la documentación añade que en sus pruebas, el formato de todas las tablas era todavía «Antelope» y entonces se debe seguir con el paso 4 a continuación.
- Se necesita migrar manualmente las tablas a «Barracuda», una por una. Se pueden crear los comando SQL fácilmente, sin embargo (cambiando, otra vez, «nextcloud» por el nombre de la base de datos):
-
MariaDB> USE INFORMATION_SCHEMA; MariaDB> SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "nextcloud";
Esta orden devolverá un comando SQL para cada tabla en la base de datos de Nextcloud. Cada fila puede copiarse rápidamente en un editor de texto reemplazando los «|» y después se puede copiar de nuevo cada renglón en la línea de comandos de MariaDB. Si no aparece ningún error (si no estás seguro, comprueba el paso 2), hemos terminado y no hay que hacer nada más. Se puede continuar con los pasos de MySQL.
-
Es posible, sin embargo, que no se pueda cambiar alguna de las tablas y la operación falle con “ERROR 1478 (HY000): Table storage engine ‘InnoDB’ does not support the create option ‘ROW_FORMAT’”. En este caso, estas tablas tienen un valor de SPACE de 0 en el paso 2. Básicamente, significa que la table no tiene un archivo de índice propio, que es un requisito del formato Barracuda. Se puede solucionar ocn un comando SQL ligeramente diferente:
MariaDB> ALTER TABLE `nextcloud`.`oc_tablename` ROW_FORMAT=DYNAMIC, ALGORITHM=COPY;
Reemplaa oc_tablename con la tabla que aflle. Si hay demasiads (lo que no pasó a los ingenieros de Nextcloud), se pueden generar comandos SQL para hacerlo en lote, pero lo dejan como tarea para el lector y a mí me supera.
- Ahora todo debería estar bien y se pueden seguir las instrucciones para MySQL a partir del paso 3.
Nov 12 2018
Nextcloud 14 en la Raspberry Pi con PHP 7.2 (7). Tu propio dominio seguro (y 2). Let’s Encrypt
Las imágenes corresponden a una versión anterior de Certbot, pero el proceso sigue siendo prácticamente igual)
En la entrada anterior veíamos que Nextcloud nos advertía de que no estábamos usando una conexión segura para verlo. Hasta hace bien poco, la única opción que podría haber funcionado era comprar un certificado de servidor, pero si la idea es ahorrar lo más posible, salía más caro el certificado que la propia Raspberry.
Sin embargo, no hace demasiado ha aparecido el proyect Let’s Encrypt, que pretende facilitar y abaratar (¡es gratis!) el acceso a conexiones seguras. Está apoyado por jugadores tan importantes dentro del campo del software libre y de la libertad en internet como la EFF o la Fundación Mozilla. Con Let’s Encrypt (“Vamos a cifrar”) es mucho más fácil crear conexiones seguras. Y esto es importante por detalles como que yo guardo en mi nube el cuaderno de clase con datos personales de mis alumnos, y usar una conexión no fiable es peligroso e, incluso. podría ir en contra de la LOPD. Este, por cierto, es un problema de Dropbox.
Técnicamente estoy convencido de que es muy difícil de entender, pero por suerte no hace falta saber mucho, es muy fácil de llevar a cabo.
Los pasos son estos:
- Instalamos el paquete python-certbot-apache, que instala todo lo necesario:
sudo apt-get install python-certbot-apache
- Ejecutamos
sudo certbot --authenticator webroot --installer apache
.
Nos preguntará en primer lugar sobre el dominio. Respondemos el ddns.net que hayamos escogido. Después nos pide una dirección de correo y nos pide que aceptemos los términos y condiciones, lo que hacemos escribiendo ‘a’. A continuación nos pregunta por la raíz web, y deberemos responder que/var/www/html
. Por último nos pregunta si queremos el método fácil o el seguro. A gusto del consumidor pero, evidentemente, es más seguro el Seguro. Lo escogemos pulsando ‘2’.
Una vez hemos terminado, podemos probar nuestro dominio de ddns en el navegador… y nos dará un error:
Para seguir las instrucciones, debemos editar el archivo /var/www/html/config/config.php
(acuérdate de añadir la carpeta si Nextcloud no está instalado en la raíz). Buscamos el apartado
'trusted_domains' =>
array (
0 => '192.168.xx.xx',
y añadimos en la línea siguiente la línea 1 => 'LOQUESEA.ddns.net'
, en la línea antes de ),
.
Guardamos con CTRL-X, s y vamos en el navegador a la dirección https://LOQUESEA.ddns.net
o https://LOQUESEA.ddns.net/nextcloud
, según donde lo hayamos instalado, y comprobaremos que el navegador ya está contento.
Puede ser que no nos fiemos demasiado porque, al fin y al cabo, antes los certificados eran cosas caras y raras y a nosotros nos ha salido gratis. Bien, pues es fácil comprobar la seguridad de nuestro servidor. Vamos a https://www.ssllabs.com/ssltest e introducimos nuestra dirección de No IP. Tarda un buen rato, pero al final nos debe dar este resultado, que está muy bien.
Y ya está. Sencillo, ¿verdad? En próximas entradas veremos cómo mejorar y ajustar nuestra nube, ya con un servidor más seguro.
Nov 11 2018
Nextcloud 14 en la Raspberry Pi con PHP 7.2 (6). Tu propio dominio seguro (1). NoIP
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.
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.
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:
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.
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.
Nov 11 2018
Nextcloud 14 en la Raspberry PI con PHP 7.2 (5). Instalación de Nextcloud
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’ o el que hayamos creado en el tutorial 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.
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 14.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.
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-14.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-14.0.3.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:
- 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.
- Si queremos instalar más cosas, lo podemos dejar tal cual.
- 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:
sudo mv nextcloud/*.* ../*.*
(mover todos los archivos dentro de ‘nextcloud’ al directorio superior)- No hay que hacer nada, evidentemente.
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á:
- http://192.168.XX.XX
- http://192.168.XX.XX/nextcloud
- http://192.168.XX.XX/nube
Como mi opción es la 3, he ido a esa dirección y veo esto:
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 (la imagen es de la versión anterior, en la actual hay varias pantallas que van pasando):
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.
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.
Comentarios recientes