Motas en el cielo

Satélites de Starlink antes de su despliegueLos nativos de Diqiú habían sido muy astutos. Era el tercer planeta de aquella estrella enana amarilla, y, a diferencia de los otros plantas sólidos del sistema solar, los análisis espectrales mostraban no solo agua sino grandes cantidades de oxígeno libre y otros elementos muy raros en su atmósfera. Y además, al menos aparentemente, en un ecosistema estable, si bien los registros previos detectaban una elevación bastante pronunciada de la temperatura media, que había sido el primer indicio que había una raza inteligente en el planeta. Y en cuanto a los elementos sólidos, había cantidades nada despreciables de muchos de ellos, incluidos varios elementos radiactivos. Era una presa muy golosa, y Tàikōng se alegraba de que lo hubiera descubierto su raza antes que cualquier otra.

Pero los datos de las sondas espías que se habían enviado habían demostrado otras dos cosas: por un lado, los nativos, aunque su tecnología estaba muy retrasada, no eran animales irracionales; y por otro, el planeta se encontraba absolutamente rodeado de basura espacial, una densa malla de microsatélites de composición principalmente metálica.

Tàikōng había especulado con la posibilidad de que se tratase de un sistema solar joven y aquellos microsatélites estuviesen iniciando el proceso de formación de un anillo. Aunque era esto que un planeta de ese tamaño tuviese anillos, tampoco era inusitado. Pero cuando empezaron a regresar a la nave las sondas espía, Tàikōng no tardío en comprobar que solo estaba regresando una de cada veinte. Y los datos de las sondas que sí regresaban eran concluyentes: los microsatélites eran de origen artificial. Los Rénlèi (así se llamaban a sí mismos en el idioma predominante los aborígenes) habían sembrado su firmamento de lo que solo se podía llamar basura espacial.

Diqiú era una presa muy apetecible para cualquier raza que estuviera iniciando su expansión por la galaxia, pero aquellos satélites, que eran poco más que motas en las imágenes de las sondas, impedían de forma muy efectiva que ninguna nave de desembarco lograra no duquesa acercarse a la atmósfera del planeta. Tàikōng, que había estudiado historia militar y, a diferencia de muchos de sus compañeros lo había disfrutado y recordaba casi todo, supo encontrar la analogía: aquellos satélites eran el equivalente espacial a campos de minas.

Cuando Tàikōng dispuso de todos los datos de las pocas sondas que habían conseguido volver, comprobó que la física, la lingüística y las matemáticas de los Rénlèi estaban bastante avanzadas, pero su tecnología especial y militar estaba lastimosamente atrasada. Y, sin embargo, esas motas en el firmamento convertían el planeta en el lugar más difícil de invadir de la galaxia. Evidentemente, unas cuantas bombas de neutrones debatirán el planeta yermo y desierto, pero el interés de la raza de Tàikōng no estaba en destruir el planeta sino en controlar sus recursos. Y, por desgracia, no iban a poder haberlo. No, al menos, mientras no encontraran algún punto donde el campo de minas dejar al descubierto el planeta. Pero ninguna de las sondas trajo buenas noticias, y cuando Tàikōng volvió a enviarlas en misión de reconocimiento, el porcentaje que volvió fue todavía más pequeño. Antes de allegarse sin ninguna, Tàikōng decidió realizar un informe completo y anexar todos los datos en bruto de las sondas. No era lo habitual, pero la recomendación que iba a hacer tampoco era habitual.
«… Por tanto, me sorprende tener que emitir la siguiente recomendación: Diqiú es inexpugnable, por lo que la flota no debe gastar recursos en este planeta. Si bien se podría instalar una base permanente en el satélite principal, parece claro que, puesto que la ciencia astronómica de los Rénlèi está en un estadio más que inicial, el riesgo de ser localizados sería demasiado grande. Así pues, mi recomendación a la Flota es: abandonar Diqiú». Tàikōng acabó el informe y se levantó de su puesto de trabajo. Intentó relajar los seudópodos pero sabía que tardaría mucho tiempo en perder aquella sensación que había empezó a sentir cuando las primeras sondas no regresaron. La sensación del fracaso.

Es verdad, reflexionó, que la basura espacial también les impedía lanzar naves y colonizar su propio sistema solar, pero a Tàikōng le parecía una consecuencia muy asumible. Sobre todo sabiendo que los
Rénlèi se iban a encontrar con una Flota mucho más avanzada de lo que aquellos pobres aborígenes pudieran construir. Pero habían sido astutos, y su plan defensivo era brillante. El explorador no era tonto, y sabía que tarde o temprano se encontraría la forma de penetrar las motas, pero no le correspondería a él hacerlo. Por ahora, y creía con buenos motivos que por mucho tiempo, Diqiú era un bastión inexpugnable.

Introdujo las coordenadas del siguiente sistema solar que le correspondía explorar, y se concedió el pequeño lujo de trazar un rumbo que pasase cerca del seco planeta y sus espectaculares anillos. Se merecía un poco de belleza para compensar su fracaso.

John Kamakahi, del Maui College de la Universidad de Hawaii, echó la silla para atrás y emitió un sonoro juramento que retumbó en la sala, vacía por la hora tan tardía que era. No por primera vez, las constelaciones de Starlink —sus restos, en realidad— le habían estropeado toda la observación de la noche. Y, tampoco por primera vez, se cagó en el puto Elon Musk, cuyo megalómano plan no solo había impedido que los humanos pudiesen continuar con la exploración del sistema solar, sino que, además, había prácticamente acabado con la astronomía como campo de trabajo.

«No hiciste nada bien en la vida, pedazo de capullo integral. Tanto decir que querías salvar a la humanidad y, al final, ¿qué conseguiste? ¿Eh, Elon Musk? Ahí te pudras en la tumba.», pensó antes de apagar el ordenador.


Una explicación quizás innecesaria: Uno de los proyectos «utópicos» de Elon Musk es Starlink, una inmensa cantidad de microsatélites que pretenden llevar internet a todos los rincones del mundo. A diferencia de otros proyectos, como cada vez menos boyante Tesla o el sonrojante fracaso del Hyperloop, Starlink se está desarrollando con éxito, y los astrónomos se quejan, con razón, de que tal cantidad de satélites para algo que seguramente acabe no siendo tan necesario puede conllevar la ruina de la astronomía terrestre. Y viendo cómo funcionan los proyectos apadrinados por Musk, intuyo que es posible que acabe fracasando.

Y se me ocurrió llevar la idea al extremo: ¿qué pasaría si con todos los satélites desplegados empezaran a perder el rumbo y chocaran unos contra otros? La basura espacial sería tremenda. Y me parecía gracioso que al final Musk fuera el héroe, pero por motivos totalmente contrarios a los que él pensaba y sin que jamás lo supiera

Cuestiones de secretaría

ACOGIDA DE PROFESORES NUEVOS

  • FICHA EN SECRETARÍA
    Mª José se encarga de darle la ficha para que la rellene. Se les pide también una foto en papel y otra en formato digital (para el carné de ClickControl).
  • MATERIALES
    • En el armario gris más cercano a la puerta del despacho hay carpetas de plástico preparadas con algunos documentos:
      • Documento de bienvenida a profesores nuevos
      • Calendario escolar
      • Documento sobre contraseñas para aulas IIT y educamadrid
    • También se les entrega un cuaderno del profesor. Están encargados los de Additio, deberían llegar en breve.
  • ALTA EN LISTA DEL CORREO INSTITUCIONAL
    https://correoweb.educa.madrid.org

    • En el correo seleccionamos “Contactos” a la izquierda y luego “Crear” arriba.
    • Rellenamos el nombre y apellidos, podemos añadir el campo “Departamento” si queremos, ponemos el correo y guardamos.
    • Para incluirlo en la lista, si no aparece directamente el contacto, lo buscamos en la columna central y bajo la silueta de persona pulsamos la pestaña “Grupos”, y activamos “Claustro 2020-21” y “Profesores nuevos”. Si es tutor, también el grupo correspondiente.
  • ALTA EN PDOC
    http://intranet.madrid.org/pdoc_app
    Usuario y contraseña (login, no Educamadrid)

    • Plantilla GPER en menú izquierdo
    • Buscar al profesor por nombre o apellidos
    • Imprimir credencial con el botón de la impresora (último de la derecha)
    • Dar de alta pulsando en el tic amarillo y poniendo la fecha real de alta. Al aceptar, el tic debe ponerse verde
  • USUARIO DE IESPRINCIPEFELIPE.ORG
    https://admin.google.com/

    • Carmen y Almudena pueden hacerlo, tienen permiso de superadministradoras
    • Seleccionamos Usuarios
    • Añadir usuario nuevo en el menú horizontal de letras azules
    • Poner nombre y apellidos y el correo que se quiera (normalmente nombre.apellido). Se cambia la unidad organizativa a “Profesor”
    • Se pone una contraseña provisional y se activa el interruptor de “Solicitar un cambio de contraseña la próxima vez que se inicie sesión” para que el profesor ponga la que quiera.

      Una vez creado el usuario, hay que añadirlo a grupos. Hay que meterlo en el grupo “Classroom Teachers” y en su departamento.
  • RECARGAS DE CLICKCONTROL
    https://auth.orbys.eu/

    • Usuario y contraseña de Clickcontrol
    • Con la ayuda del buscado de arriba seleccionamos el profesor al que queremos recargar y aparecen al lado del buscador unos botones. Pulsamos en “€”.
    • Ponemos la cantidad que queramos (normalmente 100 €) y aceptamos
  • CREAR USUARIO Y CARNÉ DE CLICKCONTROL
    https://auth.orbys.eu/

    • Usuario y contraseña de ClickControl
    • Vamos a Usuarios > Docentes en el menú de la izquierda
    • Botón “Crea un nuevo docente” arriba a la derecha (persona con signo + encima)
    • Metemos apellidos y nombre, cambiamos grupo al departamento o familia correspondiente y ponemos el DNI en el campo “Documento de identidad”
    • Pulsamos el botón amarillo “Crear” arriba a la derecha
    • El usuario que crea no es igual que el de Raíces. Si queremos que siga la norma de los anteriores y usar el de Raíces, hay que cambiarlo buscando en la lista. Al seleccionar el profesor, aparece un menú de tres elementos arriba la derecha: “€” para recargas, “candado” para cambiar la contraseña y “tres puntos”. Al pulsar este último aparecen varias opciones y ahí podemos cambiar el usuario (cambiar login) y asignar un carné provisional (estos carnés están en el armario blindado de en medio, su llave es una dcon plástico negro). Sale la lista de carnés disponibles y seleccionamos uno.
    • Para encargar un carné definitivo, el profesor tiene que enviar una foto. Se incluye en el sistema editando el profesor con el lápiz de la derecha. En la pantalla que aparece se pulsa en la silueta de la cara, se sube la foto que haya enviado el profesor y se acepta con el botón azul.

 

 

Programar reuniones en Teams para invitados

Este año la Comunidad de Madrid nos ha ofrecido de nuevo a los centros la posibilidad de disponer de una cuenta de office 365, que incluye además Teams como herramienta de comunicación. En nuestro centro no estamos usándolo, ya tenemos organizadas las clases semipresenciales con otras herramientas, pero una cosa que hemos encontrado que es muy útil es que tanto con Jitsi como con Meet no se pueden organizar reuniones para más de 100 participantes, y en nuestro caso, con cerca de 200 alumnos por nivel, nos es necesario para cosas como reuniones informativas con padres o incluso para las reuniones de la junta de delegados, porque al tener 60 grupos, los delegados y subdelegados superan esa cifra de 100. Y mientras tanto, Teams funciona bien con reuniones de más de 150 personas.

La forma que utilizo yo para programar estas reuniones virtuales con Teams, que no tiene por qué ser la más rápida ni la más sencilla es esta:

  1. Es muy recomendable que quien vaya a participar en la reunión  se descargue la aplicación de Teams, tanto para ordenador como para móvil. Sin embargo, no es necesaria para crear la reunión.
    En el caso de los invitados a la reunion, la app no es necesaria, pero solo se puede usar Google Chrome (y solo Google Chrome, no valen otros navegadores basados en Chromium) para unirse a la reunión. Por cierto, si no queremos instalar la app en el móvil, además de usar Chrome habrá que pedir el sitio de escritorio para que funcione directamente en el navegador.
  2. Para organizar la reunión, vamos a la web de Teams.  Tenemos que iniciar sesión poniendo primero el correo de Educamadrid y después la contraseña de Teams, que no es la de Educamadrid. También nos preguntará si queremos dejar la sesión abierta: sí, si es un ordenador privado, no si es un ordenador compartido.
  3. En el apartado de “Calendario” creamos una reunión con las horas aproximadas de inicio y fin.  La reunión se puede iniciar antes de la hora fijada y se puede alargar más allá de la hora de fin, pero está bien ponerlo a modo informativo.
  4. También tenemos que añadir asistentes opcionales, para que pueda asistir quien no tenga cuenta de Teams. Yo pongo una cuenta mía de correo, por ejemplo, aunque no es necesario, se puede usar cualquier cuenta.
    Una vez lo hemos hecho, Guardamos.
  5. Por último, pinchamos en Opciones de reunión  para que nos salga el siguiente menú.

    Aquí hay que cambiar lo siguiente:

    1. ¿Quién puede omitir la sala de espera? –> Todos (porque si no, en una reunión tan grande es un horror para el organizador estar dando paso a cada persona)
    2. ¿Quién puede presentar? –> Lo ideal es “Solo yo” o, como mucho, “Personas de mi organización”, por ejemplo para reuniones donde dirección, jefatura u orientación quieren presentar cosas. Guardamos con el botón morado.
  6. Por último, en la vista de detalle de la reunión, pulsamos con el botón derecho del ratón y seleccionamos “Copiar la ruta del enlace”, para poder copiarlo en el correo que enviemos a los participantes a través de Roble o en la página web. Este es el enlace que los participantes deberán abrir en la app de Teams o en Chrome.

16 de diciembre

Hoy hemos trabajado en clase y en casa el análisis morfológico de palabras con los ejercicios 36 y 37 de la página 24 y el 3 de la página 25.

A partir de mañana y sobre todo en enero vamos a empezar con la poesía barroca. Para trabajar debéis tener en el móvil estos cuatro archivos del aula virtual:

  • Antología poética del Barroco (pdf)
  • Recursos literarios en el comentario de texto (pdf)
  • Tarjeta con las figuras retóricas (odt)
  • Principales estrofas (odt)

Además, tenéis que imprimir y recortar las tarjetas con las figuras retóricas. Word debería abrir los archivos odt, pero si os da problemas, os podéis descargar LibreOffice en el ordenador (enlace en el aula virtual) y Collabora en el móvil.

Nextcloud 19 en la Raspberry Pi. Pequeños problemas

Un problema que nunca me había pasado es que al abrir la app de Contactos no aparecía ninguna libreta de dirección, lo que impedía crear contactos o importarlos. Creo que tiene que ver con haber configurado DAVx⁵ en el móvil antes de instalar la app o entrar en ella, pero la solución es fácil, aunque no se puede hacer desde la interfaz web sino desde la línea de comandos.

Para crear una libreta de direcciones y desbloquear Contactos, hay que entrar en la Raspberry por SSH y ejecutar este comando: sudo -u www-data php /var/www/html/nextcloud/occ dav:create-addressbook USUARIO NOMBREDELALIBRETA.

Como siempre, hay que cambiar la ruta a occ si Nextcloud está instalado en un lugar diferente.

Nextcloud 19 en la Raspberry Pi. Avisos de seguridad

Pantalla de configuración de Nextcloud 14

Cuando entramos en la configuración de Nextcloud, nos vamos a encontrar varios avisos de cosas que no están configuradas de la mejor manera posible.  Vamos a ver cómo soluciona rlo.

Límite de memoria de PHP

El primer aviso es «El límite de memoria de PHP está por debajo del valor recomendado de 512 MB». Para solventarlo, tenemos que editar el archivo php.ini con sudo nano /etc/php/7.3/apache2/php.ini.

Buscamos con CTRL+W «memory_limit» y cambimos el valor a 512M. Guardamos los cambios y reiniciamos el servidor con sudo service apache2 restart.

Por cierto, un observador agudo se dará cuenta de que en realidad estamos editando /etc/apache2/sites-available/php.ini, pero creo que es mejor de esta manera.

HSTS

El siguiente aviso nos recuerda que no se ha configurado la cabecera HTTP Strict Transport Security. Esto hace que no se permita ninguna conexión que no sea segura (HTTPS) y hace más difíciles los ataques al sitio. Para configurarlo, podemos editar el archivo de configuración que ha creado Let’s Encrypt:
sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf

Vamos al final del archivo y encima de la línea </VirtualHost> añadimos lo siguiente:

    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    </IfModule>

Aunque podemos limitarnos a reiniciar el servidor, como siempre, con sudo service apache2 restart, no es mala idea reiniciar la Raspberry con sudo reboot.

Nota: la última parte de la línea central (; preload) añade el dominio que hemos configurado con DDNS a una lista que incluyen los grandes navegadores y que obliga a usar HTTPS en estos dominios. Esto significa que si tienes un problema y tienes que volver a empezar, puede ser difícil volver a trabajar con el dominio antes de configurar Let’s Encrypt, porque no tendrás HTTPS y el navegador estará obligado a intentar usarlo. De hecho, esto me ha dado algún quebradero de cabeza la última vez que me he puesto con esto.

Well-known

Los siguientes avisos están relacionados con el calendario y los contactos, se refieren a las llamadas direcciones «well-known» que permiten configurar estos dos elementos en clientes (móviles, por ejemplo) de forma más sencilla.  No he sido capaz de eliminar estos avisos, aunque teóricamente la documentación lo explica, no he conseguido que funcione. Seguiré buscando.

Cache

La memoria caché es un sistema que permite al servidor servir ciertos objetos habituales de manera más rápida. Es fácil configurar una caché de última generación con sudo apt-get install php-redis redis-server.

Comprobamos que ha arrancado con ps ax | grep redis y editamos el archivo de configuración para que Nextcloud use esta cache: sudo nano /var/www/html/nube/config/config.php.

En primer lugar, configuramos la caché de bloqueo de archivos.  Aunque recomiendan otra configuración si Redis y Nextcloud corren en el mismo servidor, a mí nunca me ha funcionado, así que vamos a la otra opción que ofrecen y añadimos en el archivo config.php esto:

    'filelocking.enabled' => true,
    'memcache.locking' => '\OC\Memcache\Redis',
    'redis' => array(
      'host' => 'localhost',
      'port' => 6379,
      'timeout' => 0.0,
      'password' => '', // Optional, if not defined no password will be used.
   ),

Después configuramos la cache distribuida con:

   'memcache.distributed' => '\OC\Memcache\Redis',

Y por último la caché local con

 'memcache.local' => '\OC\Memcache\Redis',

para configurar la caché local, y

'memcache.locking' => '\OC\Memcache\Redis',

para configurar la caché de bloqueo de archivos.

En versiones anteriores de Nextcloud había un último paso: configurar el archivo php.ini para la memoria OPcache. Desconozco si sigue siendo necesario, pero aquí dejo qué había que hacer.

Lanzamos el comando sudo nano /etc/php/7.3/apache2/php.ini. Tenemos que buscar (con CTRL+W) los valores de la izquierda de cada signo igual y cambiarlo a lo siguiente. Ojo: si la línea comienza con un punto y coma (;), también hay que borrarlo.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Y reiniciamos el servidor con sudo service apache2 restart.

Módulos PHP recomendados

Otro aviso que aparece que no están instalados unos módulos de PHP que son recomendables: bcmath, gmp y imagick. Para instalarlos, solo hay que ejecutar sudo apt install php7.3-bcmath php7.3-gmp php-imagick y reiniciar el servidor Apache.

 

Nextcloud 19 en la Raspberry Pi. Usando emojis

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.

 

Soporte de MariaDB

(Haz esto si has seguido mi tutorial)

MariaDB 10.3 o posterior

  1. 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
    
  2. Si has tenido que cambiar la configuración en el punto 1, reinicia tu servidor con sudo service mysql restart.
  3. Cambia el juego de caracteres y la 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;
    
  4. 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"
    
  5. 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
    
  6. Ahora ya puedes usar emojis en los nombres de archivo, eventos de calendario, comentarios, etc.

MariaDB 10.2 o anterior

  1. 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
    
  2. Si has tenido que cambiar la configuración en el punto 1, reinicia tu servidor con sudo service mysql restart.
  3. Comprueba 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.

  1. 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):
  2. 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.

  1. 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;
    

Reemplaza oc_tablename con la tabla que falle. Si hay demasiado (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.

  1. Ahora todo debería estar bien y se pueden seguir las instrucciones para MariaDB 10.3 a partir del paso 2.

En MySQL

(No hagas esto directamente si estás siguiendo mi tutorial)

  1. Actualiza tu servidor Nextcloud a la versión 11 o posterior. Con el tutorial, deberíamos estar en la versión 19.

  2. 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
  1. Si has tenido que cambiar la configuración en el punto 1, reinicia tu servidor con sudo service mysql restart.
  1. Cambia el juego de caracteres y la 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;
    
  2. 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"
    
  3. 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.

Nextcloud 19 la Raspberry Pi. 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.3. Lo hacemos escribiendo en el terminal:

sudo nano /etc/php/7.3/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 el apartado “Sistema” (información del servidor).

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 editar el sitio creado en la configuración de Apache por Let’s Encrypt:
sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf
Tenemos que copiar con la combinación de teclas MAYS+Ins el siguiente código (extraído, de nuevo, del manual), por ejemplo, al final del archivo, antes de la Línea </Directory>:

Alias /nextcloud "/var/www/html/nextcloud/"

<Directory /var/www/html/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/html/nextcloud
 SetEnv HTTP_HOME /var/www/html/nextcloud

</Directory>

Y hay que cambiar el directorio todas las veces que aparece, en lugar de /var/www/nextcloud/, si lo hemos cambiado: 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 diferrente, deberá ser /var/www/html/LOQUESEA, 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 lel /nextcloud de la primera línea a una barra / si tenemos Nextcloud instalado en la raíz.

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:

Nextcloud 19 en la Raspberry Pi. 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.

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 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.

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-19.0.0.zip

La numeración irá cambiando según salgan versiones más modernas, claro. Hace falta usar sudo porque la carpeta es propiedad del administrador. Tras descargarse, tenemos un archivo comprimido en zip. Para descomprimirlo, debemos hacer lo siguiente:

sudo unzip nextcloud-19.0.0.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 Raspberry Pi OS, ‘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:

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’.

Por cierto, recomendable desmarcar la casilla que pone «Instalar las aplicaciones recomendadas». Más adelante podremos escoger nosotros con total libertad, y Talk, a fecha de hoy, no funciona en la Raspberry.

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 podemos pasar con la flecha):

En esta pantalla tenemos un acceso directo a la tienda de aplicaciones. Esto lo veremos en una entrada posterior del tutorial. Más importante ahora es esta otra:

No la pases. 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.

Finalmente, podemos pulsar el botón «Empieza a usar Nextcloud» y veremos la interfaz de Archivos:

Nextclooud Archivos, versión 19Veremos 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.

Nextcloud 19 en la Raspberry Pi. Acceso seguro: 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:

  1. Instalamos el paquete python-certbot-apache, que instala todo lo necesario:
    sudo apt-get install python-certbot-apache
  2. 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:
Error de dominio en Nextcloud 14

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 a continuación una línea en la que escribimos     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.

Inicio de Nextcloud 14 con HTTPS

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, y al final nos debe dar este resultado, que no está mal.

 

Hasta hace un par de meses, daba una A, un resultado mejor, pero lo an rebajado para animar a dejar de utilizar TLS 1.0 y TLS 1.1, versiones anticuadas que pueden ser peligrosas. Para quitar este peligro (que es muy pequeño, en realidad) podemos desactivar estos dos protocolos.

Para ello editamos un archivo de configuración con del servidor web con sudo nano /etc/letsencrypt/options-ssl-apache.conf. Buscamos la línea «SSL Protocol» y añadimos después de  all -SSLv2 -SSLv3 dos elementos más: -TLSv1 -TLSv1.1

Con esto ya quedan desactivados y el resultado del test pasa a ser una A. Sencillo, ¿verdad? En próximas entradas veremos cómo mejorar y ajustar nuestra nube, ya con un servidor más seguro.

 

Cargar más